دماسنج دیجیتال با استفاده از آردوینو و سنسور دمای LM35

از خیلی قبل ها پیش از دماسنج ها برای اندازه گیری دما استفاده می شد. در این پروژه ما دماسنج دیجیتالی مبتنی بر آردوینو را برای نمایش دمای محیط و تغییرات دما بر LCD در زمان حقیقی ساخته ایم. این مدار می تواند در خانه ها، دفاتر، صنایع و غیره برای اندازه گیری درجه حرارت استفاده شود. این پروژه بر اساس آردوینو است که در اینجا با سنسور دمای LM35 و یک صفحه نمایش ۱۶×۲ ارتباط برقرار می کند. ما می توانیم این دماسنج مبتنی بر آردوینو، را به سه بخش تقسیم کنیم . اول،  دما را با استفاده از سنسور دما LM 35 حس می کند، بخش دوم، مقدار درجه حرارت را به مقادیر مناسب در مقیاس سانتیگراد تبدیل می کند که توسط آردوینو انجام می شود، و آخرین قسمت سیستم نمایش دما بر LCD است، همانطوری که در شکل زیر نشان داده شده است.

در این سنسور دمای  LM35 با آردوینوی در تعامل هستند، آردوینو  Uno برای کنترل کل روند استفاده می شود. یک سنسور دمای LM35 برای حساسیت دمای محیط استفاده می شود که درجه حرارت ۱ درجه سانتی گراد را در هر تغییر ۱۰ mV در پایه خروجی آن می دهد. شما با استفاده از Vcc در پایه ۱ و زمین در پایه ۳ و ولتاژ خروجی در پایه ۲ سنسور LM35،  می توانید به راحتی آن را با ولتاژ سنجید. برای مثال اگر ولتاژ خروجی سنسور LM35 250mv باشد، یعنی درجه حرارت حدود ۲۵ درجه سانتیگراد است.

آردوینو ولتاژ خروجی سنسور دما را با استفاده از پایه آنالوگ A0 می خواند و محاسبات را انجام می دهد تا این مقادیر آنالوگ را به مقدار دیجیتال دمای فعلی تبدیل کند. پس از محاسبه، آردوینو این محاسبات یا درجه حرارت را با استفاده از دستورات مناسب LCD به LCD 16×2 می فرستد.

 

قطعات مدار

آردوینو

در این پروژه ما یک میکروکنترلر برای کنترل کل فرایند سیستم که برد آردوینو است استفاده می کنیم. در واقع آردوینو یک کنترلر ساده نیست، زیرا دارای یک سیستم عامل یا بوت لودر است که بر روی کنترل کننده های AVR اجرا می شود. آردوینو یک پلت فرم سخت افزاری منبع باز است و هدف آن توسعه پروژه هاست. انواع مختلفی از بردهای آردوینو موجود است، مانند آردوینو UNO، آردوینو  mega، (arduino pro mini) آردوینو پرو مینی، لیلی پد (Lilypad) و غیره در بازار موجود هست، یا اینکه شما می توانید یکی را توسط خودتان بسازید.

سنسور دما LM35

LM35 یک سنسور دمای ۳ پایه است که به ازای هر  ۱ درجه سانتیگراد ۱۰ میلی ولت در خروجی تغییرات می دهد. این سنسور تا دمای ۱۵۰ درجه سانتیگراد احساس می کند. پایه شماره ۱ سنسور lm35، Vcc است، پایه دوم خروجی است و سومین پایه زمین است.

 نام

 عملکرد

 شماره پایه

 Vcc

ولتاژ تغذیه؛ (۵V (+35V to -2V

۱

 خروجی

ولتاژ خروجی: (+۶V to -1V)

۲

 زمین

زمین: (۰V)

۳

 

LCD

یک LCD  ۱۶×۲ در این پروژه به کار می رود، زیرا ارزان است، به راحتی قابل دسترس، کوچک ودارای رابط کاربری راحتی است. ۱۶×۲ دارای دو ردیف و ۱۶ ستون است که بدین معنی است که ۱۶ بلوک از نقاط ۵×۸ تشکیل شده است. ۱۶ پایه برای اتصالات که در آن ۸ بیت داده D0-تا D7 و ۳ بیت کنترل یعنی RS، RW و EN است. بقیه پایه ها برای تامین، کنترل روشنایی و نور پس زمینه استفاده می شود.

منبع تغذیه

یرد آردوینو در حال حاضر دارای یک بخش تامین برق داخلی است. در اینجا فقط باید یک آداپتور ۹ ولت یا ۱۲ ولت به برد وصل کنیم.

 

مدار و توضیح آن

دیاگرام مدار برای دماسنج دیجیتال با استفاده از سنسور دمای LM35، در شکل بالا نشان داده شده است. اتصالات را با دقت انجام دهید، همانطور که در نقشه نشان داده شده است. در اینجا یک LCD 16×2 به طور مستقیم به آردوینو در حالت ۴ بیتی متصل می شود. پین های داده LCD یعنی RS، EN، D4، D5، D6، D7 به پایه ۷، ۶، ۵، ۴، ۳، ۲ دیجیتال آردوینو متصل می شوند. سنسور دما LM35 نیز به پایه آنالوگ A0 از آردوینو متصل می شود که به ازای ۱ درجه سانتیگراد حرارت ۱۰ میلی ولت تغییر در پایه خروجی تولید می کند.

کد و توضیح آردوینو و  LM35

برای نوشتن کد دماسنج دیجیتال، ما باید کد را برای آردوینو ، سنسور دمای LM35 و تعامل ماژول LCD 16×2 بنویسیم. ابتدا ما کتابخانه را برای یک LCD قرار می دهیم و سپس داده ها و پایه ها را برای سنسوردما و LCD تعریف می کنیم.

مثال

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

float analog_value=analogRead(analog_pin);

float Temperature=analog_value*factor*100

where

factor=5/1023

analog_value= output of temperature sensor

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

کد

/*———–Arduino LM35 Code————-*/

/*———–Digital Thermometer Using Arduino————-*/

#include<LiquidCrystal.h>

LiquidCrystal lcd(7,6,5,4,3,2);

#define sensor A0

byte degree[8] = 

              {

                ۰b00011,

                ۰b00011,

                ۰b00000,

                ۰b00000,

                ۰b00000,

                ۰b00000,

                ۰b00000,

                ۰b00000

              };

void setup()

{

  lcd.begin(16,2);

  lcd.createChar(1, degree);

  lcd.setCursor(0,0);

  lcd.print(”    Digital    “);

  lcd.setCursor(0,1);

  lcd.print(”  Thermometer   “);

  delay(4000);

  lcd.clear();

  lcd.print(” Circuit Digest  “);

  delay(4000);

  lcd.clear();

}

void loop()

{

  /*———Temperature——-*/

     float reading=analogRead(sensor);

     float temperature=reading*(5.0/1023.0)*100;

     delay(10);

  

  /*——Display Result——*/

    lcd.clear();

    lcd.setCursor(2,0);

    lcd.print(“Temperature”);

    lcd.setCursor(4,1);

    lcd.print(temperature);

    lcd.write(1);

    lcd.print(“C”);

    delay(1000);

}

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

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