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

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

با سلام خدمت دوستان عزیز امروز براتون یک پروژه جالب با آردوینو  اماده کردم  که امیدوار مفید باشه براتون …..

این مقاله راجع به دماسنج دیجیتال با استفاده از آردوینو است. رنج این دما سنج از ۰ درجه سانتی گراد تا ۹۹٫۹ در جه سانتی گراد است.همچنین این امکان وجود دارد تا دما بر حسب فارنهایت محاسبه شود . سه ترمینال سنسور آنالوگ دما Lm35 به عنوان سنسور دما استفاده می شود . lm35  می تواند رنج دمایی بین -۵۵ درجه سانتی گراد تا +۱۵۵ را اندازه بگیرد . رنج ولتاژ تغذیه از ۴ تا ۳۰ ولت dc و جریان عبوری ۶۰ uA است . Lm35 در بسته to-92 فراهم است و استفاده از اون نیز بسیار سا ده هستش . ولتاژ خروجی از آردوینو  ۱۰ میلی ولت به ازای هر درجه سانتی گراد افزایش می یابد .

به این معنی که اگر دما ۲۵ درجه سانتی گراد باشد ولتاژ سنسور ۲۵۰mV است . مداری که راجع به اون صحبت میکنیم شماتیک آن را در شکل زیر می بینید .

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

سنسور دما از طریق پورت های آنالوگ به آردوینو متصل شده است . پین A0 آردوینو به عنوان تغذیه برای سنسور است و پین A2 آردوینو  به عنوان زمین است . آردوینو ولتاژ خروجی سنسور را توسط ورودی A1  می خواند .پین دیجیتال ۴ آردوینو به عنوان سلکتور بین سانتی گاد و فارنهایت است . ترانزیستورهای درایور دیجیتال Q1 ,Q2,Q3 به پین های ۱و ۲ و۳ آردوینو متصل است .پین های a تا dp سون سگمنت به پین های ۵ تا ۱۲ آ ردوینو متصل است.

مطلب پیشنهادی:  راه اندازی ماژول ws2812 با اردینو

مقاومت های R9,R10 ,R11جریان پایه از پاسخ فرکانس را محدود می کند .مقاومت های R1  تا  R8  جریان عبوری از سگمنت ها را محدود می کند .

 

برنامه :

 

int i;

int backup;

int a;

int unit;

int value;

int vcc=A0;

int sensor=A1;

int gnd=A2;

int select=4;

int disp1=1;

int disp2=2;

int disp3=3;

int segA=5;

int segB=6;

int segC=7;

int segD=8;

int segE=9;

int segF=10;

int segG=11;

int segDP=12;

void setup()

{

pinMode(disp1, OUTPUT);

pinMode(disp2, OUTPUT);

pinMode(disp3, OUTPUT);

pinMode(segA, OUTPUT);

pinMode(segB, OUTPUT);

pinMode(segC, OUTPUT);

pinMode(segD, OUTPUT);

pinMode(segE, OUTPUT);

pinMode(segF, OUTPUT);

pinMode(segG, OUTPUT);

pinMode(segDP, OUTPUT);

pinMode(sensor, INPUT);

pinMode(vcc, OUTPUT);

pinMode(gnd, OUTPUT);

pinMode(select, INPUT);

digitalWrite(vcc, HIGH);

digitalWrite(gnd, LOW);

}

void loop()

{

value=analogRead(sensor); //Reads the sensor LM35

value=value*5;

unit=digitalRead(select); //Reads the selector switch

if(unit==1)

{value=value;} // Output in celcius

else

{value=(value*1.8)+320;} //Output in Fahrenheit

backup=value; //Backs up the content in variable value

for(i=0;i<100;i++) //Loops the display loop 100 times(steadies the display)

{value=backup;

a=value%10;

digitalWrite(disp1,LOW);

digitalWrite(disp2,LOW);

digitalWrite(disp3, HIGH);

digitalWrite(segDP,HIGH);

display(a);

delay(4);

value = value/10;

a = value%10;

digitalWrite(disp3,LOW);

digitalWrite(disp2,HIGH);

digitalWrite(segDP,LOW);

display(a);

delay(4);

value=value/10;

a=value;

digitalWrite(disp2,LOW);

digitalWrite(disp1,HIGH);

digitalWrite(segDP,HIGH);

display(a);

delay(4);

}

}

int display (int a)

