0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)字溫濕度傳感器DHT11驅(qū)動(dòng)詳解

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-06-06 09:26 ? 次閱讀

1.DHT11簡介

DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。他應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性,傳感器包括一個(gè)電容式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的溫濕校驗(yàn)室中進(jìn)行校正。校準(zhǔn)系數(shù)以程序的形式存儲在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號的傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選擇。

其精度濕度±5%RH, 溫度±2℃,量程濕度5~95%RH, 溫度-20~+60℃。

pYYBAGKWyd6AapRDAARth0iuaw8813.png

2.硬件設(shè)計(jì)

溫度濕度模塊采用單總線協(xié)議,一根數(shù)據(jù)即可完成溫度和濕度數(shù)據(jù)采集,占用IO資源少,硬件接口如下:
DHT11_IO 與開發(fā)板PA0相連。

pYYBAGKWya-AUcKtAAAqr3meY5c152.png

3.通信協(xié)議簡介

(1). 溫濕度傳感器使用的是單總線接口,一次通訊時(shí)間5ms左右,具體格式如說明,當(dāng)前數(shù)據(jù)傳輸位40bit,高位先出。
數(shù)據(jù)格式:接收到40bit數(shù)據(jù)=16bit濕度數(shù)據(jù)+16bit溫度數(shù)據(jù)+8bit校驗(yàn)和數(shù)據(jù)。
例:接到40bit數(shù)據(jù)如下:
0100 0001 0000 0010 0010 0011 0000 0001 0110 0111
濕度數(shù)據(jù) 溫度數(shù)據(jù) 校驗(yàn)和

濕度數(shù)據(jù)高8bit(整數(shù)部分)+濕度數(shù)據(jù)低8bit(小數(shù)部分)+溫度數(shù)據(jù)高8bit(整數(shù)部分)+溫度數(shù)據(jù)低8位(小數(shù)部分)=末8bit=校驗(yàn)和
例如:0100 0001+0000 0010+0010 0011+0000 0001=0110 0111
濕度=65.2%RH 溫度=35.1℃

(2). 當(dāng)溫度低于0℃時(shí)溫度數(shù)據(jù)的最高位置1.
例如:-10.1℃表示為1000 1010 0000 0001

3.1 時(shí)序圖

用戶主機(jī)(MCU)發(fā)送一次開始信號后,DHT11 從低功耗模式轉(zhuǎn)換到高速模式,待主機(jī)開始信號結(jié)束后,DHT11 發(fā)送響應(yīng)信號,送出 40bit 的數(shù)據(jù),并觸發(fā)一次信采集。信號發(fā)送如圖所示。

pYYBAGKWzouAD4JfAAFDOuyF7I4958.png

注:主機(jī)從 DHT11 讀取的溫濕度數(shù)據(jù)總是前一次的測量值,如兩次測間隔時(shí)間很長,請連續(xù)讀兩次以第二次獲得的值為實(shí)時(shí)溫濕度值。

3.2 數(shù)據(jù)獲取

步驟一:
DHT11上電后(DHT11 上電后要等待 1S 以越過不穩(wěn)定狀態(tài)在此期間不能發(fā)送任何指令),測試環(huán)境溫濕度數(shù)據(jù),并記錄數(shù)據(jù),同時(shí) DHT11 的 DATA 數(shù)據(jù)線由上拉電阻拉高一直保持高電平;此時(shí) DHT11 的DATA 引腳處于輸入狀態(tài),時(shí)刻檢測外部信號。
步驟二:(起始信號)
微處理器的 I/O 設(shè)置為輸出同時(shí)輸出低電平,且低電平保持時(shí)間不能小于 18ms(最大不得超過 30ms),然后微處理器的 I/O 設(shè)置為輸入狀態(tài),由于上拉電阻,微處理器的 I/O 即 DHT11 的 DATA 數(shù)據(jù)線也隨之變高,等待DHT11 作出回答信號,發(fā)送信號如圖所示:

poYBAGKWzveAUqgdAAC6m_vxNyI009.png
void DHT11_Rst(void)	   
{                 
	DHT11_IO_OUT(); 	//配置為輸出模式
	DHT11_DQ_OUT(0); 	//總線拉低
	Delay_Ms(20);    	//拉低至少18ms
	DHT11_DQ_OUT(1); 	//總線拉高
	DelayUs(30);     	//主機(jī)拉高20~40us
}

步驟三:(回響信號)
DHT11 的 DATA 引腳檢測到外部信號有低電平時(shí),等待外部信號低電平結(jié)束,延遲后 DHT11 的 DATA引腳處于輸出狀態(tài),輸出 83 微秒的低電平作為應(yīng)答信號,緊接著輸出 87 微秒的高電平通知外設(shè)準(zhǔn)備接收數(shù)據(jù),微處理器的 I/O 此時(shí)處于輸入狀態(tài),檢測到 I/O 有低電平(DHT11 回應(yīng)信號)后,等待 87 微秒的高電平后的數(shù)據(jù)接收,發(fā)送信號如圖所示:

pYYBAGKWzyuAV9aEAABeZzj_f5E738.png
u8 DHT11_Check(void) 	   
{   
	u8 retry=0;
	DHT11_IO_IN();//配置為輸入模式	
    while (!DHT11_DQ_IN&&retry<100)//DHT11會(huì)拉低83us左右
	{
		retry++;
		DelayUs(1);
	}
	if(retry>=100)return 1;	  	
    while (DHT11_DQ_IN&&retry<100)//DHT11拉低后會(huì)再次拉高87us
	{
		retry++;
		DelayUs(1);
	}	 
	if(retry>=100)return 1;
	else retry=0;  
	return 0;
}

步驟四:(讀取一位數(shù)據(jù))
由 DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù),微處理器根據(jù) I/O 電平的變化接收 40 位數(shù)據(jù),位數(shù)據(jù)“0”的格式為: 54 微秒的低電平和 23-27 微秒的高電平,位數(shù)據(jù)“1”的格式為: 54 微秒的低電平加 68-74微秒的高電平。位數(shù)據(jù)“0”、“1”格式信號如圖所示:

poYBAGKWz2OAee-MAAEptODkGvU263.png
u8 DHT11_Read_Bit(void) 			 
{
 	u8 retry=0;
	while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?	{
		retry++;
		DelayUs(1);
	}
	retry=0;
	while(!DHT11_DQ_IN&&retry<100)//等待變高電平
	{
		retry++;
		DelayUs(1);
	}
	DelayUs(40);//等待40us
	if(DHT11_DQ_IN)return 1;
	else return 0;		   
}

結(jié)束信號
DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù)后,繼續(xù)輸出低電平 54 微秒后轉(zhuǎn)為輸入狀態(tài),由于上拉電阻隨之變?yōu)楦唠娖?。?DHT11 內(nèi)部重測環(huán)境溫濕度數(shù)據(jù),并記錄數(shù)據(jù),等待外部信號的到來。

3.3 溫濕度傳感器相關(guān)函數(shù)
(1) DHT11初始化函數(shù)(發(fā)送信號,檢測模塊是否正常):

u8 DHT11_Init(void)
{	 
	/*1.開時(shí)鐘*/		
	DHT11_DQ_OUT(1);//上拉	
	DHT11_Rst();  //復(fù)位DHT11
	return DHT11_Check();//等待DHT11的回應(yīng)
} 

(2)讀取一字節(jié)函數(shù)

u8 DHT11_Read_Byte(void)    
{        
	u8 i,dat;
	dat=0;
	for (i=0;i<8;i++) 
	{
   		dat<<=1; 
	    dat|=DHT11_Read_Bit();
    }						    
    return dat;
}

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

u8 DHT11_Read_Data(u8 *temp,u8 *humi)    
{  
	u8 stat=0xff;
 	u8 buf[5]={0};
	u8 i;
	DHT11_Rst();//起始信號
	stat=DHT11_Check();
	if(stat==0)//應(yīng)答信號
	{
		for(i=0;i<5;i++)//讀取40位數(shù)據(jù)
		{
			buf[i]=DHT11_Read_Byte();
		}
		if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
		{
			*humi++=buf[0];
			*humi=buf[1];
			*temp++=buf[2];
			*temp=buf[3];
		}
	}else return stat;
	return 0;	    
}

(4)溫濕度數(shù)據(jù)轉(zhuǎn)換

Delay_Ms(1);
time++;
if(time>=100)
{
time=0;
stat=DHT11_Read_Data(temperature,humidity);	//讀取溫濕度值
if(!stat)
{
printf("溫度:%d.%d℃  濕度:%d.%d\r\n",
temperature[0],temperature[1],humidity[0],temperature[1]);
	  sprintf((char *)buff,"%d.%1d",temperature[0],temperature[1]);
	  OLED_Display_str(60,0,8,16,buff);
	  sprintf((char *)buff,"%d.%1d",humidity[0],temperature[1]);
	  OLED_Display_str(60,2,8,16,buff);
	}
}
pYYBAGKW0EyAB7oOAABy-42vQ2w130.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10858

    瀏覽量

    354391
  • 單總線
    +關(guān)注

    關(guān)注

    1

    文章

    36

    瀏覽量

    12390
  • DHT11
    +關(guān)注

    關(guān)注

    19

    文章

    277

    瀏覽量

    57523
  • 數(shù)字溫濕度傳感器

    關(guān)注

    0

    文章

    31

    瀏覽量

    11137
收藏 人收藏

    評論

    相關(guān)推薦

    基于arduino的dht11溫濕度傳感器的使用

    本文介紹了DHT11溫濕度傳感器電氣特性、DHT11封裝形式及接口說明與典型應(yīng)用電路,其次介紹了DHT11
    發(fā)表于 01-22 15:50 ?4.5w次閱讀
    基于arduino的<b class='flag-5'>dht11</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>的使用

    DHT11數(shù)字溫濕度傳感器的應(yīng)用性研究

    基于DHT11溫濕度傳感器具有測量精度高、響應(yīng)速度快、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。通過介紹DHT11數(shù)字溫濕度
    發(fā)表于 11-06 16:28

    DHT11溫濕度傳感器介紹

    DHT11溫濕度傳感器介紹,1.實(shí)物原理圖2.模塊說明2.1 DHT11產(chǎn)品概述DHT11數(shù)字
    發(fā)表于 07-21 09:04

    DHT11數(shù)字溫濕度傳感器的相關(guān)資料推薦

    main.clcd1602.clcd1602.hdelay.cdelay.h項(xiàng)目展示DHT11溫濕度相關(guān)介紹DHT11產(chǎn)品概述DHT11數(shù)字
    發(fā)表于 11-19 07:33

    DHT11數(shù)字溫濕度傳感器的數(shù)據(jù)通訊過程是怎樣的

    DHT11數(shù)字溫濕度傳感器是什么?有何優(yōu)點(diǎn)呢?DHT11數(shù)字
    發(fā)表于 01-18 06:07

    DHT11溫濕度傳感器簡介

    DHT11溫濕度傳感器1、DHT11簡介DHT11數(shù)字溫濕度
    發(fā)表于 02-16 06:55

    DHT11數(shù)字溫濕度傳感器的相關(guān)資料推薦

    STM32采集DHT11溫濕度關(guān)于DHT11相關(guān)參數(shù)代碼篇接線和實(shí)驗(yàn)結(jié)果總結(jié)關(guān)于DHT11DHT11是一款數(shù)字
    發(fā)表于 02-21 07:34

    DHT11數(shù)字溫濕度傳感器產(chǎn)品介紹

    DHT11數(shù)字溫濕度傳感器產(chǎn)品介紹 DHT11數(shù)字溫濕度
    發(fā)表于 02-26 17:19 ?256次下載

    數(shù)字溫濕度傳感器DHT11的主要特點(diǎn)及引腳說明

      DHT11的主要特點(diǎn)及引腳說明   廣州奧松電子有限公司新近推出的DHT11數(shù)字溫濕度傳感器,是一款含有已校準(zhǔn)
    發(fā)表于 09-07 11:44 ?4.2w次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b><b class='flag-5'>DHT11</b>的主要特點(diǎn)及引腳說明

    DHT11數(shù)字溫濕度傳感器的應(yīng)用性研究

    基于DHT11溫濕度傳感器具有測量精度高、響應(yīng)速度快、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。通過介紹DHT11數(shù)字溫濕度
    發(fā)表于 07-25 17:03 ?216次下載
    <b class='flag-5'>DHT11</b><b class='flag-5'>數(shù)字</b>式<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>的應(yīng)用性研究

    數(shù)字溫濕度傳感器 DHT11

    數(shù)字溫濕度傳感器 DHT11 ?相對濕度和溫度測量 ?全部校準(zhǔn),數(shù)字輸出 ?卓越的長期穩(wěn)定性 ?
    發(fā)表于 12-02 11:06 ?4次下載

    溫濕度傳感器DHT11驅(qū)動(dòng)程序

    本文開始介紹了驅(qū)動(dòng)程序的定義與驅(qū)動(dòng)程序的作用,其次介紹了DHT11溫濕度傳感器特性、引腳說明與封裝詳情,最后介紹了
    發(fā)表于 01-22 16:52 ?5.3w次閱讀
    <b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b><b class='flag-5'>DHT11</b><b class='flag-5'>驅(qū)動(dòng)</b>程序

    溫濕度傳感器DHT11的STM32驅(qū)動(dòng)實(shí)現(xiàn)

    溫濕度傳感器DHT11的STM32驅(qū)動(dòng)實(shí)現(xiàn)
    發(fā)表于 11-25 20:36 ?76次下載
    <b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b><b class='flag-5'>DHT11</b>的STM32<b class='flag-5'>驅(qū)動(dòng)</b>實(shí)現(xiàn)

    數(shù)字溫濕度傳感器DHT11產(chǎn)品手冊

    數(shù)字溫濕度傳感器DHT11產(chǎn)品手冊
    發(fā)表于 02-14 11:17 ?77次下載

    使用ESP8266驅(qū)動(dòng)DHT11溫濕度傳感器

    DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度綜合
    的頭像 發(fā)表于 05-19 14:20 ?6203次閱讀
    使用ESP8266<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>