摘 要 介绍了一种基于AT89S52的太阳能环境参数测试仪,详细阐明了环境参数测试仪的软硬件设计与实现方法。该测试仪能对温度、湿度和照度进行实时测量显示,并通过工业总线将采集数据传送至远端上位机。
关键词 AT89S52 太阳能 环境参数 Rs485 TSL2561 SHTll
引 言
为了确保太阳能发电系统能够正常的工作,需要对太阳能发电系统的各项环境参数进行测量,从而有效地控制其运行。本文介绍了一种基于单片机的太阳能参数测试仪,提供了3种参数的测量功能和通信接口,以及2种供电方式,既可作为手持设备使用,又能安装在发电系统中,具有较高的实用价值。
1 硬件电路设计
1.1 总体结构
该测试仪以AT89S52单片机为核心,外接温湿度传感器SHTll、照度传感器TSL2561、四位共阴数码管、RS485总线通信接口以及显示切换按键。单片机上电工作后,对当前温度、湿度、光强度进行实时测量,通过按键切换将测得的3种参数通过LED数码管进行轮流显示;此外,还可以通过RS485总线与PC机进行通信,将参数值传送到上位机,以达到远程监测的目的。该测试仪的结构框图如图1所示。
1.2 测量模块
温度和湿度测量采用的是瑞士Sensirion公司生产的SHTll传感器。该传感器采用独特的CMOsens TM技术,将温湿度传感器、信号放大处理、A/D转换、I2C总线全部集成在一块芯片上,可直接与单片机接口。该芯片采用数字式输出,为编程提供了方便。
光照度测量选用的是TAOS公司生产的TSL2561光强度传感器。它具有数字式输出端口和标准I2C总线接口,涵盖1~70 000 lx的宽照度范围,非常适合户外环境下光照强度的测量,适用于太阳能发电系统。图2为传感器与AT89S52单片机的接口电路设计。
1.3 电源模块
电源模块提供了2种供电方式:
①当测试仪作为手持设备使用时,可直接使用3.6V锂电池,经过DC—DC电压转换芯片MAX756将电压升至5 V后为单片机和外设供电。
②当测试仪作为固定设备安装在太阳能发电现场时,可以采用太阳能供电。太阳能电池产生的12 V电压通过稳压芯片LM7805后,得到稳定的5 V电压输出,输出电压既可以为测试模块供电还可以通过充电电路为锂电池充电。图3是电源模块的硬件原理图。
1.4 充电电路
充电电路的核心器件采用的是上海如韵公司生产的专用充电芯片CN3058,它可以对单节磷酸铁锂可充电电池进行恒流/恒压充电。该器件内部集成有功率晶体管,使用时不需要设计外围电流检测和保护电路,适用于便携式的应用领域。
图4为锂电池充电电路。其中LEDl和LED2分别作为充电中和充电饱和两种状态的指示灯,R1在充电时起限流保护的作用;电容C1和C2采用的是多层陶瓷电容器(MLCC),能保证充电电路稳定工作。
1.5 通信模块
测试仪通过RS485工业总线与PC机进行通信,其硬件接口电路如图5所示。
2 软件设计
2.1 总体设计
测试仪的软件开发环境采用的是Keil C,所有代码采用C语言编写。为了方便程序调试和提高可靠性,软件采用模块化结构设计,主要由初始化程序、主程序、子程序、中断服务程序等组成。单片机上电后即开始循环执行温湿度、照度测量程序,并以设定的时间间隔在数码管上轮流动态显示;按键切换和通信功能部分由于使用频率相对较低,为降低设备功耗,其程序以中断响应的方式执行。在此要注意中断优先级的设置:按键中断优先级应高于串口中断,否则将无法进行显示切换。主程序流程如图6所示。
2.2 传感器驱动程序
本系统采用的传感器均为集成数字芯片且都具有I2C总线接口,故其驱动程序的编写要严格遵循I2C总线的时序。主程序为每一个参数开辟了一个8位的存储空间,传感器将采集到的数据经SDA引脚串行输出,驱动程序将SDA线上输出的数据进行串并转换,并存储到相应空间中,以方便其他功能程序调用。以下是照度传感器数据采集程序的部分代码。
(1)TSL2561初始化
2.3 RS485通信程序
测试仪与上位机的通信采用RS485协议。串口参数为:波特率9600,数据位8位,1个校验位,1个停止位。其数据格式如图7所示。
由于RS485总线协议与RS232串口协议只是接口电平上有区别,其软件编程完全按照串口通信协议进行,此处不再详述。
结 语
经实验测试,该环境参数测试仪温度测量显示精度可以达到0.1℃,湿度精确到O.1%,照度可以精确到11x。由于主要器件均为I2C数字接口,故本测试仪还有结构简单、易维护、可扩展性强等特点,具有很高的实用价值;另外,独特的双电源供电方式更扩展了它的适用范围。
(转载)