{

switch (a)

{

case 0:

digitalWrite(segA, LOW);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

digitalWrite(segD, LOW);

digitalWrite(segE, LOW);

digitalWrite(segF, LOW);

digitalWrite(segG, HIGH);

break;

case 1:

digitalWrite(segA, HIGH);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

مطلب پیشنهادی:  کنترل موتور DC با آردینو

digitalWrite(segD, HIGH);

digitalWrite(segE, HIGH);

digitalWrite(segF, HIGH);

digitalWrite(segG, HIGH);

break;

case 2:

digitalWrite(segA, LOW);

digitalWrite(segB, LOW);

digitalWrite(segC, HIGH);

digitalWrite(segD, LOW);

digitalWrite(segE, LOW);

digitalWrite(segF, HIGH);

digitalWrite(segG, LOW);

break;

case 3:

digitalWrite(segA, LOW);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

digitalWrite(segD, LOW);

digitalWrite(segE, HIGH);

digitalWrite(segF, HIGH);

digitalWrite(segG, LOW);

break;

case 4:

digitalWrite(segA, HIGH);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

digitalWrite(segD, HIGH);

digitalWrite(segE, HIGH);

digitalWrite(segF, LOW);

digitalWrite(segG, LOW);

break;

case 5:

digitalWrite(segA, LOW);

digitalWrite(segB, HIGH);

digitalWrite(segC, LOW);

digitalWrite(segD, LOW);

digitalWrite(segE, HIGH);

digitalWrite(segF, LOW);

digitalWrite(segG, LOW);

break;

case 6:

digitalWrite(segA, LOW);

digitalWrite(segB, HIGH);

digitalWrite(segC, LOW);

digitalWrite(segD, LOW);

digitalWrite(segE, LOW);

digitalWrite(segF, LOW);

); digitalWrite(segG, LOW

break;

case 7:

digitalWrite(segA, LOW);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

digitalWrite(segD, HIGH);

digitalWrite(segE, HIGH);

digitalWrite(segF, HIGH);

digitalWrite(segG, HIGH);

break;

case 8:

digitalWrite(segA, LOW);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

digitalWrite(segD, LOW);

digitalWrite(segE, LOW);

digitalWrite(segF, LOW);

digitalWrite(segG, LOW);

break;

case 9:

digitalWrite(segA, LOW);

digitalWrite(segB, LOW);

digitalWrite(segC, LOW);

digitalWrite(segD, LOW);

digitalWrite(segE, HIGH);

digitalWrite(segF, LOW);

digitalWrite(segG, LOW);

break;

}}

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

درباره برنامه :

ولتاژ خروجی سنسور توسط تابع خواندن آنالوگ بررسی می شود . تابع خواندن آنالوگ ولتاژ ورودی آنالوگ را می خواند و ان را به مقدار دیجیتال بین ۰ و ۱۰۲۳ تبدیل می کند. مقدار کد = مقدار دیجیتال خوانده شده سنسور این ولتاژ را می خواند و آن را به مقدار دیجیتال تبدبل می کند و آن را در متغیری به نام “value” می ریزد. بنابراین برای ۳۰ درجه سانتی گراد عدد در متغیر “value” برابر ۳۰۰mV/(5/1023) است . این عدد در ۵ ضرب می شود تا به عدد ۳۰۵ برسیم و یک نقطه دسیمال قبل از اخرین عدد گزاشته می شود و در نتیجه بر روی سون سگمنت ۳۰٫۵ درجه سانتی گراد نمایش داده می شود.

مطلب پیشنهادی:  ساخت ولتمتر ، آمپرمتر و وات متر با آردوینو

این برنامه همچنین حالت  پین دیجیتال ۴ را چک می کند و اگر پین یک باشد خروجی به صورت سانتی گراد نمایش داده می شود و اگر نه به شکل فارنهایت نمایش داده می شود .

در پایان خوشحال میشم که دوستان اگر انتقاد یا پیشنهادی راجع مطلب دارند در قسمت نظرات بیان کنید.

مطالب مرتبط :

کنترل موتور DC با آردینو

پروژه دماسنج و رطوبت سنج با سنسور DHT11

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

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

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

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

2 دیدگاه

  1. امیر قاسم نژاد

    سلام.چطور میشه همچین ماژولی رو به صورت بلوتوث ساخت.مثلا اندازه گیری دمای بدن نوزاد و ارسال اطلاعات به نمایشگر یا هرچیز دیگه به صورت بیسیم.ممنون میشم راهنمایی کنین❤?خیلی بهش نیاز دارم