طراحی دماسنج با استفاده از سنسور LM35

هدف پروژه: ما ان شاء الله می خواهیم با استفاده از کد ویژن که در آن با استفاده از زبان C میتوان برنامه نوشت برنامه ای بنویسیم که با استفاده از دماسنج LM35 دما را اندازه گیری کند و در نمایشگر LM016 نشان دهد و برنامه را در میکروکنترلر ATmega32 ریخته و در آخر برنامه را با استفاده از نرم افزار پروتئوس شبیه سازی می کنیم.آشنایی با میکرو کنترلر ATmega32· دارای ۱۳۱ دستور که اکثر آن ها در یک سیکل اجرا می شوند.· کارایی بالا و توان مصرفی کم· سرعتی تا 16 mips در فرکانس 16 مگاهرتز· K۳۲ بایت حافظه فلش داخلی قابل برنامه ریزی که این حافظه تا ۱۰۰۰۰ بار نوشته و پاک می تواند بشود (اصطلاحا پروگرم شود)· ۱۰۲۴ بایت حافظه eeprom داخلی برای ذخیره اطلاعات که این حافظه هم تا ۱۰۰۰۰ بار نوشته و پاک می توان بشود· قفل برنامه داخل حافظه· یک مقایسه کننده آنالوگ داخلی· ۸ کانال مبدل آنالوگ به دیجیتال· دارای rtc (نوعی ساعت که تاریخ و زمان را جدا از عملکرد میکرو کنترلر محاسبه می کند)ریست شدن میکرو کنترلر بعد از روشن شدن آن· منبع وقفه داخلی و خارجی· دارای۵ مد در حالت بیکاری برای مصرف کمتر و راندمان و انرژی بیشترآشنایی با دماسنج LM35LM35 یک سنسور انالوگ می باشد که دما را برحسب درجه سانتی گراد به صورت کالیبره شده در خروجی به صورت ولتاژ نمایش می دهد. این سنسور دارای دقت بسیار مناسبی می باشد و با توجه به قابلیت های ان دارای قیمت مناسبی هم می باشد سنسور 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 voltagedelay_us(10);// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((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);رفتن به ستون و سطر 0lcd_puts(s);نوشتن متن “s” بر روی Lcdمجموعه چهار خط اخیر را در while به شرط 1 گذاشته و این کار یعنی این مجموعه همیشه کار کند .با این کار مرحله کد نویسی هم به اتمام می رسدو کد ها را ذخیره می کنیمحالا نوبت به کامپایل کردن ( build All ) می رسد و زمانی که این کار را انجام دهیم به شرط اینکه هیچ خطایی نداشته باشیم پروژه کامپایل شده و بعد در همان پوشه ای که فایل را ذخیره کردیم یک فایل با پسوندcof ساخته می شود این فایل را باید در پروتئوس به میکروکنترلر دهیم.مرحله دوم پروژه:شبیه سازی در نرم افزار پروتئوسابتدا یک فایل جدید ایجاد کرده و سه تا پنجره بعدی را بدون انجام تغییر خاصی ادامه داده و پنجره آخر را دکمه finish را کلیک کرده و بعد طبق عکس زیر ground و power را آوردهو بعد طبق عکس زیر دماسنج و میکروکنترلر ATmega32 و نمایشگر آوردهو بعد به صورت تصویر مدار را خواهیم بست: