DHT11: ทั้งหมดเกี่ยวกับเซ็นเซอร์สำหรับวัดอุณหภูมิและความชื้น

DHT11

การวัดอุณหภูมิและความชื้นเป็นเรื่องปกติมาก ในโครงการผู้ผลิตอิเล็กทรอนิกส์มากมาย ใน DIY เป็นเรื่องปกติที่จะต้องวัดค่าพารามิเตอร์เหล่านี้เพื่อควบคุมระบบบางอย่าง ตัวอย่างเช่นเพื่อให้สามารถสร้างเครื่องทำความเย็นการดูแลพืชหรือระบบปรับอากาศที่เริ่มทำงานหากอุณหภูมิหรือความชื้นถึงค่าที่กำหนด แต่เพื่อให้เป็นไปได้คุณต้องมีเซ็นเซอร์เช่น DHT11

ในตลาด มีเซ็นเซอร์มากมาย ช่วงอุณหภูมิที่แตกต่างกันมากโดยมีช่วงอุณหภูมิที่รองรับหรือปริมาณที่แตกต่างกัน ตัวอย่างนี้คือ LM35 หนึ่งในเครื่องใช้ไฟฟ้าที่ได้รับความนิยมและใช้งานมากที่สุด. นอกจากนี้ยังมีเซ็นเซอร์ความชื้นอื่น ๆ ที่ทำงานโดยการแปรผันของการนำไฟฟ้าเช่น AD22103KTZ จากอุปกรณ์อนาล็อก แต่ถ้าคุณต้องการวัดทั้งสองพารามิเตอร์บางทีอุปกรณ์ที่เราพูดถึงในบทความนี้วันนี้น่าสนใจกว่ามาก ...

DHT11 คืออะไร?

El DHT11 เป็นเซ็นเซอร์อย่างง่ายที่ใช้วัดอุณหภูมิและความชื้น, ทั้งหมดในอย่างเดียว. A) ใช่ คุณจะไม่ต้องซื้อเซ็นเซอร์สองตัว แยกกัน ราคาอยู่ที่ประมาณ€ 2 ดังนั้นจึงค่อนข้างถูกแม้ว่าคุณจะพบว่ามันติดตั้งบนโมดูล (ติดตั้งบน PCB เพื่อความสะดวกในการใช้งาน) ตามปกติในส่วนประกอบอิเล็กทรอนิกส์ประเภทนี้สำหรับ Arduino ในกรณีของบอร์ดประกอบด้วยตัวต้านทานแบบดึงขึ้น 5 กิโลโอห์มและ LED ที่เตือนเราถึงการทำงาน

DHT11 มี ความน่าเชื่อถือและเสถียรภาพสูงเนื่องจากสัญญาณดิจิตอลที่ปรับเทียบแล้ว. นอกจากนี้หากคุณดูแผ่นข้อมูลคุณจะเห็นว่ามีคุณสมบัติที่น่าสนใจดังที่คุณจะเห็นในส่วนต่อ ๆ ไป

ผลิตภัณฑ์ที่คล้ายกัน

DHT22

มีผลิตภัณฑ์ที่คล้ายกับ DHT11 ที่คุณอาจสนใจ มันคือ DHT22. นอกจากนี้ยังเป็นเซ็นเซอร์อุณหภูมิและความชื้นในตัว แต่ในกรณีนี้ราคาจะสูงขึ้นเล็กน้อยประมาณ 4 ยูโร ความแม่นยำในการวัดอุณหภูมิคือการเปลี่ยนแปลง 5% เช่นเดียวกับ DHT11 แต่ต่างกันตรงที่วัดความชื้นเกินช่วงระหว่าง 20 ถึง 80% ดังนั้นคุณอาจสนใจ DHT22 สำหรับโครงการที่คุณต้องการวัดความชื้นตั้งแต่ 0 ถึง 100%

La ความถี่ในการรวบรวมข้อมูล นอกจากนี้ยังเป็นสองเท่าของ DHT11 ใน DHT22 2 ตัวอย่างต่อวินาทีแทนที่จะเป็น 1 ตัวอย่างต่อวินาทีของ DHT11 สำหรับอุณหภูมินั้นสามารถวัดได้ตั้งแต่-40ºCถึง + 125ºCโดยมีความแม่นยำมากขึ้นเนื่องจากสามารถวัดเศษส่วนขององศาได้โดยเฉพาะอย่างยิ่งมันสามารถชื่นชมการเปลี่ยนแปลงของบวก / ลบ0,5ºC

Pinout คุณสมบัติและแผ่นข้อมูล

