當(dāng)前位置:首頁 > 公眾號精選 > 程序員小哈
[導(dǎo)讀]DHT11和DHT21是學(xué)習(xí)單總線通信中常見的傳感器,在畢業(yè)設(shè)計(jì)中也常常用來測量環(huán)境的溫濕度數(shù)據(jù)。 下面對DHT11和DHT21進(jìn)行簡單的對比: DHT11: 測量范圍:20-90% RH 0-50℃ 測濕精度:±5% RH 測溫精度:±2℃ 分辨力:1 DHT11引腳說明(正面觀看,左邊的為1腳

DHT11和DHT21是學(xué)習(xí)單總線通信中常見的傳感器,在畢業(yè)設(shè)計(jì)中也常常用來測量環(huán)境的溫濕度數(shù)據(jù)。

下面對DHT11和DHT21進(jìn)行簡單的對比:

DHT11:

測量范圍:20-90% RH 0-50℃

測濕精度:±5% RH

測溫精度:±2℃

分辨力:1

DHT11引腳說明(正面觀看,左邊的為1腳):


DHT21(AM2301):

測量范圍:0-99.9% RH -40~+80℃

測濕精度:±3% RH

測溫精度:±0.5℃

分辨力:0.1%RH/0.1℃


典型應(yīng)用電路:

說明:

(1)、DHT11和DHT21供電范圍都是3V~5.5V,對于STM32單片機(jī),我們VDD引腳接3.3V即可;
(2)、DHT11的手冊中說,SDA數(shù)據(jù)引腳接線長度短于20米時(shí),用5K上拉電阻。大于20米時(shí)根據(jù)實(shí)際情況使用合適的上拉電阻;
(3)、DHT11上電后,需要等待1s以越過不穩(wěn)定狀態(tài),在此期間無需發(fā)現(xiàn)任何指令;本人嘗試上電即讀取,返回溫濕度值都為0,1S以后溫濕度值即可恢復(fù)正常;
(4)、電源引腳(VDD,GND)之間可增加一個(gè)100nF的電容,用以去耦濾波。

DHT11和DHT21的時(shí)序基本相同,下面以DHT11的時(shí)序圖為例進(jìn)行分析:

注意:

DHT11和DHT21的主線拉低的時(shí)間不同,DHT11主機(jī)(MCU)至少拉低18ms,DHT21主機(jī)(MCU)至少拉低500us,為了程序上兼容,我們一般將總線拉低25ms,這樣DHT11和DHT21的驅(qū)動(dòng)程序就可以兼容了。


DHT11總線驅(qū)動(dòng)過程:

1、MCU發(fā)送開始起始信號
總線空閑狀態(tài)為高電平,主機(jī)把總線拉低等待DHT11響應(yīng);
與MCU相連的SDA數(shù)據(jù)引腳置為輸出模式;
主機(jī)把總線拉低至少18毫秒,然后拉高20-40us等待DHT返回響應(yīng)信號;
2、讀取DHT11響應(yīng)
SDA數(shù)據(jù)引腳設(shè)為輸入模式;
DHT11檢測到起始信號后,會(huì)將總線拉低80us,然后拉高80us作為響應(yīng);
3、DHT11送出40bit數(shù)據(jù)

注意:

送出的數(shù)據(jù)高位在前。


40bit數(shù)據(jù)(5字節(jié)數(shù)據(jù))數(shù)據(jù)包

DHT11

數(shù)據(jù)格式: 40bit數(shù)據(jù)=8位濕度整數(shù)+8位濕度小數(shù)+8位溫度整數(shù)+8位溫度小數(shù)+8位校驗(yàn)


DHT21

數(shù)據(jù)格式: 40bit數(shù)據(jù)=16bit濕度數(shù)據(jù)+16bit溫度數(shù)據(jù)+8bit校驗(yàn)和

例子:  接收40bit數(shù)據(jù)如下:      

         0000 0010  1000 1100    0000 0001  0101 1111    1110 1110

                   濕度數(shù)據(jù)                            溫度數(shù)據(jù)                    校驗(yàn)和

             濕度高8+濕度低8+溫度高8+溫度低8=和的低8=校驗(yàn)和

             例如:0000 0010+1000 1100+0000 0001+0101 1111=1110 1110

二進(jìn)制的濕度數(shù)據(jù)   0000 0010  1000 1100 ==>轉(zhuǎn)為十進(jìn)制:652,除以10即為濕度值;

             濕度=65.2RH     

     

二進(jìn)制的溫度數(shù)據(jù)   0000 0001  0101 1111 ==>轉(zhuǎn)為十進(jìn)制:351,除以10即為溫度值;

     溫度=35.1℃      

             當(dāng)溫度低于0時(shí)溫度數(shù)據(jù)的最高位置1

             例如:-10.1℃表示為1000 0000 0110 0101  


注意:DHT21溫濕度數(shù)據(jù)為16位,DHT11數(shù)據(jù)為8位,所以盡管兩者時(shí)序相同,卻不能用同樣的數(shù)據(jù)類型計(jì)算。


/** * @brief 讀取40bit數(shù)據(jù) * @param none. * @retval 1 讀取成功,0讀取失敗. */int DHT11_ReadData(void){ unsigned int cout = 1; unsigned int T_H, T_L, H_H, H_L, Check; //設(shè)置IO為輸出模式 DHT_Set_Output();  //1、MCU發(fā)送開始起始信號 DHT_ResetBit(); delay_ms(25); //拉低至少18ms DHT_SetBit();  delay_us(20); //拉高20~40us  //設(shè)置IO口為輸入模式 DHT_Set_Input();  //2、讀取DHT11響應(yīng) if(DHT_ReadBit() == Bit_RESET) { //等待80us的低電平 cout = 1; while(!DHT_ReadBit() && cout++);  //等待80us的高電平 cout = 1; while(DHT_ReadBit() && cout++);  //3、DHT11送出40bit數(shù)據(jù) //讀取8bit的濕度整數(shù)數(shù)據(jù) H_H = DH21_ReadByte();  //讀取8bit的濕度小數(shù)數(shù)據(jù) H_L = DH21_ReadByte();  //讀取8bit的溫度整數(shù)數(shù)據(jù) T_H = DH21_ReadByte();  //讀取8bit的溫度小數(shù)數(shù)據(jù) T_L = DH21_ReadByte();  //讀取8位的校驗(yàn)和 Check = DH21_ReadByte();  //校驗(yàn)數(shù)據(jù)是否合法,合法的話將數(shù)據(jù)保存到全局結(jié)構(gòu)體變量中備用 if(Check == (H_H + H_L + T_H + T_L)) { DHT11.Hum_H = H_H; DHT11.Hum_L = H_L; DHT11.Tem_H = T_H; DHT11.Tem_L = T_L;  return 1; } else { return 0; } } return 0;}
上面讀取40bit數(shù)據(jù)的函數(shù)中有一個(gè)讀取單字節(jié)(8bit)數(shù)據(jù)的函數(shù)DH21_ReadByte();這里涉及到1bit數(shù)據(jù)到底是0還是1的判斷規(guī)則。

數(shù)據(jù)'0'還是'1'判定規(guī)則:

位數(shù)據(jù)“0”的格式為:50 微秒的低電平和 26-28 微秒的高電平,
位數(shù)據(jù)“1”的格式為:50 微秒的低電平加 70微秒的高電平。

時(shí)序過程:
1、等待50us低電平結(jié)束
因?yàn)榻邮諗?shù)據(jù)時(shí),低電平的時(shí)間都是50us,該位數(shù)據(jù)到底是0還是1,取決于低電平后面的高電平的時(shí)間多少;
如果不考慮低電平的時(shí)間,我們可以簡化程序,可以先等待低電平過去;
2、數(shù)據(jù)拉高后,判斷30us后數(shù)據(jù)總線電平的高低
等待數(shù)據(jù)線拉高后,再延時(shí)30us,因?yàn)?0us大于28us且小于70us,再檢測此時(shí)數(shù)據(jù)線是否為高,如果為高,則數(shù)據(jù)判定為1,否則為0。

