喻文倩(西南科技大學,四川 綿陽 621010)
基于CHTM-02/N的電子溫濕度計設計
喻文倩
(西南科技大學,四川 綿陽 621010)
以STM32Fl03ZET6作為控制核心元件,采用CHTM-02NA溫濕度傳感器,利用ADC轉換,得到相應的溫度、濕度值,并將得到的值通過液晶屏顯示;當濕度值大于70%RH時,蜂鳴器報警。
ARM;CHTM-02NA溫度傳感器;I/O模擬通信
溫濕度傳感器能將溫度量和濕度量轉換成容易被測量處理的電信號,例如電壓值,對應不同的濕度和溫度,根據產品的設計,有不同的電壓輸出值。使得虛擬的感官變得具體化,使人們更直觀的了解溫度和濕度。
總體設計如圖1所示,溫濕度儀的設計主要是由STM32為主要控制元件,對數據進行分析,比較。如果超過范圍,作為報警裝置的蜂鳴器將報警。利用CHTM-02/N溫濕度模塊進行測量,通過USB接口連接各個部件,將結果返回到核心元件中處理。最后通過液晶顯示器和上位機將測量結果顯示出來。
3.1STM32Fl03ZET6 微控制器
STM32系列32位閃存微控制器使用的是Cortex-M3內核,有高性能、低功耗、實時應用、具有競爭性價格等優點。最高72MHz工作頻率,有從32K到512K字節的閃存程序存儲器,電源采用2.0-3.6V供電和I/O引腳,4-16MHZ晶振振蕩器,并且低功耗,包含睡眠、停機和待機模式。包含12位模數轉換器,僅1us轉換時間,可多達16個輸入通道。2個DMA控制器,支持多種外設,多達8個定時器。廣泛地應用于電力電子系統,編程控制器,醫療,報警系統,通風系統,游戲平臺等各個方面,以及多種平臺。
3.2CHTM-02/N 系列溫濕度傳感器
CHTM-02/N系列溫濕度傳感器模塊在測量濕度時所采用的敏感元件是高分子濕敏電阻“CHR-01”,其耗電電流平均2mA,最大5mA。電源電壓供電范圍為4.75~5.25V。測量溫度的敏感元件可以選NTC,熱敏電阻,LM35或TMP35。其測量范圍溫度是0~60℃,濕度是10%--95%RH,濕度準確度為±5%RH,溫度系數則為0.4%RH/℃。CHTM-02/N溫濕度傳感器模塊的接口如圖2所示。
b=(w-adcw)*100;LCD_ShowNum(60+60,150,b,2,16);//顯示溫度的小數顯示濕度:
a=temp;
temp-=(u8)temp;//減掉整數部分
LCD_ShowxNum(100,130,a,2,16,0);//顯示濕度整數
LCD_ShowNum(120,130,temp*100,2,16); //顯示濕度小數
4.3判斷是否超出范圍
w=w/0.01;#defineLED0PBout(5)//PB5
adcs=s;#defineLED1PEout(5)//PE5
adcw=w;voidLED_Init(void);//初始化
temp=s/0.03;#endif
利用CHTM-02NA溫濕度傳感器進行溫濕度的測量,在測量的同時可以通過模式的轉換,通過LCD和上位機來顯示測量結果的數據,還能隔一段時間就自動監測,并及時傳遞數據,具有實時性。并且設備簡單,配置方便。但是,這種小型的測量還是具有一定的誤差,并且周圍環境隨時在變化,兩次測量數據之間的時間間隔也會影響測量的準確度。
[1]張云雷.北侖電廠2號機10號瓦振動原因淺析[J].浙江電力,1996(05).
[2]邱炳正.引風機振動原因及其處理[J].江西煤炭科技,2001(01).
[3]張都清,張廣成,曹立春.電廠中汽水管道的振動原因及對策[J].山東電力技術,2006(01).
總體上可大致分為三個部分:微處理器的配置,CHTM-02/N溫濕度傳感器的測量以及數據處理,數據的顯示以及判斷是否超過規定值。
4.1微處理器的設置
初始化ADC:voidAdc_Init(void);
#ifndef__ADC_Hu16Get_Adc(u8ch);
#define__ADC_Hu16Get_Adc_Average(u8ch,u8times);
#include"sys.h"#endif
初始化BEEP以及端口定義:
#ifndef__BEEP_H#defineBEEPPBout(8)//BEEP,蜂鳴器接口#define__BEEP_HvoidBEEP_Init(void);//初始化
#include"sys.h"#endif
初始化KEY:
#defineKEY0GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//讀取按鍵0
#defineKEY1GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//讀取按鍵1
#defineKEY2GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//讀取按鍵2
#defineKEY3GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//讀取按鍵3(WK_UP)
#defineKEY_UP 4voidKEY_Init(void);//IO初始化
#defineKEY_LEFT3u8KEY_Scan(u8);//按鍵掃描#defineKEY_DOWN2函數
#defineKEY_RIGHT1#endif
初始化顯示(LCD,LED)的設置:
#ifndef__LCD_H
#define__LCD_H #defineLED0PBout(5)//PB5
#include"sys.h"#defineLED1PEout(5)//PE5
#include"stdlib.h"voidLED_Init(void);//初始化
#ifndef__LED_H#endif
#define__LED_H
#include"sys.h"
4.2CHTM-02/N 溫濕度傳感器
測試溫度,并利用ADC進行轉化:
adcs=Get_Adc_Average(ADC_Channel_0,10);
adcw=Get_Adc_Average(ADC_Channel_1,10);
s=(float)adcs*(3.3/4096);
w=(float)adcw*(3.3/4096);
將溫度像顯示在LCD上:
t=s;LCD_ShowNum(155,90,t,2,16);t=(s-t)*100;LCD_ ShowNum(172,90,t,2,16);
t=w;LCD_ShowNum(155,110,t,2,16);t=(w-t)*100;LCD_ ShowNum(172,110,t,2,16);
//顯示溫度的整數
喻文倩(1994-3),女,四川成都人,本科,學生,研究方向:電氣工程及其自動化。