基于PTR2000的无线气象信息采集系统设计
2.6.1 系统功耗测算
本文引用地址:https://www.eepw.com.cn/article/279230.htm系统工作在现场模式时,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即可。
评论