معماری

راه اندازی سنسور DHT22 در کدویژن

در این پروژه به کمک سنسور DHT22 (که تشکیل شده از یک سنسور رطوبت سنج و دماسنج با دقت بالا.) و میکروکنترول ATMEGA8a و مانیتور LCD 16X2  یک  دماسنج و رطوبت سنج راه اندازه کرده ایم .

سنسور DHT22 درون خود یک چیپ دارد که اطلاعات را بصورت دیجیتال فقط بر روی یک پایه برای میکروکنترلر ارسال می کنند.این سنسور می تواند دمایی مابین -۴۰ تا ۸۰ درجه سانتی گراد و همچنین  رطوبت ۰ تا ۱۰۰ درصد را اندازه بگیرید. به منظور خواندن اطلاعات از این سنسور کتابخانه ای طراحی کرده ایم تا با استفاده از آن در طراحی پروژه های مختلف فقط با فراخوانی کتابخانه ،اطلاعات سنسور را آنالیز کنیم.

 

پایه شماره ۱ سنسور را به VCC (یا همان ولتاژ +۵ بعد از رگولاتور) ، پایه DATA را به پایه شماره ۶ میکرو و پایه شماره ۴ را هم به GND یا زمین مدار وصل کنید.مقاومت ۴٫۷ رو از پایه VCC به سمت پایه DATA سنسور وصل کنید .
 و همینطور یک خازن ۱۰۴ به منظور نویز گیری به VCC و GND میکروکنترولر وصل کنید و در صورت امکان یک خازن ۱۰۴ نیز به پایه VCC و DATA سنسور هم وصل کنید بعد کریستال داخلی میکرو را بروی ۸ مگاهرتز تنظیم کنید.
رطوبت سنج هر یک ثانیه یک بار اطلاعات را به میکرو ارسال می کند، لذا در برنامه هر ۲ ثانیه یک بار دما و رطوبت را آنالیز می کنیم.

 قسمت کدویژن

اکنون با استفاده از کد ویزارد یک پروژه جدید با LCD کاراکتری ایجاد کنید.دقت داشته باشید که پایه D.4 میکرو در اختیار سنسور گذاشته خواهد شد.بعد از ذخیره پروژه، فایل کتابخانه (که می توانید از انتهای پست دانلود کنید) را درون پوشه پروژه کپی کنید.

حال در هر قسمت برنامه که خواستید میتوانید با فراخوانی کتابخانه با استفاده از قطعه کد زیر مقدار دما و رطوبت آنالیز شده از سنسور توسط کتابخانه را درون دو متغیر ذخیره کنید.

 float temperature,humidity;
 dht22_read(&temperature,&humidity); 

دقت داشته باشید که متغیر هایی که قرار است خروجی تابع در آن قرار بگیرد حتما از نوع اعشاری باشد.

اکنون با استفاه از کد زیر میتوان مقدار رطوبت و دما را بصورت مجزا بر روی یک LCD نمایش داد.

#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
#include "DHT22.h"
void main(void)
{
float temperature,humidity;
char str[10],temp[10],hum[10];
lcd_init(16);
while (1)
      { 
      if(dht22_read(&temperature,&humidity) == -40) 
        {
        lcd_putsf("DHT22  ERROR");
        }
      else       
        {
        ftoa(temperature,1,temp);                 
        ftoa(humidity,1,hum);  
        sprintf(str,"Temp=%s,Hum=%s %",temp,hum);
        lcd_clear();                                                      
        lcd_gotoxy(0,0); 
        lcd_puts(str);       
        }
             
      delay_ms(2000);  
      }        
}

دانلوذ فایل های پروژه

کتابخانه DHT22

فایل کدویژن

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

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

قالب وردپرس