استفاده از سنسور DHT11 بر روی برد آردوینو در پروژه های الکترونیکی
استفاده از سنسور DHT11 بر روی برد آردوینو در پروژه های الکترونیکی

- محدوده رطوبت: ۲۰-۹۰٪ RH
- دقت رطوبت: ± ۵٪ RH
- محدوده دما: ۰-۵۰ درجه سانتی گراد
- دقت دما: ± ۲٪ درجه سانتیگراد
- ولتاژ کار: ۳V تا ۵٫۵V
رطوبت نسبی چیست؟
DHT11 رطوبت نسبی را اندازه گیری می کند. رطوبت نسبی مقدار بخار آب در هوا درمقابل نقطه اشباع بخار آب در هوا است. . در نقطه اشباع، بخار آب شروع به تجمع و انباشت در سطوح تشکیل شبنم می کند. در نقطه اشباع، بخار آب شروع به جمع شدن و تشکیل شبنم در سطوح می دهد. نقطه اشباع با دمای هوا تغییر می کند. هوای سرد می تواند بخار آب کمتری را قبل از اشباع نگه دارد و هوای داغ می تواند بخار آب بیشتری را قبل از اشباع نگه دارد.
فرمول محاسبه رطوبت نسبی:
رطوبت نسبی به صورت درصد بیان می شود. در حالت ۱۰۰٪ RH، تراکم رخ می دهد و در ۰٪ RH، هوا کاملا خشک می شود.چگونه DH11 رطوبت و دما را اندازه گیری می کند؟
DHT11 با اندازه گیری مقاومت الکتریکی بین دو الکترود بخار آب را تشخیص می دهد. قسمت حسگر این سنسور، یک لایه مرطوب است که با الکترودها روی سطح نگه داشته می شود. هنگامی که بخار آب توسط این لایه جذب می شود، یون ها توسط همین بستر آزاد می شوند که هدایت الکتریکی بین الکترودها را افزایش می دهد. تغییر مقاومت بین دو الکترود متناسب با رطوبت نسبی است. رطوبت نسبی بالاتر مقاومت بین الکترودها را کاهش می دهد، در حالی که رطوبت نسبی پایین تر مقاومت بین الکترودها را افزایش می دهد.
DH11 دما را با سنسور دمای NTC (ترمیستور) نصب شده در واحد سطح اندازه گیری می کند. با جدا کردن قسمت پلاستیکی، می توانید الکترود هایی که روی لایه قرار می گیرند را مشاهده کنید.
یک IC در پشت دستگاه واحد اندازه گیری مقاومت را به رطوبت نسبی تبدیل می کند. همچنین ضرایب کالیبراسیون را ذخیره می کند و انتقال سیگنال داده بین DHT11 و Arduino را کنترل می کند:DHT11 فقط از یک سیم سیگنال برای انتقال داده به Arduino استفاده می کند. تغذیه خود را از سیم های جدا شده ۵ ولت و زمین می گیرد. مقاومت خطی ۱۰ کیلئ اهم بین خط سیگنال و خط ۵V مورد نیاز است تا مطمئن شوید که سطح سیگنال به طور پیش فرض باقی می ماند.
دو نسخه متفاوت از DHT11 وجود دارد که ممکن است از هر کدام از آن ها استفاده کنید. یک نوع دارای چهار پین است و نوع دیگر دارای سه پین است که به یک PCB کوچک نصب وصل شده است. نسخه نصب شده روی PCB خوب است زیرا شامل مقاومت ۱۰ کیلو اهم است که مقاومت را برای خط سیگنال بالا می برد. در اینجا برای هر دو نسخه پین ها وجود دارد:
چگونه DHT11 را روی ARDUINO تنظیم کنید؟
اتصال و استفاده از سنسور DHT11 در Arduino بسیار آسان است، اما اتصالات بسته به نوع DH11 که استفاده می کنید، متفاوت است.اتصال سه پین DHT11:
اتصال چهار پین DHT11 به آردوینو
- R1 : مقاومت ۱۰ کیلو اهم پول آپ است.
نمایش رطوبت و دما بر روی سریال مانیتور
قبل از اینکه بتوانید از DHT11 در Arduino استفاده کنید، باید کتابخانه DHTLib را نصب کنید. این کتابخانه تمام توابع مورد نیاز برای دریافت رطوبت و خواندن دما از سنسور را داراست. نصب آن آسان است، فقط فایل DHTLib.zip را در زیر دانلود کنید و IDE آردوینو را باز کنید. سپس بهSketch>Include Library>Add .ZIP Library
بروید و فایل DHTLib.zip
را انتخاب کنید. این فایل را می توانید از اینجا دانلود کنید. پس از نصب، برنامه نمونه زیر را به Arduino آپلود کنید و سریال مانیتور را باز کنید:#include <dht.h> dht DHT; #define DHT11_PIN 7 void setup(){ Serial.begin(9600); } void loop() { int chk = DHT.read11(DHT11_PIN); Serial.print("Temperature = "); Serial.println(DHT.temperature); Serial.print("Humidity = "); Serial.println(DHT.humidity); delay(1000); }شما باید خواندن رطوبت و دما را در فواصل یک ثانیه مشاهده کنید. اگر نمی خواهید از پین ۷ برای سیگنال داده استفاده کنید، می توانید شماره پین را در خط ۵ تغییر دهید،
#define DHT11_PIN 7
نمایش رطوبت و دما را روی LCD
یک روش خوب برای نمایش رطوبت و دما استفاده از LCD 16X2 است. برای انجام این کار، ابتدا آموزش در مورد چگونگی تنظیم صفحه نمایش LCD در Arduino فرا بگیرید، سپس این کد را به Arduino آپلود کنید:#include <dht.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); dht DHT; #define DHT11_PIN 7 void setup(){ lcd.begin(16, 2); } void loop() { int chk = DHT.read11(DHT11_PIN); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(DHT.temperature); lcd.print((char)223); lcd.print("C"); lcd.setCursor(0,1); lcd.print("Humidity: "); lcd.print(DHT.humidity); lcd.print("%"); delay(1000); }
استفاده از داده ها در برنامه های دیگر
اگر شما نمی خواهید رطوبت و درجه حرارت واقعی را به خروجی ارسال کنید، اما برای محاسبه یا کنترل چیزهای دیگر نیاز دارید،کد زیر کمترین مقدار لازم برای راه اندازی سنسور است. شما می توانید این را به برنامه های موجود اضافه کنید وDHT.humidity و DHT.temperature
را به عنوان متغیر در هر تابع استفاده کنید.#include <dht.h> dht DHT; #define DHT11_PIN 7 void setup(){ } void loop() { int chk = DHT.read11(DHT11_PIN); delay(1000); }منبع
- ۹۸/۱۲/۱۶