摘要:本文介紹了一種基于PTR2000的無(wú)線(xiàn)氣象信息采集系統(tǒng)的硬件和軟件設(shè)計(jì),該系統(tǒng)可以實(shí)現(xiàn)溫度、濕度、氣壓等氣象數(shù)據(jù)的采集和傳輸。氣象數(shù)據(jù)采集系統(tǒng)由單片機(jī)ATmega16、溫度傳感器DS18B20、濕度傳感器HS1101和氣壓傳感器MPX4105構(gòu)成,實(shí)現(xiàn)溫度、濕度、氣壓等基本氣象參數(shù)的測(cè)量。采集的氣象數(shù)據(jù)通過(guò)無(wú)線(xiàn)收發(fā)模塊PTR2000上傳給上位機(jī)進(jìn)行存儲(chǔ)和相應(yīng)處理。數(shù)據(jù)采集端由太陽(yáng)能電源系統(tǒng)供電,可以滿(mǎn)足長(zhǎng)期測(cè)量需要。 引言 隨著經(jīng)濟(jì)社會(huì)的發(fā)展,工農(nóng)業(yè)生產(chǎn)對(duì)氣象信息的需求日益加大。農(nóng)業(yè)農(nóng)情灌溉氣象環(huán)境指標(biāo)監(jiān)測(cè)、森林火險(xiǎn)氣象指標(biāo)監(jiān)測(cè)、各種突發(fā)性災(zāi)害性天氣的快速響應(yīng)和現(xiàn)場(chǎng)監(jiān)控均需要對(duì)氣象信息進(jìn)行實(shí)時(shí)采集和分析。本系統(tǒng)采用DS18B20、HS1101等高精度傳感器,低功耗單片機(jī)ATmega16,數(shù)字無(wú)線(xiàn)收發(fā)芯片NRF401;數(shù)據(jù)采集端配備光伏電源系統(tǒng)供電。通過(guò)數(shù)據(jù)采集、傳送與處理實(shí)現(xiàn)周?chē)h(huán)境溫度、濕度、氣壓等氣象要素的全天候監(jiān)測(cè);系統(tǒng)工作方式靈活,通過(guò)128×64液晶顯示器可實(shí)現(xiàn)現(xiàn)場(chǎng)所測(cè)數(shù)據(jù)的顯示,也可以采用無(wú)線(xiàn)通信的方式將數(shù)據(jù)傳送至計(jì)算機(jī)進(jìn)行存儲(chǔ)和處理。 1 系統(tǒng)工作原理[1-3] 氣象信息監(jiān)測(cè)系統(tǒng)由下位機(jī)數(shù)據(jù)采集和上位機(jī)數(shù)據(jù)管理兩部分構(gòu)成。下位機(jī)數(shù)據(jù)采集系統(tǒng)主要由三部分構(gòu)成,如圖1所示。其中,數(shù)據(jù)采集模塊由傳感器DS18B20、HS1101、 MPX4105和單片機(jī)ATmega16組成,PTR2000數(shù)據(jù)收發(fā)模塊由數(shù)字無(wú)線(xiàn)收發(fā)芯片NRF401構(gòu)成,電源系統(tǒng)采用光伏電源系統(tǒng)構(gòu)成。上位機(jī)數(shù)據(jù)管理系統(tǒng)如圖2所示,其中,PTR2000數(shù)據(jù)收發(fā)模塊由數(shù)字無(wú)線(xiàn)收發(fā)芯片NRF401構(gòu)成,經(jīng)MAX232電平轉(zhuǎn)換直接與計(jì)算機(jī)相連,計(jì)算機(jī)實(shí)現(xiàn)數(shù)據(jù)的接收和處理。 上位機(jī)定時(shí)發(fā)出檢測(cè)指令,下位機(jī)通過(guò)無(wú)線(xiàn)收發(fā)模塊接收到檢測(cè)指令后,開(kāi)始檢測(cè)氣象數(shù)據(jù)。檢測(cè)結(jié)束后,通過(guò)無(wú)線(xiàn)收發(fā)模塊把采集的數(shù)據(jù)發(fā)給上位機(jī)。上位機(jī)實(shí)現(xiàn)采集數(shù)據(jù)的儲(chǔ)存、圖形化。下位機(jī)數(shù)據(jù)采集系統(tǒng)可以實(shí)現(xiàn)現(xiàn)場(chǎng)氣象數(shù)據(jù)的顯示,F(xiàn)場(chǎng)顯示時(shí),無(wú)線(xiàn)數(shù)傳模塊被關(guān)閉,下位機(jī)數(shù)據(jù)采集端獨(dú)立運(yùn)行,不依賴(lài)于上位機(jī)發(fā)出的檢測(cè)指令,依次顯示采集到的氣象數(shù)據(jù)。 2 信息采集系統(tǒng)硬件電路設(shè)計(jì) 數(shù)據(jù)采集模塊以ATmega16為核心,完成氣象信息的采集、轉(zhuǎn)換和傳輸。系統(tǒng)中主要利用ATmega16的片內(nèi)ADC、定時(shí)/計(jì)數(shù)器、I/O口輸入輸出控制、可編程串行USART等資源實(shí)現(xiàn)數(shù)據(jù)采集。 2.1 溫度測(cè)量電路 利用數(shù)字溫度傳感器DS18B20進(jìn)行溫度采集,溫度測(cè)量電路如圖3所示。 DS18B20的數(shù)據(jù)總線(xiàn)接ATmega16的P0.0口。ATmega16不支持單總線(xiàn)協(xié)議,采用軟件方法模擬單總線(xiàn)協(xié)議,完成對(duì)DSl8B20芯片的訪(fǎng)問(wèn)。 2.2 濕度測(cè)量電路[2] 濕度測(cè)量采用HS1101傳感器,測(cè)量電路如圖4所示。該電路把電容參數(shù)的變化轉(zhuǎn)換為與之成反比的電壓頻率的變化,振蕩電路輸出方波信號(hào)的頻率為如式(1)所示。f=1/Cx*(R1+2*R2 )*ln2 (1) 2.3 氣壓測(cè)量電路[3-4] 系統(tǒng)選用MPX4105作為氣壓傳感器。MPX4105可產(chǎn)生與氣壓呈線(xiàn)性關(guān)系的模擬輸出電壓,氣壓測(cè)量電路如圖5所示。輸出電壓Vout和大氣壓P的關(guān)系如式(2)所示。Vout=Vcc*(0.01P-0.09) (2) 2.4 液晶顯示電路 選用LCD128×64液晶顯示器顯示溫度、氣壓和濕度氣象信息,顯示電路如圖6所示。通過(guò)按鍵設(shè)置現(xiàn)場(chǎng)顯示氣象數(shù)據(jù)或是通過(guò)無(wú)線(xiàn)傳輸數(shù)據(jù)到上位機(jī)。 2.5 無(wú)線(xiàn)數(shù)據(jù)傳輸電路[5-7] 系統(tǒng)采用無(wú)線(xiàn)傳輸模塊PTR2000傳輸氣象數(shù)據(jù)。本模塊工作頻率為國(guó)際通用的數(shù)傳頻段,設(shè)置CS可以選擇模塊兩個(gè)頻道中的一個(gè)作為通信頻道。PTR2000模塊直接與單片機(jī)的串口連接,通過(guò)MAX232進(jìn)行電平轉(zhuǎn)換與計(jì)算機(jī)相連,構(gòu)成無(wú)線(xiàn)通信系統(tǒng),完成氣象數(shù)據(jù)的無(wú)線(xiàn)傳輸。與ATmega16連接的數(shù)據(jù)發(fā)送端電路如圖7所示。 2.6 太陽(yáng)能供電系統(tǒng)電路 下位機(jī)采用太陽(yáng)能供電系統(tǒng)供電,供電系統(tǒng)主要由太陽(yáng)能電池板、充電控制電路和蓄電池三個(gè)部分,太陽(yáng)能電池供電控制電路如圖8所示。 2.6.1 系統(tǒng)功耗測(cè)算 系統(tǒng)工作在現(xiàn)場(chǎng)模式時(shí),PTR2000模塊不工作,LCD處于工作狀態(tài),背光打開(kāi),系統(tǒng)工作電壓為4.98V,電流為164mA,LCD處于關(guān)閉狀態(tài)時(shí),電流為18mA。系統(tǒng)工作在無(wú)線(xiàn)模式時(shí),PTR2000模塊工作,LCD關(guān)閉。PTR2000模塊的工作電壓為2.7V~5.25V,發(fā)射時(shí)工作電流為20mA~30mA,接收時(shí)工作電流為10mA[8]。PTR2000主要工作在發(fā)射狀態(tài),工作電壓約為5V,工作電流取30mA,因此,PTR2000消耗的功率約為0.15W。系統(tǒng)長(zhǎng)期工作在無(wú)線(xiàn)模式,為節(jié)約能源,LCD處于關(guān)閉狀態(tài)。根據(jù)以上分析,數(shù)據(jù)采集系統(tǒng)的總系統(tǒng)工作電流約為48mA,按I=50mA,功率為0.25W。 2.6.2 蓄電池選用 根據(jù)系統(tǒng)的工作情況、太陽(yáng)能供電子系統(tǒng)的特點(diǎn),選用電壓為12V的鉛酸蓄電池。數(shù)據(jù)采集系統(tǒng)全天候工作,考慮天氣因素影響,最長(zhǎng)陰雨天數(shù)設(shè)為5天,蓄電池能為采集系統(tǒng)提供5天的電量,電池的放電深度取75%。根據(jù)系統(tǒng)功耗和系統(tǒng)的工作狀況,蓄電池的容量計(jì)算如式(3)所示。 Q=A*I*D*W*Tp/dd (3) 式中:A為安全系數(shù),取1.1~1.4之間,取1.1;I=50mA為系統(tǒng)工作電流;D=24h為全天工作方式;W為最長(zhǎng)連續(xù)陰雨天數(shù),取W=5天;Tp為溫度修正系數(shù),一般在0℃以上取1,-10℃以上取1.1,-10℃以下取1.2,取Tp=1.1;dd為蓄電池放電深度,一般鉛酸蓄電池取0.75。根據(jù)式(3),計(jì)算容量為9680mAh,選擇容量為10Ah的蓄電池,電池尺寸為151×98×95。2.6.3 太陽(yáng)能電池板選用[9] 蓄電池電壓為12V,鉛酸蓄電池充電終了時(shí)的標(biāo)志一般是單體電壓為2.7 V,蓄電池的最大充電電壓為16.2V(2.7V×6),考慮充電控制電路線(xiàn)路壓降,應(yīng)選用18V的太陽(yáng)能電池板。蓄電池的容量為10Ah,充電電流一般選用1A(10×0.1)。根據(jù)以上分析,太陽(yáng)能電池板的功率為18W(18V×1A)。實(shí)際選用的是單晶硅太陽(yáng)能電池板,功率為20W,峰值電壓為17.2V,峰值電流為1.16A,電池板尺寸為485*350。 2.6.4 太陽(yáng)能電池充電控制 充電控制電路控制蓄電池充電,同時(shí)保護(hù)蓄電池,避免過(guò)充。SUN_V與ATmega16的內(nèi)置模數(shù)轉(zhuǎn)換器ADC0相連,檢測(cè)光電池的電壓,BAT_V與ADC1相連,檢測(cè)蓄電池的電壓,判斷蓄電池是否已經(jīng)達(dá)到過(guò)充點(diǎn)或過(guò)放點(diǎn)。SUN_CTR和BAT_CTR與ATmega16的I/O口相連,根據(jù)檢測(cè)結(jié)果發(fā)出充電、停充指令。當(dāng)蓄電池電壓高于16.2V,停止充電;當(dāng)太陽(yáng)能電池板電壓低于蓄電池電壓時(shí),停止充電;蓄電池電壓低于16.2V,并且太陽(yáng)能電池電壓高于蓄電池電壓1.3V時(shí),進(jìn)行充電。 蓄電池的輸出電壓經(jīng)過(guò)DC-DC變換為5V后為信息采集端電路供電。 3 信息采集系統(tǒng)軟件設(shè)計(jì) 采用C語(yǔ)言設(shè)計(jì)了溫度、濕度和氣壓測(cè)量程序,無(wú)線(xiàn)數(shù)據(jù)傳輸程序、太陽(yáng)能充放電控制程序。 3.1 溫度測(cè)量程序設(shè)計(jì) Read_Temperature(void) 是DSl8B20溫度采集程序,程序清單如下: Read_Temperature(void) { Init_DS18B20() ;//DS18B20初始化 WriteOneChar(0xCC) ; // 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44) ; // 啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20() ; WriteOneChar(0xCC) ; //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE) ; //讀取溫度寄存器 tel = ReadOneChar() ; //溫度低8位 teh = ReadOneChar() ; //溫度高8位 } Init_DS18B20()是DSl8B20初始化程序,根據(jù)DSl8B20的1-WIRE協(xié)議,控制器先向DQ發(fā)出低電平復(fù)位脈沖,寬度在480μs~ 960μs之間,然后恢復(fù)DQ的高電平,在200μs之內(nèi),等待由DSl8B20發(fā)出的應(yīng)答脈沖。如果DQ被下拉為低電平,則DSl8B20初始化成功。 WriteOneChar()是DSl8B20寫(xiě)入程序,控制器先下拉DQ為0,延時(shí)1μs以上,隨后寫(xiě)入數(shù)據(jù)位,延時(shí)60μs,再置DQ為1,各位逐位寫(xiě)入。 ReadOneChar()是DSl8B20讀出程序,控制器先下拉DQ為0,延時(shí)1μs以上,隨后從DQ上讀入數(shù)據(jù)位,延時(shí)60μs,再置DQ為1,完成一位數(shù)據(jù)的讀取,各位逐位讀出。 采集溫度時(shí),先進(jìn)行DSl8B20復(fù)位,然后向DSl8B20寫(xiě)入跳出ROM命令CCH和溫度轉(zhuǎn)換命令44H,經(jīng)延時(shí)750μs等待DSl8B20充分完成溫度轉(zhuǎn)換。再進(jìn)行一次復(fù)位后,通過(guò)發(fā)送溫度讀取命令BEH,即可調(diào)用數(shù)據(jù)讀取子程序得到轉(zhuǎn)換的溫度數(shù)據(jù)。 溫度計(jì)算時(shí),讀取的溫度值高八位如果大于0×07則溫度值為負(fù),應(yīng)取反加一后乘以0.625,溫度值高八位如果小于0×07則溫度值為正,直接乘以0.625即可。 3.2 濕度測(cè)量程序設(shè)計(jì)[2] 濕度測(cè)量電路輸出的方波信號(hào)輸入ATmega16的計(jì)數(shù)器T0,定時(shí)器T1進(jìn)行計(jì)時(shí)。定時(shí)時(shí)間到,產(chǎn)生中斷,根據(jù)計(jì)數(shù)器的數(shù)值和定時(shí)時(shí)間計(jì)算出頻率值。 本電路典型的濕度-頻率關(guān)系如表1所示。利用Matlab中的polyfit()命令線(xiàn)性擬合出相對(duì)濕度與頻率的關(guān)系式,如式(4)所示。把ATmega16測(cè)算出的頻率(Frequency)代入式(4)就可計(jì)算出相對(duì)濕度RH。 RH=-0.0767*Frequency+565.0967 (4)3.3 氣壓測(cè)量程序設(shè)計(jì) MPX4105輸出的模擬電壓經(jīng)ATmega16的片內(nèi)ADC轉(zhuǎn)換成相應(yīng)數(shù)字量,再根據(jù)電壓和氣壓轉(zhuǎn)換關(guān)系即可計(jì)算出要測(cè)的氣壓值。 氣壓測(cè)量程序adc(void)如下所示。 adc(void)//單次AD轉(zhuǎn)換 10位精度 unsigned char adcl,adch; float adc=0; ADMUX|=0X07;//參考電壓AVCC轉(zhuǎn)換結(jié)果右對(duì)齊輸入端ADC7 ADCSRA|=((1 while(~(0XEF|ADCSRA));//等待轉(zhuǎn)換完成 adcl=ADCL;adch=ADCH;//讀取轉(zhuǎn)換值 adc=5000/1024*(adch*256+adcl);//10位精度參考電壓5000mV return adc; } 3.4 無(wú)線(xiàn)數(shù)據(jù)傳輸程序設(shè)計(jì) ATmega16串行通信初始化程序void uart_init(unsigned int baud)如下所示。 void uart_init(unsigned int baud)//串行通信初始化 { UCSRB=0x00; //UART收發(fā)允許中斷允許 UCSRA=0x02;//收發(fā)完成,錯(cuò)誤狀態(tài)寄存器清零 //設(shè)為雙倍速減小波特率設(shè)置誤差 UCSRC=(1 SREG=BIT(7);//全局中斷開(kāi)放 DDRD|=0X02;//配置TX為輸出 } 4 結(jié)束語(yǔ) 經(jīng)測(cè)試,系統(tǒng)可以實(shí)現(xiàn)-55℃~125℃范圍的溫度測(cè)量,溫度測(cè)量分辨率為0.5℃,系統(tǒng)工作在-20℃~70℃溫度范圍內(nèi)時(shí)不需采取保溫措施;濕度測(cè)量范圍為1% RH ~99%RH,平均靈敏度為0.34pF/%RH;氣壓測(cè)量范圍為15kPa~105kPa,采集的氣象信息可實(shí)時(shí)顯示,也可通過(guò)無(wú)線(xiàn)傳輸給上位機(jī)進(jìn)行顯示、存儲(chǔ);太陽(yáng)能供電系統(tǒng)能夠?yàn)橄到y(tǒng)提供穩(wěn)定可靠的能量。晴天時(shí),蓄電池充電耗時(shí)約1.5天,蓄電池充滿(mǎn)時(shí)能連續(xù)為采集系統(tǒng)提供約8天的電能。為提高太陽(yáng)能充電效率,縮短充電時(shí)間,可以對(duì)太陽(yáng)能電池板加裝單軸步進(jìn)逐日系統(tǒng)。為提高單日充電時(shí)間,降低太陽(yáng)能供電系統(tǒng)成本,可以選用薄膜太陽(yáng)能電池板。通過(guò)軟件設(shè)置,本系統(tǒng)可以與上位機(jī)構(gòu)成含兩站點(diǎn)的氣象信息采集系統(tǒng),完成氣象信息的采集、存儲(chǔ)和處理。 參考文獻(xiàn): [1] Atmel Corporation.ATmega16-16LData Sheet. 2004 [2] Relative Humidity Sensor HS 1100/HS 1101. HPC001 Rev. 7 June 2002 [3] Motorola Sensor Device Data MPX4105 1997 [4] 孫艷玲,劉亞麗.基于MPX4105芯片的數(shù)字氣壓計(jì)設(shè)計(jì)[J].中國(guó)儀器儀表,2007(11):62-65 [5] 吳慧峰,劉政,楊雙.基于PTR2000 智能儀器的無(wú)線(xiàn)網(wǎng)絡(luò)設(shè)計(jì)[J]. 機(jī)電信息, 2011(12): 134-135 [6] 周源,李元尊,齊強(qiáng).基于PTR2000的無(wú)線(xiàn)數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 海軍航空工程學(xué)院學(xué)報(bào). 2012(5):549-553 [7] 盧超. 分布式無(wú)線(xiàn)土壤電導(dǎo)率測(cè)量裝置的設(shè)計(jì)[J]. 儀表技術(shù)與傳感器. 2011(8): 37-39 [8] PTR2000datasheet[R/OL].http://pdf.eepw.com.cn/p20091021/a10ff60edd0064674ded45024b6d7840 .pdf [9] 李俄收,王 遠(yuǎn),吳文民.鉛酸蓄電池充電技術(shù)的研究[J]. 2010(5): 253-257 |