DHT11 พินเอาต์

คุณสามารถค้นหาข้อมูลทางเทคนิคเกี่ยวกับไฟล์ DHT11 ในเอกสารข้อมูลของคุณ. ผู้ผลิตอุปกรณ์นี้แต่ละรายสามารถให้ค่าบางอย่างที่อาจแตกต่างกันไปดังนั้นฉันขอแนะนำให้อ่าน PDF ของผู้ผลิตอุปกรณ์ที่คุณซื้อไว้ แม้ว่าค่าส่วนใหญ่อาจดูเหมือนกับคุณ แต่อาจมีการเปลี่ยนแปลงเล็กน้อยจากค่าหนึ่งไปอีกค่าหนึ่ง ลักษณะทางเทคนิคที่สำคัญที่สุดคือ:

  • แหล่งจ่ายไฟ 3,5v ถึง 5v
  • 2,5mA การบริโภคในปัจจุบัน
  • สัญญาณเอาท์พุตดิจิตอล
  • ช่วงอุณหภูมิตั้งแต่0ºCถึง50ºC
  • ความแม่นยำในการวัดอุณหภูมิที่25ºCของการเปลี่ยนแปลงประมาณ2ºC
  • ความละเอียดในการวัดอุณหภูมิคือ 8 บิต1ºC
  • ความชื้นสามารถวัดได้ตั้งแต่ 20% RH ถึง 90% RH
  • แม่นยำสำหรับความชื้น 5% RH สำหรับอุณหภูมิระหว่าง0-50ºC
  • ความละเอียด 1% RH ไม่สามารถเลือกรูปแบบที่ต่ำกว่านั้นได้
  • เอกสารข้อมูลของ Mouser

เกี่ยวกับข้อมูล ออกอากาศในรูปแบบดิจิทัล. ดังนั้นจึงไม่จำเป็นต้องเปลี่ยนจากอนาล็อกเป็นดิจิตอลเหมือนเซ็นเซอร์อื่น ๆ รหัสนั้นซับซ้อนในการเขียน Arduino IDE แต่ในกรณีนี้ไม่จำเป็นและง่ายกว่ามาก แม้ว่าเซ็นเซอร์จะเป็นแบบอนาล็อก แต่ก็มีระบบสำหรับทำการแปลงและสามารถเชื่อมต่อโดยตรงกับอินพุตดิจิทัลของ Arduino

สัญญาณแอนะล็อกซึ่งเป็นรูปแบบของแรงดันไฟฟ้าจากเซ็นเซอร์จะถูกแปลงเป็นรูปแบบดิจิทัลเพื่อส่งไปยังไมโครคอนโทรลเลอร์ Arduino มันถูกส่งเข้ามา เฟรม 40 บิต ที่สอดคล้องกับข้อมูลความชื้นและอุณหภูมิที่บันทึกโดย DHT11 8 บิตสองกลุ่มแรกมีไว้สำหรับความชื้นนั่นคือ 16 บิตที่สำคัญที่สุดของเฟรมนี้ จากนั้นอีก 2 กลุ่มที่เหลือ 8 บิตสำหรับอุณหภูมิ นั่นคือมันมีสองไบต์สำหรับความชื้นและสองไบต์สำหรับอุณหภูมิ ตัวอย่างเช่น:

0011 0101 0000 0010 0001 1000 0000 0000 0011 1001

ในกรณีนี้ 0011 0101 0000 0010 คือค่าความชื้นและ 0001 1000 0000 0000 คืออุณหภูมิ ส่วนแรกใช้สำหรับส่วนจำนวนเต็มและส่วนที่สองสำหรับทศนิยม สำหรับ 0011 1001 นั่นคือ 8 บิตสุดท้ายเป็นความเท่าเทียมกัน เพื่อหลีกเลี่ยงข้อผิดพลาด ด้วยวิธีนี้คุณสามารถตรวจสอบว่าทุกอย่างถูกต้องในระหว่างการส่งสัญญาณ มันสอดคล้องกับผลรวมของบิตก่อนหน้าดังนั้นหากผลรวมเท่ากับพาริตีก็จะถูกต้อง ในตัวอย่างที่ฉันวางไว้คงไม่เป็นเช่นนั้นเพราะอย่างที่คุณเห็นมันไม่สอดคล้องกัน ... นั่นจะบ่งบอกถึงความล้มเหลว

