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

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

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

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

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

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

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

مقاومت‌های 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);

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) است. این عدد در ۵ ضرب می‌شود تا به عدد ۳۰۵ برسیم و یک نقطه دسیمال قبل از آخرین عدد گزاشته می‌شود و در نتیجه بر روی سون سگمنت ۳۰٫۵ درجه سانتی گراد نمایش داده می‌شود.

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

 

منبع:  میکرودیزاینرالکترونیک

 

مطلب قبلیآموزش ساخت آباژور سه بعدی LED در خانه (illusion Lamp)
مطلب بعدیساخت لامپ LED رنگی تزئینی (چراغ خواب چوبی با RGB LED)

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید