
مقدمه
مدار نشانگر دما با led: در این پروژه می خواهیم به کمک یک ترمیستور دمای محیط را اندازه گیری کنیم و آن را با رنگ نمایش دهیم. رنگ آبی برای حداقل دما (۲۰درجه) و قرمز برای حداکثر دما (۴۰ درجه) ترکیب های مختلف این دو رنگ نیز دمای بین این دو مقدار را نشان خواهد داد.
ترمیستور یک المان الکتریکی از خانواده مقاومت هاست که مقاومت آن با تغییرات دما تغییر می کند به همین دلیل می شود آن را با یک مقاومت موازی کرد و این تغییرات را به ولتاژ تبدیل کنیم و سپس ولتاژ را به دما تبدیل کنیم.

لوازم مورد نیاز
- چهارپایه کاتد مشترک LED RGB
- ترمیستور
- مقاومت ۱۰کیلواهم یک عدد
- مقاومت ۳۳۰اهم سه عدد
- آردوینو UNO
- بردبورد و سیم جامپر
در پروژه مدار نشانگر دما با led می خواهیم به کمک یک ترمیستور دمای محیط را اندازه گیری کنیم و آن را با رنگ نمایش دهیم. رنگ آبی برای حداقل دما (۲۰درجه) و قرمز برای حداکثر دما (۴۰ درجه) ترکیب های مختلف این دو رنگ نیز دمای بین این دو مقدار را نشان خواهد داد.
ترمیستور یک المان الکتریکی از خانواده مقاومت هاست که مقاومت آن با تغییرات دما تغییر می کند به همین دلیل می شود آن را با یک مقاومت موازی کرد و این تغییرات را به ولتاژ تبدیل کنیم و سپس ولتاژ را به دما تبدیل کنیم.
مدار
مدار زیر را ببندید.

شدت نور هر رنگ LED توسط PWM کنترل می شود که مقدار PWM وابسته به دمای خوانده شده از ترمیستور می باشد
در تابع ReadThermistor مقدار ولتاژ خوانده شده را به دما بر حسب سلسیوس(سانتی گراد) تبدیل کردیم و در loop با استفاده از این دما دو رنگ آبی و قرمز LED را کنترل می کنیم. برای آزمایش کردن مدار می توانید ترمیستور را برای گرم شدن میان انگشتان خود بگیرید و برای سرد شدن آن را فوت کنید!
برنامه
#define TEMP_PIN A0
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11
int adc = 0;
int blue = 0, red = 0;
تعریف متغییر ها در مدار نشانگر دما با led
double ReadThermistor(int adc) {
تابع برای خواندن مقادیر سنسور دما
double resistance = ((1024.0/adc) - 1); //calculate from voltage divider, for 10k resistor
double Temp = log(resistance);
محاسبه مقدار دما
// calculate the temperature, in K, using 4 thermistor model/material specific parameters A, B, C, D
// here we use the values for the Sparkfun/Hactronics version of the Vishay 10k NTC thermistor
Temp = 1 / (0.003354016 + 0.0002569850 * Temp + 0.000002620131 * Temp * Temp + 0.00000006383091 * Temp * Temp * Temp);
Temp = Temp - 273.15; // Convert Kelvin to Celsius
تبدیل دما به سلسیوس
return Temp;
}
void setLED(int blue, int red){
analogWrite(BLUE_PIN, blue);
analogWrite(RED_PIN, red);
مقدار دهی به ال ای دی برای تغییر رنگ آن
}
void setup(){
Serial.begin(9600);
راه اندازی سریال مانیتور
pinMode(BLUE_PIN, OUTPUT);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(TEMP_PIN, INPUT);
تعریف پین های ال ای دی و سنسور دما به ترتیب خروجی و ورودی
}
void loop(){
adc = analogRead(TEMP_PIN);
خواندن مقدار سنسور دما
int temp = ReadThermistor(adc);
انجام تبدیل ها برای تبدیل ولتاژ خوانده شده به دما
Serial.println(temp);
چاپ دما
red = map(temp, 20, 40, 0, 255);
blue = 255 - red;
محاسبه مقادیر رنگ های آبی و قرمز
setLED(blue, red);
تنظیم رنگ ها
}
سخن پایانی
هر چقدر که دما بالا رود نور ال ای دی سه رنگ قرمز تر می شود و می توان از آن به عنوان نمایشگر دما استفاده نمود.
امیدوارم از این آموزش لذت برده باشید.