این سری آموزش های میکروکنترلر AVR (راه اندازی دماسنج LM35) که به جرات می توان آنها را کامل ترین آموزش های موجود دانست با صرف هزینه زیاد و با کیفیت و جزئیات بالا توسط جناب آقای پوریا تومانی تهیه شده است و به صورت رایگان در اختیار عموم قرار گرفته است.
آشنایی با سنسور LM35 :
همانطور که گفته شد سنسور دماسنج LM35 یک سنسور آنالوگ می باشد که دما را برحسب درجه سانتی گراد به صورت کالیبره شده در خروجی به صورت ولتاژ نمایش می دهد. این سنسور دارای دقت بسیار مناسبی می باشد و با توجه به قابلیت های آن دارای قیمت مناسبی هم می باشد. سنسور LM35 دارای تغییرات ولتاژ خروجی خطی نسبت به تغییرات دما می باشد و نیاز به کالیبراسیون ندارد.
ویژگی ها:
- کالیبره شده برای درجه سانتی گراد (سلسیوس)
- تغییرات خطی ولتاژ خروجی به ازای هر درجه، ۱۰mV
- در دمای ۲۵ درجه سانتی گراد دارای دقت ۰٫۵ درجه
- محدوده اندازه گیری بین -۵۵ تا ۱۵۰ درجه سانتی گراد
- مناسب برای کاربرد های کنترل از راه دور
- کم هزینه با توجه به ویژگی ها
- محدوده عملکرد ولتاژی بین ۴ تا ۳۰ ولت
- جریان درین کمتر از ۶ میکرو آمپر
- ایجاد گرمای بسیار کم توسط خود سنسور(اتلاف گرمایی)، حدود ۰٫۰۸ درجه سانتی گراد
- امپدانس خروجی کم، برای بار یک میلی آمپر حدود ۰٫۱ اهم
وسایل مورد نیاز برای پروژه:
سیم جامپر
بردبرد
ATMEGA32
LM35
LCD2*16
ابتدا مدار را در پروتوس میبندیم :
ابتدا پروتوس راباز نموده یک فایل جدید می سازیم سپس طبق مدار زیر درپروتوس طراحی کنید برای دانلود پروتوس اینجا کلیک کنید.(پروتوس یک نرم افزار شبیح سازی کامل وعالی)
حال نوبت به کد پروژه میباشد:
در ابتدای کد همانطور که در قسمت قبل هم توضیح دادیم ، کتابخانه های مورد نیاز را فراخوانی میکنیم.در ابتدا فرکانس کاری میکروکنترلر را 8 مگا هرتز در نظر میگیریم. کتابخانه میکروکنترلر مگا 32 تنظیم میکنیم.
حال lcdکارکتری 2در16راانتخواب میکنیم وپایه های آن راروی پورت دی میگذاریم.
adcراتنظیم میکنیم وروی 62.500khzمیگذاریم.
کد پروژه رادرکدویژن کپی پیست کنید وبرنامه را کامپایل کنید.
#include <mega32.h> #include <delay.h> #include <alcd.h> #include <stdio.h> #define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR)) unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | ADC_VREF_TYPE; delay_us(10); ADCSRA|=(1<<ADSC); while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCW; } void main(void) { char a=0 ; char Temperature ; char Buffer_LCD[17]; DDRA=(1<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); DDRD=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); ADMUX=ADC_VREF_TYPE; ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (0<<ADPS0); SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0); lcd_init(16); lcd_clear(); while (1) { a=read_adc(0); Temperature=(a*4.8828125)/10; sprintf(Buffer_LCD,"Dma =%d ",Temperature); lcd_gotoxy(0,0); lcd_puts(Buffer_LCD); lcd_gotoxy(9,0); lcd_putsf("C"); delay_ms(500); } }
فیلم نحوه ساخت پروژه در کدویژن:
فیلم نحوه کار مداردرشبیه ساز:
فیلم نحوه کار به صورت عملی :
برای دانلود مدار اینجا کلیک کنید: