هدف پروژه: ما ان شاء الله می خواهیم با استفاده از کد ویژن که در آن با استفاده از زبان C میتوان برنامه نوشت برنامه ای بنویسیم که با استفاده از دماسنج LM35 دما را اندازه گیری کند و در نمایشگر LM016 نشان دهد و برنامه را در میکروکنترلر ATmega32 ریخته و در آخر برنامه را با استفاده از نرم افزار پروتئوس شبیه سازی می کنیم.
آشنایی با میکرو کنترلر ATmega32
· دارای ۱۳۱ دستور که اکثر آن ها در یک سیکل اجرا می شوند.
· کارایی بالا و توان مصرفی کم
· سرعتی تا 16 mips در فرکانس 16 مگاهرتز
· K۳۲ بایت حافظه فلش داخلی قابل برنامه ریزی که این حافظه تا ۱۰۰۰۰ بار نوشته و پاک می تواند بشود (اصطلاحا پروگرم شود)
· ۱۰۲۴ بایت حافظه eeprom داخلی برای ذخیره اطلاعات که این حافظه هم تا ۱۰۰۰۰ بار نوشته و پاک می توان بشود
· قفل برنامه داخل حافظه
· یک مقایسه کننده آنالوگ داخلی
· ۸ کانال مبدل آنالوگ به دیجیتال
· دارای rtc (نوعی ساعت که تاریخ و زمان را جدا از عملکرد میکرو کنترلر محاسبه می کند)
ریست شدن میکرو کنترلر بعد از روشن شدن آن
· منبع وقفه داخلی و خارجی
· دارای۵ مد در حالت بیکاری برای مصرف کمتر و راندمان و انرژی بیشتر
آشنایی با دماسنج LM35
LM35 یک سنسور انالوگ می باشد که دما را برحسب درجه سانتی گراد به صورت کالیبره شده در خروجی به صورت ولتاژ نمایش می دهد. این سنسور دارای دقت بسیار مناسبی می باشد و با توجه به قابلیت های ان دارای قیمت مناسبی هم می باشد سنسور LM35 دارای تغییرات ولتاژ خروجی خطی نسبت به تغییرات دما می باشد و نیاز به کالیبراسیون ندارد.
قسمت اول پروژه :
کد نویسی با نرم افزار کد ویژن
شروع پروژه: در ابتدا طبق عکس زیر گزینه File را انتخاب کرده و بعد آن روی گزینه new Project کلیک کرده و بعد پنجره confirm باز شده و گزینه yes را انتخاب کرده که با این کار در واقع تقاضای کار با ابزار code wizard را می دهیم
حالا نوبت به انتخاب نوع chip و تنظیم فرکانس آن است که چون ما با میکرو کنترلر ATmega32 کار می کنیم این ریز پردازنده را انتخاب و فرکانس آن را روی ۱ مگا هرتز تنظیم کرده و بعد نوبت به تنظیم port هاست که طبق عکس زیر آنان را تنظیم می کنیم:
هشدار: فقط پورت c و D را تنظیم کرده و به دو پورت دیگر کاری نداریم
حالا نوبت به تنظیم ADC می پردازیم و گزینه مربوط به آن را فعال می کنیم
تعریف: واحد مبدل آنالوگ به دیجیتال (Analog to Digital Converter=ADC) مدار الکترونیکی است که سیگنال های آنالوگ پیوسته آنالوگ را به داده های گسسته دیجیتالی (0 ,1) تبدیل می کند همان طور که می دانید تمامی کیمیت های فیزیکی (از جمله دما در پروژه ما) آنالوگ هستند کمیت های آنالوگ برای پردازش توسط میکرو کنترلر ابتدا می بایست دیجیتال شوند .
تبدیل ولتاژ ورودی آنالوگ به کد دیجیتال متناسب با آن ولتاژ ورودی توسط ADC انجام می گیرد.
و در قدم بعد باید به تنظیم نمایشگر (LCD) بپردازیم که طبق عکس زیر عمل می کنیم:
دیگر تنظیمات لازم را انجام دادیم و باید آنان را ذخیره کنیم برای این کار در قسمت بالا سمت چپ گزینه program و سپس گزینه دوم یعنی Generate, Save and Exit را کلیک می کنیم و به این ترتیب تنظیمات پروژه ما ذخیره می شود. دو پوشه تو در تو ساخته و پروژه را در پوشه درونی ذخیره کرده.
سه بار از ما اجازه ذخیره کردن سه نوع فایل مختلف می خواهد که بهتر است این سه فایل را به یک نام ذخیره کرده
حال نوبت به کد نویسی پروژه رسیده است:
#include <stdio.h>
کتابخانه stdio را ابتدا به منظور استفاده از تابع sprint فراخوانی می کنیم
#define ADC_VREF_TYPE 0xc0
چند خط زیر مربوط به واحد ADC است که توسط خود نرم افزار کد ویژن تولید می شود
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input |( ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
unsigned int a;
char s[15];
توضیح دو خط بالا :
در خط اول متغیر a را تعریف کرده برای ریختن مقادیر خوانده شده از ADC در آن و در خط بعدی تعریف متغیر به جهت تبدیل دما به رشته ای از کاراکتر تا بتوانیم آن را روی Lcd کاراکتری نشان دهیم.
void main(void)
{
PORTC=0x00;
DDRC=0xf7;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83
توضیح چهار خط بالا :
خط اول مربوط به تنظیم LCD است و سه خط بعدی مربوط به رجیستر adc است که خود کد ویژن آن را تولید می کند .
lcd_init(16);
خط بالا مربوط به اتصال نمایشگر است
a=read_adc(0);
a خواندن عددي بين 0 تا 1023 که نشان دهنده مقدار ولتاژ انالوگ روي ان پين ميکرو است و ريختن آن در متغیر است
sprintf(s,"Temp=%d ",a/4);
LCD براي نمايش روي Buffer_LCD تبديل مقادير دما به رشته اي از کاراکتر و ذخيره ان در متغير
lcd_gotoxy(0,0);
رفتن به ستون و سطر 0
lcd_puts(s);
نوشتن متن “s” بر روی Lcd
مجموعه چهار خط اخیر را در while به شرط 1 گذاشته و این کار یعنی این مجموعه همیشه کار کند .
با این کار مرحله کد نویسی هم به اتمام می رسد
و کد ها را ذخیره می کنیم
حالا نوبت به کامپایل کردن ( build All ) می رسد و زمانی که این کار را انجام دهیم به شرط اینکه هیچ خطایی نداشته باشیم پروژه کامپایل شده و بعد در همان پوشه ای که فایل را ذخیره کردیم یک فایل با پسوندcof ساخته می شود این فایل را باید در پروتئوس به میکروکنترلر دهیم.
مرحله دوم پروژه:
شبیه سازی در نرم افزار پروتئوس
ابتدا یک فایل جدید ایجاد کرده و سه تا پنجره بعدی را بدون انجام تغییر خاصی ادامه داده و پنجره آخر را دکمه finish را کلیک کرده و بعد طبق عکس زیر ground و power را آورده
و بعد طبق عکس زیر دماسنج و میکروکنترلر ATmega32 و نمایشگر آورده
و بعد به صورت تصویر مدار را خواهیم بست: