






摘要:本文介紹了一種基于PTR2000的無線氣象信息采集系統的硬件和軟件設計,該系統可以實現溫度、濕度、氣壓等氣象數據的采集和傳輸。氣象數據采集系統由單片機ATmega16、溫度傳感器DS18820、濕度傳感器HS1101和氣壓傳感器MPX4105構成,實現溫度、濕度、氣壓等基本氣象參數的測量。采集的氣象數據通過無線收發模塊PTR2000上傳給上位機進行存儲和相應處理。數據采集端由太陽能電源系統供電,可以滿足長期測量需要。本文網絡版地址:http://www.eepw.com.cn/article/279230.htm
關鍵字:PTR2000;氣象信息采集;數據采集;ATmega16;串行通信;太陽能電源
DOI:10.3969/j.issn.1005-5517.2015.8.020
引言
隨著經濟社會的發展,工農業生產對氣象信息的需求日益加大。農業農情灌溉氣象環境指標監測、森林火險氣象指標監測、各種突發性災害性天氣的快速響應和現場監控均需要對氣象信息進行實時采集和分析。本系統采用DS18820、HS1101等高精度傳感器,低功耗單片機ATmega16,數字無線收發芯片NRF401:數據采集端配備光伏電源系統供電。通過數據采集、傳送與處理實現周圍環境溫度、濕度、氣壓等氣象要素的全天候監測;系統工作方式靈活,通過128×64液晶顯示器可實現現場所測數據的顯示,也可以采用無線通信的方式將數據傳送至計算機進行存儲和處理。
1 系統工作原理
氣象信息監測系統由下位機數據采集和上位機數據管理兩部分構成。下位機數據采集系統主要由三部分構成,如圖1所示。其中,數據采集模塊由傳感器DS18820、HS1101、MPX4105和單片機ATmega16組成,PTR2000數據收發模塊由數字無線收發芯片NRF401構成,電源系統采用光伏電源系統構成。上位機數據管理系統如圖2所示,其中,PTR2000數據收發模塊由數字無線收發芯片NRF401構成,經MAX232電平轉換直接與計算機相連,計算機實現數據的接收和處理。
上位機定時發出檢測指令,下位機通過無線收發模塊接收到檢測指令后,開始檢測氣象數據。檢測結束后,通過無線收發模塊把采集的數據發給上位機。上位機實現采集數據的儲存、圖形化。下位機數據采集系統可以實現現場氣象數據的顯示。現場顯示時,無線數傳模塊被關閉,下位機數據采集端獨立運行,不依賴于上位機發出的檢測指令,依次顯示采集到的氣象數據。
2 信息采集系統硬件電路設計
數據采集模塊以ATmega16為核心,完成氣象信息的采集、轉換和傳輸。系統中主要利用ATmega16的片內ADC、定時/計數器、I/O口輸入輸出控制、可編程串行USART等資源實現數據采集。
2.1溫度測量電路
利用數字溫度傳感器DS18820進行溫度采集,溫度測量電路如圖3所示。DS18820的數據總線接ATmega16的PO.O口。ATmega16不支持單總線協議,采用軟件方法模擬單總線協議,完成對DS18820芯片的訪問。
2.2 濕度測量電路
濕度測量采用HS1101傳感器,測量電路如圖4所示。該電路把電容參數的變化轉換為與之成反比的電壓頻率的變化,振蕩電路輸出方波信號的頻率為如式(1)所示。
f=1/CX(R1+2*R2)*ln2
(1)
2. 3氣壓測量電路
系統選用MPX4105作為氣壓傳感器。MPX4105可產生與氣壓呈線性關系的模擬輸出電壓,氣壓測量電路如圖5所示。輸出電壓Vut和大氣壓P的關系如式(2)所示。
Vout=Vcc*(O.OIP-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,接收時工作電流為lOmAE81。PTR2000主要工作在發射狀態,工作電壓約為SV,工作電流取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為溫度修正系數,一般在O℃以上取1,-10℃以上取1.1, -10℃以下取1.2,取Tp= 1.1;dd為蓄電池放電深度,一般鉛酸蓄電池取0.75。根據式(3),計算容量為9680mAh,選擇容量為lOAh的蓄電池,電池尺寸為151×98×95。
2.6.3 太陽能電池板選用
蓄電池電壓為12V,鉛酸蓄電池充電終了時的標志一般是單體電壓為2.7V,蓄電池的最大充電電壓為16.2V(2,7V×6),考慮充電控制電路線路壓降、應選用18V的太陽能電池板。蓄電池的容量為lOAh,充電電流一般選用1A(10×O.l)。根據以上分析,太陽能電池板的功率為18W(18V×1A)。實際選用的是單晶硅太陽能電池板,功率為20W,峰值電壓為17.2V,峰值電流為1.16A,電池板尺寸為485*350。
2.6.4 太陽能電池充電控制
充電控制電路控制蓄電池充電,同時保護蓄電池,避免過充。SUN__V與ATmega16的內置模數轉換器ADCO相連,檢測光電池的電壓,BAT__V與ADC1相連,檢測蓄電池的電壓,判斷蓄電池是否已經達到過充點或過放點。SUN__CTR和BAT CTR與ATmega16的I/O口相連,根據檢測結果發出充電、停充指令。當蓄電池電壓高于16.2V,停止充電;當太陽能電池板電壓低于蓄電池電壓時,停止充電;蓄電池電壓低于16.2V,并且太陽能電池電壓高于蓄電池電壓1.3V時,進行充電。
蓄電池的輸出電壓經過DC—DC變換為SV后為信息采集端電路供電。
3 信息采集系統軟件設計
采用C語言設計了溫度、濕度和氣壓測量程序,無線數據傳輸程序、太陽能充放電控制程序。
3.1 溫度測量程序設計
Read_Temperature(void)是D S18820溫度采集程序,程序清單如下:
Read_Temperature(void)
{
Init_DS18820();//DS18820初始化
WriteOneChar(OxCC);//跳過讀序號列號的操作
WriteOneChar(Ox44);//啟動溫度轉換
Init_DS18820();
WriteOneChar(OxCC);//跳過讀序號列號的操作
WriteOneChar(OxBE);//讀取溫度寄存器
tel= ReadOneChar();//溫度低8位
teh= ReadOneChar();//溫度高8位
)
Init_DS18820()是DS18820初始化程序,根據DS18820的1-WIRE協議,控制器先向DQ發出低電平復位脈沖,寬度在480μs~960μs之間,然后恢復DQ的高電平,在200μs之內,等待由DS18820發出的應答脈沖。如果DQ被下拉為低電平,則DS18820初始化成功。
WriteOneChar()是DS18820寫入程序,控制器先下拉DQ為o,延時1μs以上,隨后寫入數據位,延時60μ,再置DQ為1,各位逐位寫入。
ReadOneChar()是DS18820讀出程序,控制器先下拉DQ為0,延時1μs以上,隨后從DQ上讀入數據位,延時60μs,再置DQ為l,完成一位數據的讀取,各位逐位讀出。
采集溫度時,先進行DS18820復位,然后向DS18820寫入跳出ROM命令CCH和溫度轉換命令44H,經延時750μs等待DS18820充分完成溫度轉換。再進行一次復位后,通過發送溫度讀取命令BEH,即可調用數據讀取子程序得到轉換的溫度數據。
溫度計算時,讀取的溫度值高八位如果大于O×07則溫度值為負,應取反加一后乘以0.625,溫度值高八位如果小于O×07則溫度值為正,直接乘以0.625即可。
3.2 濕度測量程序設計
濕度測量電路輸出的方波信號輸入ATmega16的計數器TO,定時器Tl進行計時。定時時間到,產生中斷,根據計數器的數值和定時時間計算出頻率值。
本電路典型的濕度一頻率關系如表1所示。利用Matlab中的polyfito命令線性擬合出相對濕度與頻率的關系式,如式(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;
ADMUXI=OX07;//參考電壓AVCC轉換結果右對齊輸入端ADC7
ADCSRAI=《1< ADCSRAI=1< while(—(OXEFIADCSRA》;//等待轉換完成 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=Ox00; //UART收發允許中斷允許 UCSRA=Ox02;//收發完成,錯誤狀態寄存器清零 //設為雙倍速減小波特率設置誤差 UCSRC=(1< //寄存器選擇UCSRC, //異步模式,禁止校驗, //1位停止位.8位數據位 baud=mclkl8/baud-li UBRRL=baud%256; UBRRH=baudl256;//設置波特率 UCSRB=(1< SREG=BIT(7);//全局中斷開放 DDRDI=OX02j//配置TX為輸出 ) 4結束語 經測試, 系統可以實現一55℃~125℃范圍的溫度測量,溫度測量分辨率為0.5℃,系統工作在-20℃~70℃溫度范圍內時不需采取保溫措施:濕度測量范圍為1% RH—99%RH,平均靈敏度為0.34pF/%RH;氣壓測量范圍為15kPa~105kPa,采集的氣象信息可實時顯示,也可通過無線傳輸給上位機進行顯示、存儲:太陽能供電系統能夠為系統提供穩定可靠的能量。晴天時,蓄電池充電耗時約1.5天,蓄電池充滿時能連續為采集系統提供約8天的電能。為提高太陽能充電效率、縮短充電時間,可以對太陽能電池板加裝單軸步進逐日系統。為提高單日充電時間,降低太陽能供電系統成本,可以選用薄膜太陽能電池板。通過軟件設置,本系統可以與上位機構成含兩站點的氣象信息采集系統,完成氣象信息的采集、存儲和處理。