جستجو
برای جستجو متن مورد نظر وارد کنید و Enter بزنید برای بستن Esc بزنید.
در بعضی از پروژه ها نیاز به اندازه گیری دما برای کنترل دمای محیط خواهیم داشت در این اموزش می خواهیم ساخت یک دماسنج با اردوینو را شرح بدهیم که از 3 سنسور مختلف ارزان قیمت LM75 , LM35 و DHT11 برای اندازه گیری استفاده کرده ایم.
در تصویر زیر نحوه اتصال سنسورها و نمایشگر به میکروکنترلر را مشاهده می کنید:

در ادامه نیاز است تا کتابخانه های سنسورها در پوشه کتابخانه اردوینو کپی شوند:
دو پوشه Temperature_LM75_Derived-master و DHTlib باید درون پوشه کتابخانه های اردوینو که در مسیر زیر هستند کپی شوند.
Documents\Arduino\libraries
در ادامه برنامه مربوطه را شرح می دهیم :
#include <LiquidCrystal.h>
#include <dht.h>
#include <Temperature_LM75_Derived.h>
کتابخانه نمایشگر و سنسورها را فراخوانی می کنیم.چون سنسور LM35 یک سنسور با واسط انالوگی می باشد و مستقیم باید عملیات خواندن از ADC میکروکنترلر را انجام دهیم نیاز به کتابخانه جانبی برای راه اندازی ان نداریم.
///////////////////////// lcd pins ////////////////
#define rs 8
#define e 9
#define db4 10
#define db5 11
#define db6 12
#define db7 13
LiquidCrystal lcd(rs, e, db4, db5, db6, db7);
///////////////////////////////////////////////////
یک شئی از کلاس نمایشگر ایجاد می کنیم و پایه های نمایشگر متصل به اردوینو را به ان معرفی می نماییم. شما می توانید از هر پایه دلخواه اردوینو استفاده نمایید.
#define DHT_PIN 7
dht DHT;
مشخص کردن پایه سنسور DHT در اردوینو و تعریف شئی از کلاس DHT
///////////////////////////////////////////////////
Generic_LM75 LM75;
تعریف شئی از کلاس LM75. چون رابط این سنسور i2c می باشد و پایه های ان نیاز به تعریف کردن ندارد.
//////////////////////////////////////////////////////////////////////
#define delays 400
مشخص کردن مقدار تاخیر دلخواه برای نمایش روی lcd کارکتری
void lcd_init(){
وظیفه این تابع پاکسازی lcd از متن های قبلی می باشد.
lcd.clear();
lcd.print("DamaSanje :");
lcd.setCursor(0,1);
}
void setup() {
lcd.begin(16, 2);
تعریف ستون و سطر نمایشگر
lcd_init();
}
void loop() {
delay(delays);
///////////////////////////////////////
unsigned int rawTemp = analogRead(A0);
خواندن مقدار خام از سنسور LM35 و انجام عملیات ریاضی برای رسیدن به دمای واقعی
float tempX = rawTemp / 204.8;
تبدیل مقدار خام قرائت شده از مبدل انالوگ به دیجیتال به مقدار ولتاژ واقعی
Real voltage = (ADC Read Value) * (Reference Voltage) / ADC Resolution
رزولوشن ADC میکروکنترلر برد اردوینو UNO 10 بیتی می باشد بنابراین دقت ان در مبنای دودویی 1024 می باشد.
ولتاژ رفرنس مبدل انالوگ به دیجیتال به ولتاژ 5 ولت متصل می باشد.
چون مقدار رزولوشن و رفرنس ثابت است ما ان را ساده کرده ایم و عدد 204.8 از ساده سازی عدد 5 بر 1024 بدست امده است.
سنسور lm35 به ازای هر یک درجه دمای محیط مقدار تقریبی 10 میلی ولت تولید خواهد کرد.
ما باید مقدار کوچک بدست امده ولتاژ از رابطه بالا را ضربدر 1000 نماییم تا مقدار ما به میلی ولت تبدیل شود و سپس ان را بر 10 تقسیم نماییم تا به درجه سانتی گراد درست برسیم.با ساده سازی عدد 1000 و 10 کافی است مقدار ولتاژ خود را در 100 ضرب نماییم.
tempX = tempX * 100;
lcd_init();
lcd.print("LM35: ");
lcd.print(tempX);
و سپس نمایش مقدار روی نمایشگر
///////////////////////////////////////
delay(delays);
///////////////////////////////////////
DHT.read11(DHT_PIN);
خواندن از سنسور DHT
int temp = DHT.temperature;
این سنسور قابلیت اندازه گیری رطوبت را نیز دارد که در این پروژه ما فقط دمای خوانده شده را روی نمایشگر نشان می دهیم.
lcd_init();
lcd.print("DHT: ");
lcd.print(temp);
///////////////////////////////////////
delay(delays);
////////////////////////////////////
temp = LM75.readTemperatureC();
lcd_init();
lcd.print("LM75: ");
lcd.print(temp);
و در اخر به راحتی از سنسور LM75 دما را می خوانیم و روی نمایشگر نشان می دهیم.
////////////////////////////////////
{

در اخر می توانید فایل شبیه سازی بهمراه سورس برنامه و کتابخانه های مربوطه را دانلود نمایید: