電子發(fā)燒友App

硬聲App

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

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

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

電子發(fā)燒友網(wǎng)>嵌入式技術(shù)>嵌入式軟件/開(kāi)發(fā)板>DHT11溫濕度傳感器使用注意事項(xiàng) - 基于arduino的dht11溫濕度傳感器的使用

DHT11溫濕度傳感器使用注意事項(xiàng) - 基于arduino的dht11溫濕度傳感器的使用

  DHT11溫濕度傳感器使用注意事項(xiàng)

  DHT11的供電電壓為3-5.5V。傳感器上電后,要等待1s以越過(guò)不穩(wěn)定狀態(tài)在此期間無(wú)需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個(gè)100nF的電容,用以去耦濾波。

  微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說(shuō)明,當(dāng)前小數(shù)部分用于以后擴(kuò)展,現(xiàn)讀出為零。

  操作流程如下:

  一次完整的數(shù)據(jù)傳輸為40bit,高位先出。

  數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)

  +8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和

  數(shù)據(jù)傳送正確時(shí)校驗(yàn)和數(shù)據(jù)等于8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)所得結(jié)果的末8位。

  用戶MCU發(fā)送一次開(kāi)始信號(hào)后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開(kāi)始信號(hào)結(jié)束后,DHT11發(fā)送響應(yīng)信號(hào),送出40bit的數(shù)據(jù),并觸發(fā)一次信號(hào)采集,用戶可選擇讀取部分?jǐn)?shù)據(jù)。

  從模式下,DHT11接收到開(kāi)始信號(hào)觸發(fā)一次溫濕度采集,如果沒(méi)有接收到主機(jī)發(fā)送開(kāi)始信號(hào),DHT11不會(huì)主動(dòng)進(jìn)行溫濕度采集。采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。

  通訊過(guò)程

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

  總線空閑狀態(tài)為高電平,主機(jī)把總線拉低等待DHT11響應(yīng),主機(jī)把總線拉低必須大于18毫秒,保證DHT11能檢測(cè)到起始信號(hào)。DHT11接收到主機(jī)的開(kāi)始信號(hào)后,等待主機(jī)開(kāi)始信號(hào)結(jié)束,然后發(fā)送80us低電平響應(yīng)信號(hào)。主機(jī)發(fā)送開(kāi)始信號(hào)結(jié)束后,延時(shí)等待20-40us后,讀取DHT11的響應(yīng)信號(hào),主機(jī)發(fā)送開(kāi)始信號(hào)后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高。

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

  總線為低電平,說(shuō)明DHT11發(fā)送響應(yīng)信號(hào),DHT11發(fā)送響應(yīng)信號(hào)后,再把總線拉高80us,準(zhǔn)備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時(shí)隙開(kāi)始,高電平的長(zhǎng)短定了數(shù)據(jù)位是0還是1.格式見(jiàn)下面圖示。如果讀取響應(yīng)信號(hào)為高電平,則DHT11沒(méi)有響應(yīng),請(qǐng)檢查線路是否連接正常。當(dāng)最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進(jìn)入空閑狀態(tài)。

  數(shù)字0信號(hào)表示方法

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

  數(shù)字1信號(hào)表示方法

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

  程序:

  //DHT11temperature

  //chriz_w@163.com

  //arduinonano

  //arduinolite

  #include“arduino_lit.h”

  #defineDHT11Pin2

  //TesttheDHT11--chriz_w@163.com

  bytedat[5];//存放濕度2byte,溫度2byte,checksum1byte

  bytereadData(){//每次讀取8bits(onebyte)

  bytedata;

  for(inti=0;i《8;i++){

  if(digitalRead(DHT11Pin)==LOW)

  {

  //一開(kāi)始要LOW才表示要傳過(guò)來(lái)

  while(digitalRead(DHT11Pin)==LOW);//等待50us;

  //現(xiàn)在已經(jīng)變成HIGH了

  _delay_us(30);//判斷高電平持續(xù)時(shí)間,以判定資料是‘0’還是‘1’;

  if(digitalRead(DHT11Pin)==HIGH)//根據(jù)時(shí)序持續(xù)了30us以上就是1

  data|=(1《《(7-i));//高位在前,低位元在后;

  //如果這時(shí)已經(jīng)是LOW,表示這bit是0,不必塞入data

  //。。而且以下的while也會(huì)立即結(jié)束(因?yàn)長(zhǎng)OW),準(zhǔn)備接收下一個(gè)bit

  while(digitalRead(DHT11Pin)==HIGH);//等待下一bit的接收;

  //這時(shí)一定已經(jīng)變成LOW了

  }

  }

  returndata;//收完8bit=onebyte=onechar

  }

  voidstart_dht11(){//每次要與DHT11溝通

  DIGITAL_WRITE(DHT11Pin,LOW);//拉低到LOW,發(fā)表示要開(kāi)始溝通的信號(hào);

  _delay_ms(30);//延時(shí)要大于18ms,以便DHT11能檢測(cè)到開(kāi)始信號(hào);這里用30ms

  DIGITAL_WRITE(DHT11Pin,HIGH);//拉高HIGH,讓DHT11拉低到LOW告訴我們要傳送

  _delay_us(40);//給40us等待DHT11響應(yīng);

  PIN_MODE(DHT11Pin,INPUT);//改為輸入mode準(zhǔn)備digitalRead()

  while(DIGITAL_READ(DHT11Pin)==HIGH);//必須等到LOW

  _delay_us(80);//DHT11發(fā)出響應(yīng),會(huì)拉低80us;所以至少等80us

  while(DIGITAL_READ(DHT11Pin)==LOW);//繼續(xù)等到變HIGH

  _delay_us(80);//DHT11會(huì)拉高到HIGH80us后開(kāi)始發(fā)送資料;

  ///以下連續(xù)讀入5bytes(40bits),最后的byte是checksum校驗(yàn)值

  for(inti=0;i《5;i++)

  dat[i]=readData();//接收溫濕度資料,校驗(yàn);

  PIN_MODE(DHT11Pin,OUTPUT);//改為Outputmode,準(zhǔn)備拉高HIGH

  DIGITAL_WRITE(DHT11Pin,HIGH);//發(fā)送完一次資料后釋放bus,等待下一次開(kāi)始信號(hào);

  }

  voidsetup(){

  SERIAL_BEGIN();

  PIN_MODE(DHT11Pin,OUTPUT);

  }

  voidloop(){

  start_dht11();//讀取濕度溫度和檢核位到dat[];其中dat[4]是checkSum

  //根據(jù)datasheet規(guī)定,dat[4]要==(dat[0]+dat[1]+dat[2]+dat[3])%256

  //否則表示溝通有錯(cuò)誤??!

  PRINT(“currenthumidity=”);

  println(dat[0]&0xff,10,serial_puts);

  PRINT(“currenttemperature=”);

  println(dat[2]&0xff,10,serial_puts);//顯示溫度的整數(shù)部分;

  _delay_ms(2000);

  }

  intmain()

  {

  setup();

  while(1)

  loop();

  }

上一頁(yè)12全文

本文導(dǎo)航

收藏3

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

評(píng)論

请按住滑块,拖动到最右边
了解新功能

查看更多

相關(guān)推薦

基于MCU的DHT11數(shù)字溫濕度傳感器設(shè)計(jì)

  DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,采用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),無(wú)需復(fù)雜的電路處理。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接。
2022-09-09 16:46:462051

51單片機(jī)dht11溫濕度傳感器

51單片機(jī)dht11溫濕度傳感器,今天給大家介紹的是一個(gè)溫濕度檢測(cè)設(shè)計(jì),基于51單片機(jī)、藍(lán)牙模塊、溫濕度傳感器、Android APP完成。首先先展示一下設(shè)計(jì)好的實(shí)物,接下來(lái)將從系統(tǒng)方案、硬件
2021-07-14 07:45:56

Arduino開(kāi)發(fā)板使用DHT11溫濕度傳感器的方法 精選資料分享

在本篇文章中,我們將DHT11溫濕度傳感器Arduino開(kāi)發(fā)板和LCD顯示屏連接,設(shè)計(jì)一種能夠測(cè)量室溫和環(huán)境濕度的設(shè)備。簡(jiǎn)單地說(shuō),我們將使用ArduinoDHT11傳感器設(shè)計(jì)數(shù)字濕度和溫度計(jì)
2021-07-13 06:58:11

Arduino開(kāi)發(fā)板使用DHT11溫濕度傳感器的方法 精選資料分享

在本篇文章中,我們將DHT11溫濕度傳感器Arduino開(kāi)發(fā)板和LCD顯示屏連接,設(shè)計(jì)一種能夠測(cè)量室溫和環(huán)境濕度的設(shè)備。簡(jiǎn)單地說(shuō),我們將使用ArduinoDHT11傳感器設(shè)計(jì)數(shù)字濕度和溫度計(jì)
2021-07-13 09:35:01

DHT11傳感器的相關(guān)資料推薦

1、DHT11傳感器簡(jiǎn)介DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性和卓越的長(zhǎng)期穩(wěn)定性。傳感器包括
2022-02-16 07:44:24

DHT11溫濕度傳感器

DHT11溫濕度傳感器1. DHT11簡(jiǎn)介2. 硬件設(shè)計(jì)3. 軟件設(shè)計(jì)3.1 STM32CubeMX設(shè)置3.2 MDK-ARM編程4. 下載驗(yàn)證
2021-08-11 06:04:01

DHT11溫濕度傳感器

溫濕度傳感器資料(資料+程序)DHT11參考資料
2016-07-25 17:17:54

DHT11溫濕度傳感器

一、實(shí)驗(yàn)?zāi)康牟捎肁RM結(jié)構(gòu)中最為代表的Cortex-M4系列的芯片,選用STM32F407ZGT6開(kāi)發(fā)板進(jìn)行項(xiàng)目開(kāi)發(fā),選用的傳感器為常見(jiàn)通用的DHT11溫濕度傳感器。傳感器將采集到的數(shù)據(jù)傳輸?shù)絊TM32(MCU)主控進(jìn)行數(shù)據(jù)處理,最后通過(guò)串口打印出來(lái)。...
2021-08-10 07:36:20

DHT11溫濕度傳感器介紹

DHT11溫濕度傳感器介紹,1.實(shí)物原理圖2.模塊說(shuō)明2.1 DHT11產(chǎn)品概述DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù)
2021-07-21 09:04:40

DHT11溫濕度傳感器發(fā)生超時(shí)錯(cuò)誤

最近在使用DHT11溫濕度傳感器時(shí)老是發(fā)生超時(shí)錯(cuò)誤,導(dǎo)致數(shù)據(jù)錯(cuò)誤,怎么辦
2016-03-06 10:43:54

DHT11溫濕度傳感器無(wú)小數(shù)部份

請(qǐng)高手指教為什么:基于51單片機(jī)的溫濕度測(cè)量,溫濕度傳感器的型號(hào)為:DHT11,用1602顯示測(cè)量值,所顯示的測(cè)量值小數(shù)部份全為零?
2012-11-05 21:27:47

DHT11溫濕度傳感器的原理資料

附件味DHT11溫濕度傳感器的原理資料
2017-06-05 15:16:05

正在加载...