位數(shù)據(jù)“0”判定圖


位數(shù)據(jù)“1”判定圖


該函數(shù)的具體實(shí)現(xiàn)如下:

/** * @brief 讀取8bit 數(shù)據(jù) * @param none. * @retval none. */int DH21_ReadByte(void){ int data=0; char i; char cout;  for(i=0; i<8; i++) { //1、等待50us低電平結(jié)束 cout=1; while(!DHT_ReadBit() && cout++);  //2、數(shù)據(jù)拉高后,判斷30us后數(shù)據(jù)總線電平的高低 //延時(shí)30us之后讀取IO口的狀態(tài) delay_us(30);  //先把上次的數(shù)據(jù)移位,再保存本次的數(shù)據(jù)位。 data = data << 1;  if(DHT_ReadBit() == Bit_SET) {  data |= 1; }   //等待輸入的是低電平(高電平結(jié)束),進(jìn)入下一位數(shù)據(jù)接收 cout=1; while(DHT_ReadBit() && cout++); } return data;}


對40bit數(shù)據(jù)處理,得到溫濕度數(shù)據(jù):

/** * @brief 獲取溫度 * @param none. * @retval Temp, 溫度值 */int DHT11_GetTem(void){ //return (DHT11.Tem_H << 8 | DHT11.Tem_L); //DHT21 return (DHT11.Tem_H*10 + DHT11.Tem_L); //DHT11}/** * @brief 獲取濕度 * @param none. * @retval Hum,濕度值 */int DHT11_GetHum(void){ //return (DHT11.Hum_H << 8 | DHT11.Hum_L); //DHT21 return (DHT11.Hum_H*10 + DHT11.Hum_L); //DHT11}

注意:

上面函數(shù)得到的數(shù)據(jù)為真實(shí)溫濕度值的放大10倍之后的值,使用時(shí),需將函數(shù)的返回值除以10才為真實(shí)值;

?

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