基于PTR2000的无线气象信息采集系统设计
2015年11月24日 14:42 发布者:designapp
摘要:本文介绍了一种基于PTR2000的无线气象信息采集系统的硬件和软件设计,该系统可以实现温度、湿度、气压等气象数据的采集和传输。气象数据采集系统由单片机ATmega16、温度传感器DS18B20、湿度传感器HS1101和气压传感器MPX4105构成,实现温度、湿度、气压等基本气象参数的测量。采集的气象数据通过无线收发模块PTR2000上传给上位机进行存储和相应处理。数据采集端由太阳能电源系统供电,可以满足长期测量需要。引言
随着经济社会的发展,工农业生产对气象信息的需求日益加大。农业农情灌溉气象环境指标监测、森林火险气象指标监测、各种突发性灾害性天气的快速响应和现场监控均需要对气象信息进行实时采集和分析。本系统采用DS18B20、HS1101等高精度传感器,低功耗单片机ATmega16,数字无线收发芯片NRF401;数据采集端配备光伏电源系统供电。通过数据采集、传送与处理实现周围环境温度、湿度、气压等气象要素的全天候监测;系统工作方式灵活,通过128×64液晶显示器可实现现场所测数据的显示,也可以采用无线通信的方式将数据传送至计算机进行存储和处理。
1 系统工作原理
气象信息监测系统由下位机数据采集和上位机数据管理两部分构成。下位机数据采集系统主要由三部分构成,如图1所示。其中,数据采集模块由传感器DS18B20、HS1101、 MPX4105和单片机ATmega16组成,PTR2000数据收发模块由数字无线收发芯片NRF401构成,电源系统采用光伏电源系统构成。上位机数据管理系统如图2所示,其中,PTR2000数据收发模块由数字无线收发芯片NRF401构成,经MAX232电平转换直接与计算机相连,计算机实现数据的接收和处理。
上位机定时发出检测指令,下位机通过无线收发模块接收到检测指令后,开始检测气象数据。检测结束后,通过无线收发模块把采集的数据发给上位机。上位机实现采集数据的储存、图形化。下位机数据采集系统可以实现现场气象数据的显示。现场显示时,无线数传模块被关闭,下位机数据采集端独立运行,不依赖于上位机发出的检测指令,依次显示采集到的气象数据。
2 信息采集系统硬件电路设计
数据采集模块以ATmega16为核心,完成气象信息的采集、转换和传输。系统中主要利用ATmega16的片内ADC、定时/计数器、I/O口输入输出控制、可编程串行USART等资源实现数据采集。
2.1 温度测量电路
利用数字温度传感器DS18B20进行温度采集,温度测量电路如图3所示。 DS18B20的数据总线接ATmega16的P0.0口。ATmega16不支持单总线协议,采用软件方法模拟单总线协议,完成对DSl8B20芯片的访问。
2.2 湿度测量电路
湿度测量采用HS1101传感器,测量电路如图4所示。该电路把电容参数的变化转换为与之成反比的电压频率的变化,振荡电路输出方波信号的频率为如式(1)所示。f=1/Cx*(R1+2*R2 )*ln2 (1)
2.3 气压测量电路
系统选用MPX4105作为气压传感器。MPX4105可产生与气压呈线性关系的模拟输出电压,气压测量电路如图5所示。输出电压Vout和大气压P的关系如式(2)所示。Vout=Vcc*(0.01P-0.09) (2)
2.4 液晶显示电路
选用LCD128×64液晶显示器显示温度、气压和湿度气象信息,显示电路如图6所示。通过按键设置现场显示气象数据或是通过无线传输数据到上位机。
2.5 无线数据传输电路
系统采用无线传输模块PTR2000传输气象数据。本模块工作频率为国际通用的数传频段,设置CS可以选择模块两个频道中的一个作为通信频道。PTR2000模块直接与单片机的串口连接,通过MAX232进行电平转换与计算机相连,构成无线通信系统,完成气象数据的无线传输。与ATmega16连接的数据发送端电路如图7所示。
2.6 太阳能供电系统电路
下位机采用太阳能供电系统供电,供电系统主要由太阳能电池板、充电控制电路和蓄电池三个部分,太阳能电池供电控制电路如图8所示。
2.6.1 系统功耗测算
系统工作在现场模式时,PTR2000模块不工作,LCD处于工作状态,背光打开,系统工作电压为4.98V,电流为164mA,LCD处于关闭状态时,电流为18mA。系统工作在无线模式时,PTR2000模块工作,LCD关闭。PTR2000模块的工作电压为2.7V~5.25V,发射时工作电流为20mA~30mA,接收时工作电流为10mA。PTR2000主要工作在发射状态,工作电压约为5V,工作电流取30mA,因此,PTR2000消耗的功率约为0.15W。系统长期工作在无线模式,为节约能源,LCD处于关闭状态。根据以上分析,数据采集系统的总系统工作电流约为48mA,按I=50mA,功率为0.25W。
2.6.2 蓄电池选用
根据系统的工作情况、太阳能供电子系统的特点,选用电压为12V的铅酸蓄电池。数据采集系统全天候工作,考虑天气因素影响,最长阴雨天数设为5天,蓄电池能为采集系统提供5天的电量,电池的放电深度取75%。根据系统功耗和系统的工作状况,蓄电池的容量计算如式(3)所示。
Q=A*I*D*W*Tp/dd (3)
式中:A为安全系数,取1.1~1.4之间,取1.1;I=50mA为系统工作电流;D=24h为全天工作方式;W为最长连续阴雨天数,取W=5天;Tp为温度修正系数,一般在0℃以上取1,-10℃以上取1.1,-10℃以下取1.2,取Tp=1.1;dd为蓄电池放电深度,一般铅酸蓄电池取0.75。根据式(3),计算容量为9680mAh,选择容量为10Ah的蓄电池,电池尺寸为151×98×95。2.6.3 太阳能电池板选用
蓄电池电压为12V,铅酸蓄电池充电终了时的标志一般是单体电压为2.7 V,蓄电池的最大充电电压为16.2V(2.7V×6),考虑充电控制电路线路压降,应选用18V的太阳能电池板。蓄电池的容量为10Ah,充电电流一般选用1A(10×0.1)。根据以上分析,太阳能电池板的功率为18W(18V×1A)。实际选用的是单晶硅太阳能电池板,功率为20W,峰值电压为17.2V,峰值电流为1.16A,电池板尺寸为485*350。
2.6.4 太阳能电池充电控制
充电控制电路控制蓄电池充电,同时保护蓄电池,避免过充。SUN_V与ATmega16的内置模数转换器ADC0相连,检测光电池的电压,BAT_V与ADC1相连,检测蓄电池的电压,判断蓄电池是否已经达到过充点或过放点。SUN_CTR和BAT_CTR与ATmega16的I/O口相连,根据检测结果发出充电、停充指令。当蓄电池电压高于16.2V,停止充电;当太阳能电池板电压低于蓄电池电压时,停止充电;蓄电池电压低于16.2V,并且太阳能电池电压高于蓄电池电压1.3V时,进行充电。
蓄电池的输出电压经过DC-DC变换为5V后为信息采集端电路供电。
3 信息采集系统软件设计
采用C语言设计了温度、湿度和气压测量程序,无线数据传输程序、太阳能充放电控制程序。
3.1 温度测量程序设计
Read_Temperature(void) 是DSl8B20温度采集程序,程序清单如下:
Read_Temperature(void)
{
Init_DS18B20() ;//DS18B20初始化
WriteOneChar(0xCC) ; // 跳过读序号列号的操作
WriteOneChar(0x44) ; // 启动温度转换
Init_DS18B20() ;
WriteOneChar(0xCC) ; //跳过读序号列号的操作
WriteOneChar(0xBE) ; //读取温度寄存器
tel = ReadOneChar() ; //温度低8位
teh = ReadOneChar() ; //温度高8位
}
Init_DS18B20()是DSl8B20初始化程序,根据DSl8B20的1-WIRE协议,控制器先向DQ发出低电平复位脉冲,宽度在480μs~ 960μs之间,然后恢复DQ的高电平,在200μs之内,等待由DSl8B20发出的应答脉冲。如果DQ被下拉为低电平,则DSl8B20初始化成功。
WriteOneChar()是DSl8B20写入程序,控制器先下拉DQ为0,延时1μs以上,随后写入数据位,延时60μs,再置DQ为1,各位逐位写入。
ReadOneChar()是DSl8B20读出程序,控制器先下拉DQ为0,延时1μs以上,随后从DQ上读入数据位,延时60μs,再置DQ为1,完成一位数据的读取,各位逐位读出。
采集温度时,先进行DSl8B20复位,然后向DSl8B20写入跳出ROM命令CCH和温度转换命令44H,经延时750μs等待DSl8B20充分完成温度转换。再进行一次复位后,通过发送温度读取命令BEH,即可调用数据读取子程序得到转换的温度数据。
温度计算时,读取的温度值高八位如果大于0×07则温度值为负,应取反加一后乘以0.625,温度值高八位如果小于0×07则温度值为正,直接乘以0.625即可。
3.2 湿度测量程序设计
湿度测量电路输出的方波信号输入ATmega16的计数器T0,定时器T1进行计时。定时时间到,产生中断,根据计数器的数值和定时时间计算出频率值。
本电路典型的湿度-频率关系如表1所示。利用Matlab中的polyfit()命令线性拟合出相对湿度与频率的关系式,如式(4)所示。把ATmega16测算出的频率(Frequency)代入式(4)就可计算出相对湿度RH。
RH=-0.0767*Frequency+565.0967 (4)3.3 气压测量程序设计
MPX4105输出的模拟电压经ATmega16的片内ADC转换成相应数字量,再根据电压和气压转换关系即可计算出要测的气压值。
气压测量程序adc(void)如下所示。
adc(void)//单次AD转换 10位精度
unsigned char adcl,adch;
float adc=0;
ADMUX|=0X07;//参考电压AVCC转换结果右对齐输入端ADC7
ADCSRA|=((1
while(~(0XEF|ADCSRA));//等待转换完成
adcl=ADCL;adch=ADCH;//读取转换值
adc=5000/1024*(adch*256+adcl);//10位精度参考电压5000mV
return adc;
}
3.4 无线数据传输程序设计
ATmega16串行通信初始化程序void uart_init(unsigned int baud)如下所示。
void uart_init(unsigned int baud)//串行通信初始化
{
UCSRB=0x00; //UART收发允许中断允许
UCSRA=0x02;//收发完成,错误状态寄存器清零
//设为双倍速减小波特率设置误差
UCSRC=(1
SREG=BIT(7);//全局中断开放
DDRD|=0X02;//配置TX为输出
}
4 结束语
经测试,系统可以实现-55℃~125℃范围的温度测量,温度测量分辨率为0.5℃,系统工作在-20℃~70℃温度范围内时不需采取保温措施;湿度测量范围为1% RH ~99%RH,平均灵敏度为0.34pF/%RH;气压测量范围为15kPa~105kPa,采集的气象信息可实时显示,也可通过无线传输给上位机进行显示、存储;太阳能供电系统能够为系统提供稳定可靠的能量。晴天时,蓄电池充电耗时约1.5天,蓄电池充满时能连续为采集系统提供约8天的电能。为提高太阳能充电效率,缩短充电时间,可以对太阳能电池板加装单轴步进逐日系统。为提高单日充电时间,降低太阳能供电系统成本,可以选用薄膜太阳能电池板。通过软件设置,本系统可以与上位机构成含两站点的气象信息采集系统,完成气象信息的采集、存储和处理。
参考文献:
Atmel Corporation.ATmega16-16LData Sheet. 2004
Relative Humidity Sensor HS 1100/HS 1101. HPC001 Rev. 7 June 2002
Motorola Sensor Device Data MPX4105 1997
孙艳玲,刘亚丽.基于MPX4105芯片的数字气压计设计.中国仪器仪表,2007(11):62-65
吴慧峰,刘政,杨双.基于PTR2000 智能仪器的无线网络设计. 机电信息, 2011(12): 134-135
周源,李元尊,齐强.基于PTR2000的无线数据传输系统设计与实现. 海军航空工程学院学报. 2012(5):549-553
卢超. 分布式无线土壤电导率测量装置的设计. 仪表技术与传感器. 2011(8): 37-39
PTR2000datasheet.http://pdf.eepw.com.cn/p20091021/a10ff60edd0064674ded45024b6d7840 .pdf
李俄收,王 远,吴文民.铅酸蓄电池充电技术的研究. 2010(5): 253-257