آموزش اتصال سنسور LM35 به میکروکنترلر AVR و نمایش دما روی LCD
آموزش اتصال سنسور LM35 به میکروکنترلر AVR و نمایش دما روی LCD ، در دنیای میکروکنترلرها، کار با AVR یکی از جذابترین و رایجترین انتخابهاست. یکی از پروژههای ساده و کاربردی که میتوان با استفاده از میکروکنترلر AVR ساخت، دماسنج دیجیتال است. این پروژه نه تنها برای شروع کار با AVR مناسب است، بلکه میتواند به عنوان یک ابزار مفید در بسیاری از صنایع و خانهها کاربرد داشته باشد. در این مقاله، قصد داریم مراحل ساخت دماسنج دیجیتال با استفاده از سنسور دما (مانند LM35 یا DHT11) و نمایش دادهها روی نمایشگر را به طور کامل بررسی کنیم.
حتماً شما هم با دماسنجهای دیجیتال که در زندگی روزمره از آنها استفاده میکنید، آشنا هستید. این دستگاهها دمای محیط را اندازهگیری کرده و نمایش میدهند. در دنیای الکترونیک و میکروکنترلرها، میتوان به سادگی با استفاده از میکروکنترلرهایی مانند AVR، دماسنج دیجیتال ساخت. در این پروژه، قصد داریم از سنسورهای LM35 و DHT11 برای اندازهگیری دما و نمایش آن بر روی یک LCD استفاده کنیم.
برای کسانی که تازه وارد دنیای AVR شدهاند، این پروژه میتواند به عنوان یک نقطه شروع عالی برای یادگیری اصول میکروکنترلرها و حسگرها باشد. با این حال، حتی اگر تجربهای در این زمینه دارید، این پروژه میتواند فرصت خوبی برای تقویت مهارتهای شما باشد.
انتخاب میکروکنترلر: چرا AVR؟
AVR یکی از خانوادههای معروف میکروکنترلر است که توسط شرکت Atmel (که اکنون بخشی از Microchip است) تولید شده است. این میکروکنترلرها به دلیل قیمت مناسب، قابلیتهای فراوان و همچنین پشتیبانی خوب از زبانهای برنامهنویسی مختلف، یکی از گزینههای محبوب در پروژههای کوچک و متوسط هستند.
در این پروژه، میتوانیم از میکروکنترلرهایی مانند ATmega16 یا ATmega32 استفاده کنیم. این میکروکنترلرها به راحتی با محیطهای برنامهنویسی مانند Atmel Studio یا Arduino IDE قابل برنامهنویسی هستند و امکانات مناسبی برای کار با سنسورها و نمایشگرها دارند.
اجزای مورد نیاز
قبل از شروع به طراحی مدار و نوشتن برنامه، باید اجزای لازم برای ساخت دماسنج دیجیتال را آماده کنید:
- میکروکنترلر AVR (مثل ATmega16 یا ATmega32)
- سنسور دما (LM35 یا DHT11)
- نمایشگر LCD 16×2
- مدار تغذیه (منبع تغذیه 5V)
- مقاومتها و اتصالات
- کابلها و برد بورد برای آزمایش مدار
سنسور دما: LM35 یا DHT11
- LM35: این سنسور دما به طور خطی دما را اندازهگیری میکند و خروجی آن ولتاژی است که با دما رابطه مستقیم دارد. هر درجه سلسیوس ۱۰ میلیولت به ولتاژ خروجی این سنسور اضافه میکند.
- DHT11: این سنسور علاوه بر اندازهگیری دما، میزان رطوبت محیط را نیز اندازهگیری میکند. این سنسور برای پروژههای ساده و کاربردهای عمومی مناسب است.
در این پروژه، ما سنسور LM35 را انتخاب میکنیم چون خروجی آن آنالوگ است و برای آموزش و درک بهتر نحوه کار با ADC (مبدل دیجیتال به آنالوگ) میتواند گزینه بهتری باشد.
طراحی مدار
اتصال سنسور LM35 به AVR
برای اتصال سنسور LM35 به میکروکنترلر، سه پین وجود دارد: VCC، GND و خروجی. پین VCC به تغذیه مثبت (۵ ولت)، پین GND به زمین و پین خروجی به یکی از ورودیهای آنالوگ میکروکنترلر (مانند A0 در ATmega16) وصل میشود.
اتصال نمایشگر LCD به AVR
نمایشگر LCD 16×2 معمولاً از ۱۶ پین برخوردار است که از آنها برای تغذیه، فرمانها و دادهها استفاده میشود. برای ارتباط با میکروکنترلر از دو روش ۴ پین و ۸ پین استفاده میشود. در اینجا، از روش ۴ پین استفاده میکنیم تا تعداد پینهای مورد نیاز را کاهش دهیم. پینهای داده (D4-D7) و پینهای فرمان به میکروکنترلر متصل میشوند.
برنامهنویسی میکروکنترلر
در این مرحله، برنامهنویسی میکروکنترلر را آغاز میکنیم. برای خواندن دادههای سنسور LM35، نیاز داریم که از ADC (مبدل دیجیتال به آنالوگ) میکروکنترلر استفاده کنیم.
مراحل برنامهنویسی:
- راهاندازی ADC: میکروکنترلر ATmega16 از یک مبدل آنالوگ به دیجیتال ۱۰ بیتی برخوردار است. ما باید این مبدل را برای خواندن سیگنال آنالوگ از LM35 پیکربندی کنیم.
- خواندن دادهها از LM35: با استفاده از ADC، مقدار آنالوگ خروجی LM35 را خوانده و به یک مقدار دیجیتال تبدیل میکنیم.
- تبدیل دادهها به دما: از آنجا که هر درجه سلسیوس ۱۰ میلیولت به ولتاژ خروجی LM35 اضافه میکند، میتوانیم دمای محیط را از دادههای ADC محاسبه کنیم.
- نمایش دادهها بر روی LCD: در این مرحله، مقدار دما را به فرمت مناسب (مثلاً درجه سلسیوس) تبدیل کرده و آن را بر روی نمایشگر LCD نمایش میدهیم.
کد نمونه:
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
#define F_CPU 1000000UL
void ADC_init() {
ADMUX = (1<<REFS0); // تنظیم مرجع ولتاژ به AVCC
ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0); // فعال کردن ADC
}
uint16_t ADC_read(uint8_t channel) {
ADMUX = (ADMUX & 0xF0) | (channel & 0x0F); // انتخاب کانال ورودی
ADCSRA |= (1<<ADSC); // شروع تبدیل
while (ADCSRA & (1<<ADSC)); // صبر تا تبدیل تمام شود
return ADC;
}
int main() {
LCD_init();
ADC_init();
while (1) {
uint16_t adc_value = ADC_read(0); // خواندن مقدار از کانال 0
float temperature = (adc_value * 5.0 / 1024.0) * 100; // محاسبه دما
LCD_clear();
LCD_gotoxy(0, 0);
LCD_print("Temp: ");
LCD_printFloat(temperature);
LCD_print(" C");
_delay_ms(1000); // بهروزرسانی هر 1 ثانیه
}
}
در این کد، از توابع برای راهاندازی و خواندن از ADC استفاده کردهایم. همچنین دادههای دما را به فرمت مناسب برای نمایش بر روی LCD تبدیل میکنیم.
سوالات متداول (FAQ)
1. آیا میتوانم از سنسور DHT11 به جای LM35 استفاده کنم؟ بله، شما میتوانید از سنسور DHT11 استفاده کنید، اما باید توجه داشته باشید که این سنسور دادهها را به صورت دیجیتال ارسال میکند و برای کار با آن نیاز به برنامهنویسی متفاوتی دارید.
2. چرا باید از مبدل آنالوگ به دیجیتال استفاده کنیم؟ چون سنسور LM35 یک سیگنال آنالوگ تولید میکند، برای تبدیل این سیگنال به دادههای دیجیتال که میکروکنترلر قادر به پردازش آن باشد، نیاز به یک مبدل آنالوگ به دیجیتال داریم.
3. چگونه میتوانم دما را در واحد فارنهایت نمایش دهم؟ برای تبدیل دما از سلسیوس به فارنهایت، میتوانید از فرمول زیر استفاده کنید:
نتیجهگیری
در این مقاله، ساخت یک دماسنج دیجیتال با میکروکنترلر AVR را به طور کامل توضیح دادیم. این پروژه نه تنها به شما کمک میکند تا با اصول اولیه کار با سنسورها و میکروکنترلرها آشنا شوید، بلکه میتواند شروعی باشد برای پروژههای پیچیدهتر. بهعلاوه، تجربه کار با ADC، LCD و سنسورهای دما میتواند مهارتهای شما را در زمینههای مختلف الکترونیک تقویت کند.
اگر شما هم علاقهمند به یادگیری بیشتر در این زمینه هستید، پیشنهاد میکنم که پروژههای مشابه را امتحان کنید و به تجربههای خود اضافه کنید. همچنین، اگر سوالی دارید یا نیاز به کمک بیشتر دارید، در قسمت نظرات با ما در ارتباط باشید.
آموزش اتصال سنسور LM35 به میکروکنترلر AVR و نمایش دما روی LCD
مطلب پیشنهادی
اموزش راه اندازی ماژول دما و رطوبت DHT11 با اردوینو
آموزش مبدل ADC در میکروکنترلر STM32 تبدیل سیگنالهای آنالوگ به دیجیتال