ساخت پروژه دماسنج دیجیتال با AVR و سنسور دما
ساخت پروژه دماسنج دیجیتال با AVR و سنسور دما در این مقاله به بررسی ساخت یک دماسنج دیجیتال با استفاده از میکروکنترلر AVR و سنسور دمای LM35 میپردازیم. این پروژه نه تنها به شما کمک میکند تا با میکروکنترلرهای AVR و نحوه برنامهنویسی آنها آشنا شوید، بلکه درک عمیقتری از نحوه کارکرد سنسورهای دما و چگونگی نمایش دادهها روی یک نمایشگر دیجیتال ساده خواهید داشت.
ابزار و قطعات مورد نیاز
- میکروکنترلر AVR (مانند ATmega32 یا ATmega16): برای کنترل و پردازش دادهها.
- سنسور دما LM35: این سنسور قادر است دما را با دقت بالا اندازهگیری کند و خروجی آن به صورت ولتاژ است.
- نمایشگر LCD (مانند LCD 16×2): برای نمایش دمای اندازهگیری شده.
- مقاومتها و خازنها: برای تنظیم ولتاژ و حذف نویز.
- منبع تغذیه 5 ولت: برای تأمین انرژی مدار.
- برد بورد: برای اتصال قطعات و پیادهسازی مدار.
- سیمهای جامپر: برای اتصال قطعات روی برد بورد.
- کامپایلر AVR (مانند CodeVisionAVR یا Atmel Studio): برای نوشتن و آپلود کد.
مراحل انجام پروژه
1. آشنایی با سنسور LM35
سنسور دما LM35 یک سنسور دقیق و ساده است که دما را به ولتاژ تبدیل میکند. خروجی آن به ازای هر درجه سانتیگراد، 10 میلیولت است. برای مثال، اگر دما 25 درجه سانتیگراد باشد، خروجی سنسور 250 میلیولت خواهد بود.
پایههای سنسور به شرح زیر هستند:
- پایه اول (VCC): به ولتاژ تغذیه 5 ولت متصل میشود.
- پایه دوم (Output): خروجی سنسور که باید به ADC میکروکنترلر متصل شود.
- پایه سوم (GND): به زمین مدار متصل میشود.
2. اتصال سنسور LM35 به میکروکنترلر AVR
برای خواندن دادههای خروجی سنسور LM35، از مبدل آنالوگ به دیجیتال (ADC) داخلی میکروکنترلر AVR استفاده میکنیم. ابتدا پایه خروجی سنسور (پایه وسط) را به یکی از پایههای ADC میکروکنترلر متصل میکنیم. پایه VCC به 5 ولت و پایه GND به زمین وصل میشود.
در این مثال فرض میکنیم که خروجی سنسور به پین ADC0 (پایه A0) میکروکنترلر ATmega32 متصل شده است.
3. برنامهنویسی میکروکنترلر
ابتدا باید ADC میکروکنترلر را فعال کنیم تا بتوانیم ولتاژ خروجی سنسور را به دمای قابل خواندن تبدیل کنیم. سپس از دستورهای محاسباتی استفاده میکنیم تا دمای اندازهگیری شده را از ولتاژ خروجی سنسور محاسبه کنیم. به ازای هر درجه سانتیگراد، ولتاژ خروجی 10 میلیولت است، بنابراین کافی است مقدار خوانده شده از ADC را در ضریبی ضرب کنیم تا دمای صحیح به دست آید.
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h" // کتابخانه نمایشگر
void adc_init() {
// تنظیمات ADC
ADMUX = (1<<REFS0); // استفاده از ولتاژ مرجع داخلی
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // فعال کردن ADC و تنظیم تقسیمکننده
}
uint16_t adc_read(uint8_t ch) {
// خواندن مقدار ADC
ch &= 0b00000111; // انتخاب کانال ADC
ADMUX = (ADMUX & 0xF8) | ch; // انتخاب کانال
ADCSRA |= (1<<ADSC); // شروع تبدیل
while(ADCSRA & (1<<ADSC)); // انتظار برای اتمام تبدیل
return (ADC);
}
int main(void) {
uint16_t adc_value;
float temperature;
lcd_init(LCD_DISP_ON); // راهاندازی LCD
adc_init(); // راهاندازی ADC
while (1) {
adc_value = adc_read(0); // خواندن مقدار ADC از کانال 0
temperature = (adc_value * 5.0 / 1024.0) * 100.0; // محاسبه دما
lcd_clrscr(); // پاک کردن نمایشگر
lcd_gotoxy(0, 0); // تنظیم مکاننما
lcd_printf("Temp: %.2f C", temperature); // نمایش دما
_delay_ms(1000); // تأخیر یک ثانیه
}
}
توضیحات کد:
- ابتدا ADC با استفاده از دستور
adc_init()
راهاندازی میشود. - در تابع
adc_read()
مقدار ولتاژ خروجی سنسور از طریق ADC خوانده میشود. - در حلقه اصلی، مقدار ADC به دما تبدیل شده و روی نمایشگر LCD نمایش داده میشود.
4. اتصال LCD به AVR
نمایشگر LCD دارای 16 پین است که 8 پین آن برای دادهها و بقیه برای کنترل و تغذیه استفاده میشود. در این پروژه از مود 4 بیتی LCD استفاده میکنیم تا از تعداد کمتری پین برای ارتباط با میکروکنترلر استفاده شود.
اتصال پایههای LCD به میکروکنترلر:
- RS: به یکی از پینهای میکروکنترلر (مثلاً PORTB0) متصل شود.
- E: به پین دیگر میکروکنترلر (مثلاً PORTB1) متصل شود.
- D4 تا D7: به چهار پین از پورت (مثلاً PORTB2 تا PORTB5) متصل شوند.
5. نتیجه نهایی
پس از اجرای کد، دمای محیط توسط سنسور LM35 اندازهگیری شده و به وسیله میکروکنترلر AVR پردازش و بر روی نمایشگر LCD نمایش داده میشود. هر بار که دما تغییر کند، نمایشگر دمای جدید را به صورت دقیق نشان میدهد.
جمعبندی
در این پروژه ساده ولی کاربردی، با استفاده از سنسور LM35 و میکروکنترلر AVR یک دماسنج دیجیتال ساختیم. این پروژه به شما کمک میکند تا به صورت عملی با نحوه کار سنسورها، ADC و نمایشگرهای LCD در میکروکنترلرها آشنا شوید و پایههای محکمتری برای پروژههای پیشرفتهتر در زمینه الکترونیک و سیستمهای تعبیه شده ایجاد کنید.
ساخت پروژه دماسنج دیجیتال با AVR و سنسور دما