مهندس موفق الکترونیک

آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو

در این آموزش نحوه‌ی استفاده از سنسور DHT11 و یا DHT22 برای اندازه‌گیری دما و رطوبت را با استفاده از برد آردوینو یاد خواهیم گرفت. شما می­توانید برای جزئیات بیشتر ویدئو زیر را مشاهده کرده و یا آموزش نوشته شده‌ی زیر را مطالعه کنید.

بررسی اجمالی

این سنسور‌ها برای کارهای سرگرم‌کننده الکترونیکی بسیار محبوب هستند زیرا قیمت آنها پایین است اما همچنان عملکرد بسیار خوبی دارند. حال ویژگی‌ها و تفاوت‌های اساسی میان این دو سنسور را بررسی می­‌کنیم.

سنسور DHT22 نسخه گران‌تر میان این سنسور‌ها است که قطعا مشخصه‌های بهتری نیز دارد. بازه قابل اندازه‌گیری دما توسط این سنسور از 40- تا 125+ درجه سلسیوس با دقت 0.5 درجه است. در حالی که این بازه برای DHT11 از صفر تا 50 درجه سلسیوس با دقت 2 درجه است. همچنین DHT22 بازه اندازه‌گیری رطوبت بهتری دارد و از صفر تا 100 درصد را با دقت 2-5 درصد اندازه‌گیری می‌کند. در حالی که مقدار متناظر برای DHT11 برابر 20 الی 80 درصد با دقت 5 درصد است .

آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو

 در دو ویژگی خاص سنسور DHT11 نسبت به DHT22 بهتر است. یکی از آنها نرخ نمونه‌برداری است که برای DHT11 برابر 1Hz و یا یک خواندن در هر ثانیه و برای DHT22 برابر 0.5Hz و یا یک بار خواندن در هر دو ثانیه است. همچنین DHT11 اندازه بدنه کوچک‌تری دارد. ولتاژ کاری برای هر دوی این سنسور‌ها برابر 3 الی 5 ولت و بیشینه جریان مصرفی برابر 2.5 آمپر است .

شما می­توانید قطعات مورد نیاز برای این پروژه را از هر یک از سایت‌های ذکر شده تهیه کنید.

  • سنسور DHT11
  • سنسور DHT22
  • برد آردوینو
  • بِرِد بورد و سیم‌های اتصال
مطلب پیشنهادی:  پروژه ساخت رادار با آردوینو

اساس عملکرد DHT11 / DHT22

در این بخش می­خواهیم روش دقیق کارکرد این سنسور‌ها را بررسی کنیم. آنها از اجزای تشخیص‌دهنده رطوبت، یک سنسور دمای NTC (و یا ترمیستور ) و یک تراشه در بخش پشتی سنسور، تشکیل شده‌اند .

آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو

این سنسور‌ها جهت اندازه‌گیری رطوبت از یک قطعه رطوبت‌سنج که دو الکترود به همراه یک لایه نگهدارنده رطوبت در میان آنها، استفاده می­کنند. به این‌صورت که هنگامی‌که رطوبت تغییر میکند، مقدار رسانایی لایه نگهدارنده و یا مقدار رسانایی میان این دو الکترود تغییر خواهد کرد. این تغییر مقدار مقاومت توسط تراشه نصب شده روی سنسور اندازه‌گیری می­شود. همچنین این تراشه مقدار اندازه‌گیری شده را برای میکروکنترلر‌ های دیگر، آماده خواندن می­‌سازد.

آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو

از طرف دیگر، برای اندازه‌گیری دما این سنسور‌ها از یک سنسور دمای NTC یا یک ترمیستور استفاده می­‌کنند.

ترمیستور در واقع یک مقاومت متغیر است که مقدار مقاومتش متناسب با تغییر دما، تغییر می­‌کند. این سنسورها با پختن مواد نیمه‌هادی مانند سرامیک یا پلیمر و با هدف ایجاد تغییرات بزرگتر در مقاومت فقط با تغییرات جزئی در دما ساخته می‌شوند. عبارت NTC به معنی «ضریب دمایی منفی» است. به این معنا که مقدار مقاومت با افزایش دما، کاهش می‌­یابد.

آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو

شماتیک مدار

سنسور‌های DHTxx چهار پین دارند. تغذیه Vcc، زمین GND، پین داده‌ها و یک پین استفاده نشده که به جایی متصل نمی‌­شود. جهت نگه داشتن پایه داده‌ها در حالت فعال سیگنال و همچنین فعال‌سازی ارتباط بین سنسور و برد آردوینو، از یک مقاومت بالاکش با اندازه‌ی 5 تا 10 کیلو اهم استفاده شده است.

برخی از نسخه‌های این سنسور‌ها همراه یک برد جانبی که داخل آن مقاومت بالاکش نیز تعبیه شده است، عرضه می­‌شوند. این سنسور‌ها 3 پین دارند.

مطلب پیشنهادی:  پروژه تشخیص آلودگی هوا

آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو

این سنسور‌های DHTxx پروتکل تک‌سیم منحصر به فردی برای انتقال داده استفاده می­‌کنند. این پروتکل نیازمند زمان‌بندی و نمودار‌های زمانی بسیار دقیقی جهت دریافت داده‌ها از سنسورها می­‌باشند که آنها را از دیتاشیت سنسور‌ها بدست می­‌آورند. هرچند نیاز نیست که ما نگران نودارهای مربوط به زمان‌بندی‌ها باشیم زیرا از کتابخانه DHT استفاده می­‌کنیم که تمام نیاز مارا برطرف می­‌کند.

کد اصلی

در ابتدا باید کتابخانه DHT را اضافه کنیم که در وبسایت رسمی ‌آردوینو موجود است. سپس شماره پینی که سنسور DHT ما به آن متصل است را تعریف کرده و یک شئ (object ) برای DHT می‌­سازیم.

در بخش تنظیمات در ابتدا باید ارتباط سریال را معرفی نماییم. زیرا برای نمایش نتایج از نمایشگر سریال استفاده خواهیم کرد. با استفاده از تابع ()read22 داده‌ها را از سنسور می­‌خوانیم و مقادیر دما و رطوبت را به ترتیب در متغیر‌های t و h جایگذاری می‌­کنیم. اگر از سنسور DHT11 استفاده می­‌کنید باید از تابع ()read11 جهت خواندن داده‌های سنسور استفاده نمایید و در آخر مقدار متغیر‌های دما و رطوبت روی نمایشگر سریال نشان داده می­‌شوند.

/*  DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */
/*
 * You can find the DHT Library from Arduino official website
 * https://playground.arduino.cc/Main/DHTLib
 */
 
#include <dht.h>

#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object

void setup() {
  Serial.begin(9600);
}
void loop() {
  int readData = DHT.read22(dataPin); // Reads the data from the sensor
  float t = DHT.temperature; // Gets the values of the temperature
  float h = DHT.humidity; // Gets the values of the humidity
  
  // Printing the results on the serial monitor
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print("    Humidity = ");
  Serial.print(h);
  Serial.println(" % ");
  
  delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}

پس از اینکه این کد را روی برد آردوینو بارگزاری کردیم، نتایج دما و رطوبت خوانده شده توسط سنسور روی نمایشگر سریال قابل مشاهده است .

مطلب پیشنهادی:  دستگاه برش فوم CNC با آردوینو

علاوه بر این، در مثال دیگری همین کار را با یک LCD انجام داده‌ایم . به اینصورت که نتایج خروجی در نهایت روی LCD نمایش داده خواهند شد.

/*  DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */
/*
 * You can find the DHT Library from Arduino official website
 * https://playground.arduino.cc/Main/DHTLib
 */

#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <dht.h>


#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
dht DHT;

void setup() {
  lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}

void loop() {
  int readData = DHT.read22(dataPin);
  float t = DHT.temperature;
  float h = DHT.humidity;
  lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
  lcd.print("Temp.: "); // Prints string "Temp." on the LCD
  lcd.print(t); // Prints the temperature value from the sensor
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humi.: ");
  lcd.print(h);
  lcd.print(" %");
  delay(2000);
}

اگر آموزش کار با سنسور‌های دما و رطوبت DHT11 و DHT22 با استفاده از آردوینو براتون مفید واقع شده ما را نیز دعا کنید و اگر خواستین می‌توانید از محتوا‌ی رایگان آموزشی حمایت مالی کنید. همچنین نظرات، پیشنهادات و درخواست‌های خود را در کامنت‌ها ⇓ بنویسید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *