文献标识码:B
文章编号: 0258-7998(2011)11-0099-03
因通信基站、机房等内部设备运行的需求,基站和机房内须保持一定温湿度及洁净度,为了达到以上标准,基站、机房内的空调系统必须长年连续运转,因此为数众多的基站、机房内的空调产生了较大的能耗,造成了通信基站、机房较高的运营成本,迫切需要一种有效的空调节能系统。针对这种情况,文中设计了一种以AVR单片机ATmega128为核心控制单元的智能控制系统。智能控制系统主要根据室内、外的环境量及空调运行状态分析,通过完善、严格的逻辑控制程序实现对节能窗、空调的控制,以实现室内温湿度保持在设定范围之内,达到通风、节能的目的。同时对于尚未安装空调或空调无法正常工作的基站、机房,该系统也可起抑制高温的作用。
1智能节能窗系统结构及控制原理
1.1 系统结构
智能节能窗系统是由智能控制器、节能窗、空调、监控中心、传感器、红外收发模块和人机交互界面等组成,系统结构图如图1所示。
1.2 系统控制原理
智能节能窗的“控制器”通过实时环境监测量来实现控制节能,当环境监测量低于某个设定值时,控制器会依据内部优化的数学模型开启节能窗引进室外新风,关闭机房空调达到节能效果。在确保机房环境量控制合理的前提下“控制器”依据环境监测量控制百叶窗、空调运行。在无法引进室外新风时段,节能系统可以依环境监测量,控制空调运行,使基站或机房的环境保持在合适的状态下。
2 硬件电路设计和关键模块分析
系统硬件结构框图如图2所示,核心控制单元选择了ATMEL公司的ATmega128,充分利用了其高性能、低功耗、可靠性高等特点,ATmega128具有53个I/O脚,内载128 KB的Flash、4 KB的EEPROM以及通用异步收发器等其他全方位功能,非常适合该系统多模块控制、大容量数据存储和远程监控等功能的要求。
2.1环境监测模块
环境监测模块的基本原理是通过温度传感器、温湿度传感器、节能窗状态监测器、空调状态监测器等环境监测设备将所获取的数据信息传到采集器,然后控制系统依据所获数据信息发出相应控制、操作指令,达到通风、节能、告警等系列功能。
温度传感器选择的是TI公司的DS18B20,温湿度传感器选用DHT21,它们均是单总线传感器芯片,可以直接将被测的温度、湿度转换为串行数字信号送到单片机。DS18B20连接到ATmega128的PB1口上;DHT21连接到ATmega128的PB2口上,如图3所示。
节能窗由内窗、外窗、过滤网及控制机械组成,如图4所示,通过直流电机和继电器进行控制。节能窗开闭状态通过行程开关给出的高低电平信号结合节能窗本身的机械结构来确定。
2.2 空调控制模块
空调控制系统由控制单元和状态监测单元构成。根据基站空调类型,空调控制系统有四种设计模式,如表1所示。
2.4 通信模块
智能控制系统采用MODBUS标准通信协议,通过RS485接口与上位机通信,组建监控系统网络,并依照回馈数据下达控制指令;同时把系统的各种信息传送到人机操作界面。
PC机上的串口是具有RS-232C电平的接口,而单片机上的串口是TTL电平的,为了在PC机和单片机之间利用RS-485总线进行串行数据传输,需要将PC端和单片机端的电平均转换为RS-485电平,TTL和RS-485之间的电平转换芯片有MAX485等。图7是PC机和ATmega128通信时的连接示意图。
学习子程序:学习程序的功能是对红外遥控编码的学习,即对高低脉冲宽度的测量。当然不能毫无误差地复制出被测的红外编码,当中一定会存在一定误差。不过,由于所有的红外设备在接收端都允许一定的误差,只要保证在误差范围内都可以对红外设备进行控制。学习程序的主要思路是通过边沿触发中断来控制定时器的开和关,从而测出高低脉冲宽度。ATmega128单片机的外部中断0、1口的中断方式分别设置为下降沿和上升沿触发中断。当没有接收到红外信号时,外部中断0、1口都为高,此时程序等待红外信号的到来。当红外信号到达时,下降沿触发中断,学习程序跳到下降沿中断服务程序。在中断服务程序里,停止定时器3,保存它寄存器的值并清零,最后启动定时器1,这样开始测量低电平。当高电平到来时,上升沿触发中断,程序跳到上升沿中断服务程序里,此时停止定时器1,保存它寄存器的值并清零,最后启动定时器3,高电平开始测量。当下一个低电平到来时,程序又跳到下降沿中断服务程序,重复上面的工作。这样,高低电平的测量就在两个边沿触发中断服务程序里面来回跳转。最后一次跳入边沿触发中断服务程序时,一旦产生定时器溢出,则程序跳入定时器溢出中断服务程序,只要设定一个标志位,让程序跳回主程序即可。到此,红外编码学习完毕,只需把学习到的编码宽度值存入EEPROM即可。
发射子程序:发射程序是把已经学习到的红外编码发射出去控制红外设备。当然首先要根据所按下键来找到EEPROM相应的红外编码。这里要注意的是通过红外接收芯片接收到的红外编码经过一个反相器,所以发射时要把原来的高低电平翻转一下。红外发射程序的思想是通过两个定时器的配合来调制出38 kHz的红外信号。定时器0产生38 kHz的载波信号,用已经学习到的低电平宽度来确定定时器0的定时长度。当发送低电平时,启动定时器0;发送高电平时,停止定时器0。如此就能发送一个与接收到的红外编码反相并且高电平是经过38 kHz载波调制过的红外遥控信号,这个信号就是普通遥控器发送出去用来控制红外设备的信号。
3.2 人机交互模块
该模块硬件由LCD与按键组成,实现参数设定、数据查阅和显示等功能,所以人机交换界面非常适合用多级菜单模式来实现。多级菜单采用结构体链表作为基本架构:
struct MenuItem
{
int MenuCount;
char *DisplayString;
void (*Subs)();
struct MenuItem *ChildrenMenus;
struct MenuItem *ParentMenus;
} Null;
其中, MenuCount:当前层节点数,即每层菜单最多能显示的条目数,可以确定移动上界,方便实现菜单的滚动; *DisplayString:指向菜单标题的字符串,指向当选中该级菜单后所要显示的字符串;(*Subs)():指向当前状态应该执行功能函数的指针;MenuItem *ChildrenMenus:指向当前菜单的下级菜单;MenuItem *ParentMenus:指向当前菜单的上级菜单。使用这样的结构,可以很方便地通过修改单独的菜单项来更新菜单,不用在主程序中修改任何东西,扩展方便,节约资源。
按键函数则采用状态机来编写,这样不必延时等待键盘稳定,还可实现连发功能,提高了CPU的利用率,并且可以多任务“并行执行”,加快了系统的响应速度。图9是具有连发功能的按键状态机转换图。图中, “1”表示按键处于开放状态,“0”表示按键处于闭合状态。而系统的输出信号则表示检测和确认到一次按键的闭合操作,用“1”表示。将一次按键完整的操作分解为4个状态。其中,状态0为按键的初始状态,当按键输入为“1”时,表示按键处于开放,输出“0”(1/0),下一状态仍为状态0;当按键输入为“0”时,表示按键闭合,但输出还是“0”(没有经过消抖,不能确认按键真正按下),下一状态进入状态1。状态1为按键闭合确认状态,它表示在10 ms前按键为闭合的,因此当再次检测到按键输入为“0”时,可以确认按键被按下了(经过10 ms的消抖);输出“1”则表示确认按键闭合(0/1),下一状态进入状态2;当按键按下后1 s内释放了,系统输出为1;当按键按下后1 s没有释放,则以后每隔0.5 s,输出为2,直到按键释放为止。如果系统输出1,应用程序将变量加1;如果系统输出2,应用程序将变量加10。这样按键驱动就有了处理连发按键的功能了。
智能节能窗系统可以很好地减少空调运行时间、降低能耗,节约通信基站、机房的运营成本。同时系统中的红外学习功能和远近协同监控模式也提高了系统的通用性和可靠性。目前该产品已进入市场推广阶段。
参考文献
[1] 江海波,王卓然,耿德根.深入浅出AVR单片机[M].北京:中国电力出版社,2008.
[2] 陈天水,秦文,胡天友.基于mega128单片机的学习型红外遥控器设计[J].微型机与应用,2011,30(8):26-27.
[3] 耿德根,马潮.AVR高速嵌入式单片机原理与应用[M]. 北京:北京航空航天大学出版社,2002.