基于ZigBee的光伏照明控制系统设计
扫描二维码
随时随地手机看文章
摘要:设计一种基于ZigBee无线网络的光伏照明控制系统,给出系统的网络拓扑结构和节点的硬件设计方案,以及软件结构设计。该系统采用CC2430实现无线数据传输,采用CC2591功率放大器提高发射功率,传输距离远,可靠性高,有效地克服了传统照明控制方式落后和布线复杂等缺点。
引言
光伏发电作为利用太阳能的主要方式,已经得到广泛的应用。光伏照明是一种独立的光伏发电系统,主要用于城市和建筑物照明系统的建设和改造。目前,照明控制系统中多采用有线网络方式,维护起来比较复杂,如何简化施工、降低成本并实现远距离控制是一个值得探讨的问题。本文介绍了一种利用ZigBee无线传感器网络技术实现光伏照明系统远程监控的方案,并给出了详细的软硬件设计。
1 光伏照明控制系统组成及工作原理
光伏照明控制系统由光伏发电系统、无线通信系统和监控计算机3个部分组成。
光伏发电系统由建筑顶部的太阳能电池板、铅酸蓄电池组和光伏充电机构成。太阳能电池是照明系统的输入电源,为照明系统提供照明和控制所需电能。白天,在光照充足的条件下将所接收的光能转换为电能,经光伏充电机对蓄电池组充电;夜晚,蓄电池组将储存的电能经光伏充电机切换输出到路灯负载。当光伏充电机对蓄电池组进行充电时,为延长蓄电池寿命,必须避免蓄电池处于过充电或者过放电的状态。因此,需要对光伏充电机充电电流、电压和发电量等数据进行实时监控和保存,还要求能对路灯进行独立的开关控制。
由于本系统中太阳能电池板位于图书馆顶部,监控计算机处于相隔200 m的另外一个建筑物中,中间相隔了水池,如果采用有线通信方式则需要重新进行布线,施工复杂且成本较高,因此,采用无线通信网络。无线通信方式不仅简单灵活,无需考虑布线问题,还可以通过和其他总线通信方式的结合,实现远距离数据传输和路灯控制。采用ZigBee无线传感器网络技术可实现对充电机状态数据的传输;同时,监控计算机可以通过无线网络控制路灯的开关状态,实现了对充电机状态的实时监控和灯光控制效果。控制范围在300 m以内,如果增加路由器,还可扩展到更远的范围。
ZigBee是一种短距离、低速率、低功耗、低成本和低复杂度的无线传输技术,非常适合于低功耗和低数据量的短距离无线传输。ZigBee的低功耗特点限制了节点之间的通信距离(一般为70 m)。本系统中,节点之间的距离超过了其正常通信距离。有2种解决办法:一种是通过增加路由器节点来扩大覆盖范围,缺点是增加硬件成本;另一种是利用PA(Power Amplification,功率放大)提高发射功率,该方法较为简单且成本较低。本设计中采用后者来扩大网络覆盖范围。
ZigBee设备可分为全功能设备(FFD)和精简功能设备(RFD)。FFD可以与RFD或者FFD通信,而RFD只能和FFD通信;FFD可作为网络协调器、路由器或终端设备,RFD只能作为终端设备。本系统中网络协调器和监控计算机通过RS485总线相连,负责建立、管理和维护网络,控制其他节点接收数据等功能。路由器通过RS485总线和光伏充电机相连,实现对其数据的采集和控制,终端节点接收监控计算机的命令控制路灯电源的开关。ZigBee网络拓扑结构支持星形(Star)、树形(Clustetree)和网状(Mesh)。为简化设计,无线网络采用树形网络拓扑,系统组成如图1所示。
监控计算机负责光伏数据采集和系统管理,通过RS485总线和安装在户外的网络协调器进行通信。光伏充电机数据通过RS485总线传送到路由器节点,再由协调器转发到监控计算机。路由器还起到延长ZigBee网络传输距离的作用。监控计算机通过网络协调器发送命令给路由器,实现对充电机电源开关的切换控制。路灯供电线缆通电后,终端节点加入ZigBee网络。网络协调器对终端节点进行检查,并将节点状态传输给监控计算机。监控计算机通过网络协调器发送命令给各个终端节点,控制各个节点路灯电源开关导通或者断开,从而实现路灯的单独或者分段照明控制。当需要实现景观灯效果时,可通过监控软件设计向各个终端节点发送相应的控制命令。
2 硬件节点设计
考虑到无线通信系统中各个节点的功能不完全相同,为了方便硬件设计和降低成本,对硬件部分进行了模块化处理。节点的核心部分为ZigBee通信模块,设计成只负责RF收发,其他部分由路灯开关模块、电源和RS485通信模块等构成。无线通信模块采用支持ZigBee协议的超低功耗SoC芯片CC2430。该芯片集成ZigBee射频RF前端、内存和微控制器,具有8位增强型8051 MCU、128KB可编程闪存和8 KB的RAM,另外还包含A/D转换器、定时器、AESl28协处理器、看门狗定时器、休眠模式定时器、上电复位电路、掉电检测电路以及21个可编程I/O引脚。TI公司提供免费的ZigBee协议栈,可以方便地完成系统的硬件和软件设计。
2.1 ZigBee通信模块硬件设计
图2为ZigBee通信模块原理图。经过现场试验发现,由于网络协调器和其他节点之间距离较远,只采用CC2430时网络数据传输不稳定。为延长无线通信模块的通信距离,又采用了TI公司的高性能射频前端CC2591。CC2591可提供22 dBm的输出功率,能够与CC2430无缝连接,射频输入/输出之间不需要增加额外的匹配网络。简单起见,图中没有给出电源和退耦电路、GPIO、JTAG等部分,空余引脚通过排座引出以便与其他模块连接。
CC2591的HGM引脚为增益控制,当它为高电平时处于高增益模式;EN和PAEN为高电平时CC2591工作在正常模式,为低电平时进入低功耗模式。R1、R2为偏置电阻,为晶体振荡器提供合适的工作电流。天线采用50 Ω鞭状天线。由于ZigBee模块工作在2.4 GHz频段,对PCB设计要求很高,PCB板材、元件封装、布局和布线必须参照TI公司的参考设计。特别是天线阻抗匹配部分,在布线中应直接采用TI公司提供的GERBER文件,复制其PCB布线方式才能保证CC2591的高性能和稳定性。另外,PCB的电源退耦和地线处理也非常重要,退耦电容应尽可能接近电源引脚,PCB空余的部分需进行覆铜接地处理,在顶层和底层覆铜之间按照一定的间隔用过孔相连。
2.2 协调器和路由器硬件设计
由于协调器和路由器都需要通过RS485总线和其他设备进行远距离通信,因此需要设计RS485通信模块与ZigBee通信模块相连。通信模块采用MAX485和光耦实现,MAX485通过CC2430的PO.5脚完成RS485收发控制。CC2430电源采用LTlll7-3.3等芯片供电。在ZigBee协议中,网络协调器负责建立网络和实现路由控制等功能,因此必须保持工作状态,保证数据采集的可靠性和稳定性。本系统中,网络协调器和路由器正常工作时采用外部交流电源供电。当外部交流电源掉电时,通过微处理器监控芯片ADM690实现电源切换,利用电池组对其供电,以保证网络的稳定工作。ADM690具有低功耗、低导通电阻和大电流输出等特性,非常适合实现微处理器的电池后备功能。该电路设计如图3所示。其中,R1为充电限流电阻,在外部电源正常时可以对电池涓流充电。
2.3 终端节点硬件设计
终端节点的功能是接收协调器发送的指令控制路灯开关。其电源是在监控计算机发送命令到光伏充电机对路灯供电线缆供电之后提供,因此硬件部分不需要电池后备功能、光伏照明系统中供电电压为直流220 V,终端节点电源部分采用DC-DC开关电源产生5 V直流供电,路灯开关控制则通过CC2430的GPIO和三极管控制继电器实现。由于CC2430只有引脚P1.O和P1.1具有20 mA的驱动能力,而其他引脚最大驱动电流为4 mA,所以使用SN74HC04D作为输出缓冲。其原理图如图4所示。
3 系统软件设计
系统软件主要包括ZigBee协调器节点程序、路由器节点程序、终端节点程序和监控计算机程序。监控计算机程序实现对光伏照明系统的监控和数据处理,LED路灯通断控制,以及与之相连的另外一套光伏发电系统和环境监测系统的数据采集和监控。监控计算机与协调器节点通信通过二进制编码的方式进行通信,每隔5 s发送1次采集命令。其数据包格式如下:
其中,数据包包头(HEADER)占2字节,可设置为0x81、Ox82,用于区分是计算机数据包输出还是数据包输入;数据长度(LENGTH)为1字节;命令类型包括充电机数据采集、路灯开关状态采集、环境参数采集等;数据字节数由LENGTH指定;数据CRC校验占1字节。
ZigBee节点程序是在TI公司提供的ZStack-1.4.3-1.2.1协议栈的基础上编写的,可以实现网络建立、节点加入和退出、数据传输等功能。该协议栈将应用层和堆栈层进行了分离,提供了类似于操作系统的运行机制(OSAL)(主要包括任务的注册、初始化、启动,任务间的消息交换,任务同步,中断处理,以及时间管理和内存分配等),具有很好的可移植性。
节点程序流程如图5所示。当对硬件和协议栈各层初始化后,采用有限状态机以事件轮询方式对事件进行处理。如果同时有几个事件发生,则判断事件优先级后逐次处理。该协议栈提供了丰富的API函数供用户调用,这种软件构架可方便地构造用户应用程序。由于对终端节点的供电是由光伏充电机根据监控计算机的命令来控制,因此在正常情况下终端节点每天都会加人和退出网络。
ZigBee节点之间的通信有两种寻址方式,分别通过固定的64位IEEE地址和16位网络地址来寻找网络设备。当节点加入ZigBee网络时,它可以通过协调器随机获取唯一的l6位网络地址。光伏照明系统要求能按照路灯的编号任意控制其点亮或者关闭,而要与特定节点通信必须采用IEEE地址,故利用TI公司提供的SmartRF软件对ZigBee节点的64位IEEE地址进行人工分配。协调器向终端节点传送数据使用AF_DataReqt-lest()函数实现,该函数需要节点的网络地址作为参数,通过IEEE地址获取16位网络地址的功能由NLME_GetShortAddr()函数实现。程序设计中,在应用层添加用户所需要的任务,对接收到的事件进行处理。节点在启动时需完成以下工作:初始化CC2430和协议栈;帮助协调器节点建立ZigBee网络,设置网络PAN ID,等待其他节点加入网络;对监控计算机传送的命令进行解析和转发;读取路由器和各个终端节点发送的状态数据,并转发给监控计算机处理。
配置ZigBee设备对象(ZD0)端点时,网内的所有节点其端点ID和端点描述符必须相同,否则节点之间不能进行通信。图5的程序流程主要是针对用户事件处理(包括串口事件、数据传送事件、定时器事件等),路由器和终端节点的程序设计流程类似,分别在用户事件中根据协调器发送的命令类型完成充电机状态数据采集、回传,以及路灯开关控制。
结语
将ZigBee无线网络用于光伏照明系统控制,具有通信距离远、成本低,维护方便等优点,控制路灯总数可达64盏,覆盖范围大于300 m,并可以进一步扩展。该系统已经成功应用于建设部太阳能建筑应用示范工程,且通过建设部验收。