喻文倩(西南科技大學(xué),四川 綿陽 621010)
基于CHTM-02/N的電子溫濕度計(jì)設(shè)計(jì)
喻文倩
(西南科技大學(xué),四川 綿陽 621010)
以STM32Fl03ZET6作為控制核心元件,采用CHTM-02NA溫濕度傳感器,利用ADC轉(zhuǎn)換,得到相應(yīng)的溫度、濕度值,并將得到的值通過液晶屏顯示;當(dāng)濕度值大于70%RH時,蜂鳴器報警。
ARM;CHTM-02NA溫度傳感器;I/O模擬通信
溫濕度傳感器能將溫度量和濕度量轉(zhuǎn)換成容易被測量處理的電信號,例如電壓值,對應(yīng)不同的濕度和溫度,根據(jù)產(chǎn)品的設(shè)計(jì),有不同的電壓輸出值。使得虛擬的感官變得具體化,使人們更直觀的了解溫度和濕度。
總體設(shè)計(jì)如圖1所示,溫濕度儀的設(shè)計(jì)主要是由STM32為主要控制元件,對數(shù)據(jù)進(jìn)行分析,比較。如果超過范圍,作為報警裝置的蜂鳴器將報警。利用CHTM-02/N溫濕度模塊進(jìn)行測量,通過USB接口連接各個部件,將結(jié)果返回到核心元件中處理。最后通過液晶顯示器和上位機(jī)將測量結(jié)果顯示出來。
3.1STM32Fl03ZET6 微控制器
STM32系列32位閃存微控制器使用的是Cortex-M3內(nèi)核,有高性能、低功耗、實(shí)時應(yīng)用、具有競爭性價格等優(yōu)點(diǎn)。最高72MHz工作頻率,有從32K到512K字節(jié)的閃存程序存儲器,電源采用2.0-3.6V供電和I/O引腳,4-16MHZ晶振振蕩器,并且低功耗,包含睡眠、停機(jī)和待機(jī)模式。包含12位模數(shù)轉(zhuǎn)換器,僅1us轉(zhuǎn)換時間,可多達(dá)16個輸入通道。2個DMA控制器,支持多種外設(shè),多達(dá)8個定時器。廣泛地應(yīng)用于電力電子系統(tǒng),編程控制器,醫(yī)療,報警系統(tǒng),通風(fēng)系統(tǒng),游戲平臺等各個方面,以及多種平臺。
3.2CHTM-02/N 系列溫濕度傳感器
CHTM-02/N系列溫濕度傳感器模塊在測量濕度時所采用的敏感元件是高分子濕敏電阻“CHR-01”,其耗電電流平均2mA,最大5mA。電源電壓供電范圍為4.75~5.25V。測量溫度的敏感元件可以選NTC,熱敏電阻,LM35或TMP35。其測量范圍溫度是0~60℃,濕度是10%--95%RH,濕度準(zhǔn)確度為±5%RH,溫度系數(shù)則為0.4%RH/℃。CHTM-02/N溫濕度傳感器模塊的接口如圖2所示。
b=(w-adcw)*100;LCD_ShowNum(60+60,150,b,2,16);//顯示溫度的小數(shù)顯示濕度:
a=temp;
temp-=(u8)temp;//減掉整數(shù)部分
LCD_ShowxNum(100,130,a,2,16,0);//顯示濕度整數(shù)
LCD_ShowNum(120,130,temp*100,2,16); //顯示濕度小數(shù)
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溫濕度傳感器進(jìn)行溫濕度的測量,在測量的同時可以通過模式的轉(zhuǎn)換,通過LCD和上位機(jī)來顯示測量結(jié)果的數(shù)據(jù),還能隔一段時間就自動監(jiān)測,并及時傳遞數(shù)據(jù),具有實(shí)時性。并且設(shè)備簡單,配置方便。但是,這種小型的測量還是具有一定的誤差,并且周圍環(huán)境隨時在變化,兩次測量數(shù)據(jù)之間的時間間隔也會影響測量的準(zhǔn)確度。
[1]張?jiān)评?北侖電廠2號機(jī)10號瓦振動原因淺析[J].浙江電力,1996(05).
[2]邱炳正.引風(fēng)機(jī)振動原因及其處理[J].江西煤炭科技,2001(01).
[3]張都清,張廣成,曹立春.電廠中汽水管道的振動原因及對策[J].山東電力技術(shù),2006(01).
總體上可大致分為三個部分:微處理器的配置,CHTM-02/N溫濕度傳感器的測量以及數(shù)據(jù)處理,數(shù)據(jù)的顯示以及判斷是否超過規(guī)定值。
4.1微處理器的設(shè)置
初始化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函數(shù)
#defineKEY_RIGHT1#endif
初始化顯示(LCD,LED)的設(shè)置:
#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進(jìn)行轉(zhuǎn)化:
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);
//顯示溫度的整數(shù)
喻文倩(1994-3),女,四川成都人,本科,學(xué)生,研究方向:電氣工程及其自動化。