เมื่อทราบแล้วระดับเทคนิคถัดไปของ DHT11 ที่ควรสังเกตคือหมุด ผู้ติดต่อหรือพินเอาต์ ของอุปกรณ์นี้เป็นเรื่องง่ายเนื่องจากมีเพียง 4 เครื่องเท่านั้น หมุดตัวหนึ่งมีไว้สำหรับจ่ายไฟหรือ Vcc อีกหมุดหนึ่งสำหรับ I / O ในการส่งข้อมูลพิน NC ที่ไม่เชื่อมต่อและ GND สำหรับการเชื่อมต่อกราวด์

บูรณาการกับ Arduino

เชื่อมต่อ DHT11 กับ Arduino

เมื่อคุณทราบ pinout ของ DHT11 แล้ว บอร์ด Arduino การเชื่อมต่อนั้นง่ายมาก. โปรดจำไว้ว่าหากคุณเลือกโมดูล DHT11 ที่รวมอยู่ใน PCB หมุดจะเป็นสามตัวเนื่องจาก NC จะถูกลบออกเพื่อให้ง่ายขึ้น สิ่งที่คุณต้องทำคือเชื่อมต่อพินกราวด์กับหนึ่งในการเชื่อมต่อ GND ของ Arduino ตามที่ปรากฏในแผนภาพในภาพก่อนหน้า

ในทางกลับกันขาเพาเวอร์ควรเชื่อมต่อกับ การเชื่อมต่อ 5v จาก Arduino ดังนั้นเซ็นเซอร์จะขับเคลื่อนอย่างเต็มที่ด้วย GND และ Vcc แต่ตอนนี้ข้อมูลหายไป ในการส่งข้อมูลจากเซ็นเซอร์ DHT11 ไปยังบอร์ด Arduino คุณสามารถใช้อินพุตดิจิทัลใดก็ได้เช่น 7 ที่ปรากฏในภาพ ... ตอนนี้คุณมีทุกอย่างพร้อมใช้งานเมื่อคุณสร้าง Arduino IDE ที่จำเป็นแล้ว รหัส ...

หากเซ็นเซอร์อยู่ไกลในโปรเจ็กต์ของคุณและคุณกำลังจะใช้สายเคเบิลที่ยาวกว่า 20 เมตรให้ใช้ตัวต้านทานแบบดึงขึ้น 5k สำหรับสายเคเบิลขนาดใหญ่ควรมีสัดส่วนที่มากกว่า โปรดทราบว่าหากคุณใช้ไฟ 3,5v แทน 5v สายเคเบิลไม่ควรยาวเกิน 20 ซม. เนื่องจากแรงดันไฟฟ้าลดลง

โปรดจำไว้ว่าสิ่งที่พวกเขาแนะนำคือ ทำการวัดทุกๆ 5 วินาที แม้ว่าความถี่ในการสุ่มตัวอย่างที่ DHT11 สามารถทำงานได้จะสูงกว่า แต่ถ้าทำบ่อยขึ้นก็อาจไม่แม่นยำเท่า

รหัสใน Arduino IDE

ตรงไปที่รหัสบอกว่าใน Arduino IDE คุณสามารถใช้ไลบรารีที่มีอยู่จำนวนมากพร้อมคุณสมบัติที่จะทำให้ชีวิตของคุณง่ายขึ้นด้วย DHT11 ตัวอย่างเช่นหนึ่งในนั้นคือสิ่งที่ ให้ Adafruit. โปรดจำไว้ว่าเรามีคำแนะนำสำหรับผู้เริ่มต้นที่เริ่มต้นด้วย Arduino ในรูปแบบ PDF ที่คุณสามารถทำได้ ดาวน์โหลดฟรีจากที่นี่ และสามารถช่วยคุณได้

เมื่อคุณติดตั้งไลบรารีที่เกี่ยวข้องแล้วคุณสามารถแสดงความคิดเห็นได้ ใส่รหัส เพื่อควบคุมเซ็นเซอร์อุณหภูมิและความชื้น DHT11 สำหรับโครงการของคุณด้วย Arduino ตัวอย่างเช่น:

#include "DHT.h"

const int DHTPin = 7;     
 
DHT dht(DHTPin, DHTTYPE);
 
void setup() {
   Serial.begin(9600);
   Serial.println("Midiendo...");
 
   dht.begin();
}
 
void loop() {
   delay(2000);
 
   float h = dht.readHumidity();
   float t = dht.readTemperature();
 
   if (isnan(h) || isnan(t)) {
      Serial.println("Fallo en la lectura del sensor DHT11");
      return;
   }
 
 
   Serial.print("Humedad relativa: ");
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperatura: ");
   Serial.print(t);
   Serial.print(" ºC ");
}


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา