第三章:硬件单元电路
经过上述分析明确了本次设计的主要目标,为了实现晾衣自身能够完成对外界数据的采集与分析,集成控制环节我们采用了ATMEL公司生产的AT89C52单片机,与市面上的其他嵌入式控制单元相比较在体积与功耗方面都相当出色。此次设计主要突破在于设计合理的控制电路单元,同时结合采用的主控编写高质量的源码并使系统在实际与应用中能够发挥出色的稳定性和参考价值。本次将围绕主控单元设计合理的电路,结合SHT11温湿度采集单元、感光原件单元、LCD显示单元、模式控制单元使晾衣架能够得到外界的实时数据并作出相应的调整。在设定合适的温湿度及感光度的条件下能够自动控制电机驱动滑杆实现自动量晒与回收衣物,结合光线角度进行上下左右调整。主要框架如下图所示:
3.1主控单元设计
为了使智能晾衣架在使用时满足嵌入式系统功耗、抗干扰、适用空间等要求,设计之初除了上述因素也考虑到成本因素。通过比较我们选择了51系列中的AT89C52芯片作为主控制单元。无论是功耗还是处理速度上都有着不错的表现,与CONTEX-M3系列单片机相比较处理上稍微慢点,但本次设计对分时处理的要求不是特别高,同时52系列具有简单高效的指令集和,大大减少设计难度,结合SHT11与ADC0804精准的完成数采集与电机控制。
我们常见的主控封装形式有40脚的DIP直插的也有PQFP类型的贴片封装,在proteus中仿真的时候选择DIP类型,方便自主设计与搭建外围电路单元。从产品角度和制版工艺上面来讲贴片能够节省空间。这次采用的主控制芯片是8位CMOS工艺的单片机,内部有八位CPU和FlASH,在工控领域有着广泛的用途,脱机运行性能稳定,相比较51有着更大的存储和定时器资源,其主要内部参数与引脚分布见下图:
指令集和 | 兼容MCS-51产品 |
FLASH | 8个字节重复擦写 |
擦写周期 | 1000次重复擦写 |
静态操作 | 0HZ –- 24MHZ |
编程I/O | 32个可编程I/O |
功耗模式 | 低功耗和掉电模式 |
中断源个数 | 8个中断控制单元 |
定时器个数 | 3个16位定时/计数器 |
表:3.1.1主要参数
图:3.1.2双列直插型 图:3.1.3 PLCC贴片型
由上图可以直接看到引脚标识与编号,左下角的GND与右上角的VCC需要外接合适的工作电压,一般采用5V工作电压。两侧的P0-P3 I/O口是可编程输入输出管脚,一组有四个,一共32个,可以看到I/O资源挺丰富且适合驱动多种外设。最小控制单元自工作的时候需要外部晶振提供合适的工作频率同时为了防止程序跑飞或者陷入死循环还要提供合理的复位单元。通俗点好比人要正常工作的需要心脏提供合适的脉搏跳动,这里我们选的是11.529MHZ的外部无源晶振,在外围接上两个22PF的非极性滤波电容连接到18、19管脚,为最小系统提供合适的工作频率。复位环节通过分压电阻与按键开关为9管脚提供复位信号,10uf的极性电容较减少按动过程中的抖动信号,发送有效地高电平信号可以让单片机重新加载程序,从头开始跑。此次仿真过程中由于I/O分配的原因采用了两片主控,另外需要注意的是P3口除了通用的管脚功能外,还有拓展的第二功能,配置其引脚功能能够实现定时/计数功能以及外部中断资源,在实际设计过程中有着非常多的用途。下面是最小控制单元的原理图以及P3管脚工能分布图:,
图:3.1.3最小系统 图:3.1.4 P3口复用
3.2LCD液晶显示
主控单元在上电之后会对液晶屏幕进行初始化,直观的显示出各项参数,结合独立按键显示控制模式,给用户提供良好的人机交互。常见的显示屏幕有很多尺寸,市面上的电容、电阻屏也数不胜数,这里我们选用户LCD1602作为液晶显示,同样的考虑到功耗与显示区间等因素。1602有着八个数据端口,体积很小亮度饱和能够直观简单的显示ASCII码与字符,与单片机的接口连接简单,控制屏幕上的液晶分子显示出字符,不同的电压控制不同区域
上下两行能够分别显示16个字符,不具备汉字现实的能力,这点上不如12864,但完成设计的时候能够带来更稳定的显示,较强的抗干扰能力。实际硬件分为有无背光源,带背光的厚度稍微大点,会有更好的显示效果且调节背光源之间的滑变能够显示效果。常用的有16个管脚,分为电源区、指令控制区、数据区、背光区。实际外观尺寸见下图:
图:3.2.1 LDC液晶尺寸图
可以看到上图中有两行显示区域,左上角有1-16个外围引脚可以用,用来驱动屏幕显示想要的数据与字符,先简单说下管脚分布和功能:1管脚与2管脚用来接工作电源;3管脚通过VCC与分压电阻控制屏幕的对比度且会随着电压的变化而增加减少,对比度过高会出现阴影不清晰等现象,因此需要条调节合适的对比度以满足正常显示,可以外接10K电阻进行调整;4管脚RS控制端用来告诉模块当前是发送/读写数据还是指令,在实际现实过程中参与控制时序,高的电平信号控制数据控制寄存器、低电平信号控制指令寄存器;5管脚为W/R读写控制端,与4管脚结合起来可以实现数据/命令&读/写功能;6管脚作为EN使能控制端用来控制液晶的工作状态;7管脚到14管脚为数据线,用来读写数据;15与16管脚控制背光,根据实际情况考虑是否需要接入电路中。
对控制端口有一定的了解后,还需要掌握读写时序图从而根据时序去设计软件驱动,这里以写数据时序图为例子说下原理过程:
图3.2.2 写数据时序
上图中RS决定当前是要启用命令寄存器还是数据寄存器,写数据的过程中RS要保持高电平信号,写命令的过程要保持低电平信号。当往液晶上写字符的时候,首先要将RS拉低,R/W保持低电频信号,随后有个上升沿将RS拉成高电位,也就是上图RS对应的第二条信号线。图中tsp_x、tR、tHD_x等间距在设计过程中都可以采用延时实现时序同步。我们可以看到valid data是有效地数据段,只有当RS = 1、R/W = 0、DB0-DB7发送数据、EN使能等状态都满足的时候才能实现数据从I/O写入到液晶。这种时序图在液晶操作与与不同工控领域的传感器数据采集中经常会用到,因此软件设计过程中要严格遵守时序从而获得准确有效地数据值。关于读写命令及读写数据的操作时序就不一一说明了,在下表中根据逻辑时序已经归出控制区域I/O的工作状态,方便开发使用。
读状态 | 输入 | RS=L,R/W=H,E=H | 输出 | D0—D7=状态字 |
写指令 | 输入 | RS=L,R/W=L,D0—D7=指令码,E=高脉冲 | 输出 | 无 |
读数据 | 输入 | RS=H,R/W=H,E=H | 输出 | D0—D7=数据 |
写数据 | 输入 | RS=H,R/W=L,D0—D7=数据,E=高脉冲 | 输出 | 无 |
表:3.2.3 控制时序
上面也有提到16个显示区域,它们也是有对应的基带地址,要在固定的地址上显示字符就需要发送对应的地址指令,第一行地址起始地址为0x00,第二行起始地址为0x40,后续的地址参考图3.2.3。设计时如果没有用到屏幕滚动的话可以不考虑虚拟地址。也就是说从0x10以后到0x27以及0x50到0x67需要开启其滚动显示才能显示出该地址空间上的数据。
关于常见的操作指令可以参考手册中的指令集部分,
图3.2.3地址映射
3.3SHT11温湿度
对于外界环境的一些非线性参数,需要使用传感器将时变环境参数转换成时变模拟信号,经过预处理后由单片机把模拟信号转化成能够识别的数字信号。对于外界环境的温湿度参数获常用到的测量原件有DHT_x系列与SHT_x系列等测量原件。DHT11在控制领域有着广泛的应用,此外对于高精度的测量仪器仪表设备中SHT11也有着广泛的应用。这两款芯片本质上的区别在于内部采样部分,DHT11的核心部件采用的是湿敏电阻原件,准确度与稳定性相对来讲比较差;SHT11内部采用的湿敏电容元器件,抗扰能力强,准确度高,当然成本上会比DHT11高点,这里设计的时候我们选用SHT11电容性原件进行采样与分析处理。另外一点SHT11的接口上与DHT11也有些许差异,同门内部通信需要遵守各自的协议。详细的管脚图及与控制元件的接线见图3.3.1。
图:3.3.1 SHT11使用原理图
上述原件预留了四个I/O接口,实际上该芯片有8个管脚且NC全部都接空,除了电源接口提供0-5V的工作电压之外还有串行数据通信接口SCK与DATA。我们采样的数据就需要通过IIC协议传送到8位单片机上,为了避免传送过程中带来的干扰需要在VDD与GND之间加上去耦滤波电容。
在采集数据周期内同样要遵守采样时序电路,前面已经以1602写数据为例说明。此外需要知道在启动传感器后如何发送指令集选择自己要得到数据,启动传输时序缓释通过SCK、DATA数据端口控制。SCK由高电频到低电频再到高电平的反转过程中农DATA同时出现高变低再变高的过程,下图为启动时序图:
图:3.3.2SHT11启动时序