關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于PTR2000的無線氣象信息采集系統設計

        基于PTR2000的無線氣象信息采集系統設計

        作者:張修太 李正斌 時間:2015-09-07 來源:電子產品世界 收藏
        編者按:本文介紹了一種基于PTR2000的無線氣象信息采集系統的硬件和軟件設計,該系統可以實現溫度、濕度、氣壓等氣象數據的采集和傳輸。氣象數據采集系統由單片機ATmega16、溫度傳感器DS18B20、濕度傳感器HS1101和氣壓傳感器MPX4105構成,實現溫度、濕度、氣壓等基本氣象參數的測量。采集的氣象數據通過無線收發模塊PTR2000上傳給上位機進行存儲和相應處理。數據采集端由太陽能電源系統供電,可以滿足長期測量需要。

        2.6.1 系統功耗測算

        本文引用地址:http://www.104case.com/article/279230.htm

          系統工作在現場模式時,模塊不工作,LCD處于工作狀態,背光打開,系統工作電壓為4.98V,電流為164mA,LCD處于關閉狀態時,電流為18mA。系統工作在無線模式時,模塊工作,LCD關閉。模塊的工作電壓為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與的內置模數轉換器ADC0相連,檢測光電池的電壓,BAT_V與ADC1相連,檢測蓄電池的電壓,判斷蓄電池是否已經達到過充點或過放點。SUN_CTR和BAT_CTR與的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即可。




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 涟源市| 沂水县| 泰安市| 泽普县| 盐源县| 兴城市| 随州市| 北辰区| 金沙县| 金秀| 忻州市| 桦川县| 邮箱| 兖州市| 华池县| 安龙县| 巴青县| 花垣县| 苍山县| 乐平市| 西丰县| 马公市| 云梦县| 梨树县| 青海省| 沙洋县| 木里| 金昌市| 海城市| 会泽县| 临江市| 宣恩县| 布尔津县| 莱芜市| 水富县| 博客| 会昌县| 留坝县| 阿合奇县| 武宁县| 社旗县|