基于PTR2000的无线气象信息采集系统设计

  作者:张修太 李正斌 时间:2015-09-07来源:电子产品世界

编者按:本文介绍了一种基于PTR2000的无线气象信息采集系统的硬件和软件设计,该系统可以实现温度、湿度、气压等气象数据的采集和传输。气象数据采集系统由单片机ATmega16、温度传感器DS18B20、湿度传感器HS1101和气压传感器MPX4105构成,实现温度、湿度、气压等基本气象参数的测量。采集的气象数据通过无线收发模块PTR2000上传给上位机进行存储和相应处理。数据采集端由太阳能电源系统供电,可以满足长期测量需要。

2.6.1 系统功耗测算

  系统工作在现场模式时,PTR2000模块不工作,LCD处于工作状态,背光打开,系统工作电压为4.98V,电流为164mA,LCD处于关闭状态时,电流为18mA。系统工作在无线模式时,PTR2000模块工作,LCD关闭。PTR2000模块的工作电压为2.7V~5.25V,发射时工作电流为20mA~30mA,接收时工作电流为10mA[8]。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 太阳能电池板选用[9]

  蓄电池电压为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即可。


1 2 3

关键词: PTR2000 气象信息采集 数据采集 ATmega16 串行通信 太阳能电源 201509

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版