توضیحات

icon فایل هایی که با لینک مستقیم در سایت قرار گرفته اند بدون پسورد می باشند.

راه اندازی LM35 با Code Vision AVR

راه اندازی LM35 با Code Vision AVR

در این پروژه یک دماسنج دیجیتال با استفاده از سنسور LM35 و میکروکنترلر AVR توسط کامپایلر Code Vision AVR و به زبان C راه اندازی شده است.

 

توجه: این پروژه به تنهایی جنبه کاربردی ندارد بلکه هدف از این پروژه ارائه روش راه اندازی LM35 با میکروکنترلر ADC می باشد تا بتوان از این سورس ها برای پروژه های کاربردی مانند ترمومتر و ترموستات استفاده کرد.

 

در این پروژه از میکروکنترلر ATMega32 استفاده شده است.

توصیه می شود که برای میکروکنترلرها یک کلید ریست نیز در نظر گرفته شود تا در صورت هنگ کردن میکروکنترلر بتوان از آن استفاده کرد. برای این کار از یک تک سوییچ مطابق شکل زیر استفاده شود:

اگر پایه ریست رها بماند ممکن است به علت نویز محیط، میکروکنترلر خود به خود ریست شود. برای جلوگیری از این حادثه آن را با یک مقاومت ۱۰K اهم به مثبت وصل می کنیم. حتی اگر قصد استفاده از کلید ریست را هم نداشته باشید، استفاده از این مقاومت الزامی است.

 

سنسور دمای استفاده شده در این پروژه LM35 می باشد.

LM35

خروجی این سنسور از نوع آنالوگ می باشد و به ازای افزایش هر درجه سانتی گراد، خروجی را ۱۰ میلی ولت افزایش می دهد.

برای سنجش مقدار دما، باید خروجی این سنسور را بر حسب میلی ولت اندازه گیری کرده و این مقدار را بر ۱۰ تقسیم نماییم.

مثلا:

۳۷۰mV=37^C
۲۰۹mV=20.9^C

برنامه این پروژه به روش ساب روتین نوشته شده است و جنبه آموزشی سورس این پروژه شامل نحوه کد نویسی نیز می شود.

جهت مشاهده سورس این پروژه اینجا کلیک کنید.

 

تابع های این پروژه از قرار زیر است:

۱٫ void Configuration_LCD (void);
۲٫ void Configuration_ADC (void);
۳٫ void Display_LCD_Start (void);
۴٫ float Read_the_adc (unsigned char);
۵٫ float Convert (float);
۶٫ void Display_LCD_1 (float);
۷٫ void Display_LCD_2 (float);

۱٫ پیکره بندی مربوط به LCD کاراکتری را انجام میدهد.

۲٫ پیکره بندی مربوط به ADC را انجام میدهد.

۳٫ نمایش یک متن دلخواه بر روی LCD در زمان شروع به کار سیستم.

۴٫ خواندن مقدار آنالوگ از یکی از کانال های ADC و برگرداندن مقدار دیجیتال آن.

۵٫ تبدیل مقدار آنالوگ خوانده شده به واحد سانتی گراد

۶٫ نمایش مقدار دما بر حسب سانتی گراد.

۷٫ نمایش مقدار ورودی برحسب میلی ولت.

 

اهداف آموزشی:

.        • آشنایی با LCD کاراکتری و نحوه راه اندازی آن

.        • آشنایی با توابع مربوط به LCD

.        • آشنایی با ADC و نحوه راه اندازی آن

.        • آشنایی با توابع مربوط به ADC

.        • آشنایی با سنسور LM35 و نحوه راه اندازی آن

 

محتویات فایل دانلود:
.        • سورس برنامه با کامپایلر Code Vision

.        • شبیه سازی پروژه با نرم افزار پروتیوس


جهت دانلود فایل های این پروژه اینجا کلیک کنید. ( ۲۷۱KB )

 

تهیه و تنظیم: علیرضا جودی

 

لینک منبع:

http://projects.m32.ir/2034/

 

خواننده گرامی : برای تهیه هر یک از این مقالات زمان ، انرژی و هزینه بسیار زیادی صرف می شود. در حق ما لطف نموده و مطالب را بدون هیچ تغییر و با ذکر منبع انتشار دهید. رعایت کپی رایت باعث انگیزه و امید تولید کننده های مطالب آموزشی میشود. با سپاس از خوانندگان محترم و با امید به روزهای بهتر

 

 

فروردین ۳۰ام, ۱۳۹۲ | 32,927 views | دسته: ADC، Alphanumeric LCD، Code Vision AVR
برچسب ها: ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ،


نظرات دیگران در مورد این مطلب:
دانلود متن آهنگ :

مرسی از سایت معرکتون…..عالیه

دانلود موسیقی :

سلام دست شما درد نکنه

آهنگ دانلود :

veryyyyyyyyyyyyy nice, i looooooove it

منصور :

بارک الله به این همه نظم و ترتیب، دست مریزاد آقای جودی،

مجید زارع :

سلام و خسته نباشید
ازین همه لطف واقعا سپاس گذاریم

Mohammad :

be mola dameton garm.
khodayi midonin che savabi mibarin !!??

موسوی :

با عرض سلام و تشکر… اگر بخواهیم به جای lcd مقدار دما را روی ۸ عدد led نمایش دهیم در محیط بسکام چگونه تعریف می کنیم؟

Ali :

مرسی دمتون گم

mohammad :

سلام. من پروژه رو نوشتم با CV تو پروتئوش هیچ مشکلی نداره. تو عمل دما ثابته. حتی فندکم بگیرم بازم ثابته. نمیدونم کجاش مشکل داره. لطفا زود جواب بدید. ممنون

 

پاسخ:

شاید در راه اندازی سنسور LM35 اشتباه کرده باشید برای تست این موضوع با استفاده از یک پتانسیومتر به ورودی ADC میکروکنترلر، ولتاژ های مختلف اعمال کنید و چک کنید که آیا مقادیر تغییر میکند یا خیر. همچنین برای چک کردن درستی اتصال LM35 میتوان با استفاده از یک مولتی متر، ولتاژ خروجی سنسور را اندازه گرفت، خروجی سنسور متناسب با دما محیط تغییر میکند. توجه داشته باشید که این تغییرات در رنج میلی ولت می باشد.

نوشا :

سلام.چرا توی تابع read adc مقدار x در ۴٫۸ ضرب شده؟

 

پاسخ:

ماژول ADC میکروکنترلر قادر به اندازه گیری ولتاژ آنالوگ از ۰ ولت تا +۵ ولت می باشد. نمونه گیری از ولتاژ ورودی با دقت ۱۰ بیت انجام می شود. و این یعنی اینکه مقدار اندازه گیری شده عددی بین ۰ تا ۱۰۲۳ خواهد بود. از آنجایی که عدد خوانده شده نسبت به ولتاژ ورودی خطی است پس می توان با یک نسبت تناسب ساده از عدد خوانده شده، مقدار ولتاژ ورودی را بدست آورد.


متین :

سلام
اینکه وقتی تو پروتئوس شبیه سازیش فعال میکنی
اصلا کار نمیکنه
هرچی مقدار دماسنج تغییر میدی هیچی تو LCD نشون نمیده خب
درست نوشتی؟
این فایلها مشکل نداره؟

 

پاسخ:

فایل مورد نظر بررسی شد و هیچ مشکلی مشاهده نشد و مقدار نمایش دما با وضیعت سنسور تغییر میکرد. لطفا ورژن نرم افزار پروتیوس خود را چک کنید.

 

javad roozegari :

سلام دست گلت درد نکنه مهندس

میلاد :

سلام اگه امکانش هست با استفاده از atmega8a رو هم واسه دانلود قرار بدین خیلی ممنون میشم

علی :

سلام دانلودش کردم ممنونم ازتون.

sajad :

//سلام خیلی ممنونم از سایت خوبتون

پیمان اسکندرپور :

سلام مهندس یه پروژه گرفتم میخواد ۶تادما روروی سون سگمنت یا ال سی دی نمایش بده بعدمیانگین این دما رم نشون بده با کیبورد دما هاروبشه عوض کردمثلا شماره ۱دمای ۱شماره ۲دمای ۲و…..شماره ۷میانگین این دماها امکانش هست کمکم کنیدممنون

Mahsa :

مهندس عالی بود ممنون

mohamma :

mohammad
دوست عزیز کار نمیکنه. خسته نباشی

 

پاسخ:

این پروژه در شبیه ساز پروتیوس بدون هیچ مشکلی کار میکند و روی برد فیزیکی هم بدون مشکل تست شده. لطفا اشکال کار را بفرمایید تا با هم فکر هم آن را رفع کنیم.

مهدی :

هنوز بازش نکردم ولی خیلی خیلی ممنونم.

مهدی :

هنوز بازش نکردم ولی خیلی خیلی ممنونم.

باتشکر از تمامی کسانی که زحمت کشیدند…

حسام :

سلام.اگه میشه سنسوره pt100رو هم بگین ممنون

amir :

بسیار تشکر

amir :

بسیار تشکر

میشه لطف کنید بگید این ها به تنهایی یعنی چه

amir :

بسیار تشکر
میشه لطف کنید بگید این ها به ترتیب به تنهایی یعنی چه ؟
ACSR=0x80;
SFIOR=0x00;

ADMUX=0x40 & 0xff;
ADCSRA=0x83;

ممنون

 

پاسخ:
در صورت استفاده از CodeWizard نرم افزار کدوِیژن این کد ها برای پیکره بندی ADC ایجاد می شود. این کد ها به رجیستر های ADC اشاره دارد. این کد ها را برای افزایش خوانایی برنامه در یک زیر تابع مستقل کپی کرده ایم. در صورت تمایل برای اطلاعات بیشتر در مورده نحوه کار این رجیسترها می توان به کتاب مرجع کامل میکروکنترلرهای AVR آقای پرتوی فر مراجعه کرد.

خواننده :

خیلی عالی بود .ممنون

parviz :

ممنون از تلاشتان.

صادق :

سلام خسته نباشی
ممنون بابت مطلب پر ارزشتون
اگه میشه کدهای زیر رو توضیح بدید و بگید چه کاری انجام میده؟

صادق :

void define_char(byte flash *pc,byte char_code){
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}

 
پاسخ:
کد های مورد سوال شما و تمام کد های ذکر شده در تصویر زیر برای ایجاد کردن یک کاراکتر دلخواه بر روی LCD می باشد. از این کد های برای ایجاد کردن شکل ^ که نشان دهنده درجه سانتی گراد است استفاده شده است. بر روی حافظه داخلی LCD های کاراکتری می توان تا ۸ کاراکتر دلخواه (غیر از موارد استاندارد ASCII) تعریف نمود.
 
untitled

امین :

سلام خسته نباشید ببخشد استاد من پروژه ای شبیه همین رو برام مطرح کرده متن ایمیل استادم رو میفرستم..میخواستم بدونم برنامش همینه ک خودتون گذاشتین و اگه نیاز به تغییر داره کجاشو باید تغییر بدم
متن ایمیل:
AmiiN:
سلام.
پروژه ای که براتون تعریف میکنم به این صورت هستش.
می خوایم اطلاعات یه سنسور دما مثل LM35 رو از طریق شبکه LAN دریافت کنیم. برای این منظور دستگاهی که شما می سازین باید یه وب سرور کوچیک با قابلیت ذخیره یک صفحه وب با پروتکل HTTP باشه که اطلاعات دما رو روی این صفحه در اختیار کامپیوترهای شبکه میذاره و از طریق همین صفحه امکان کنترل (روشن و خاموش کردن) یه فن رو به دستگاهمون میده. یه صفحه کلید کوچیک هم برای تنظیماتی مثل IP و … داره که این تنظیمات رو هم باید روی LCD گرافیکی که به میکروکنترلر وصل کردین نشون بده.
شما اجازه استفاده از حافظه اضافی رو دارین ولی فقط از یک میکرو کنترلر AVR باید استفاده کنید.

 

پاسخ:

پروژه ای را که استاد تعریف کرده است یه پروژه با گستردگی زیاد می باشد که فقط یک قسمت کوچک از این پروژه، خواندن دما از روی سنسور دمای LM35 است. شما برای تکمیل پروژه استاد، مجبور به استفاده از بلوک هایی مداری دیگر مثل ماژول اترنت، نمایشگر گرافیکی، ورودی کی پد، خروجی رله و … دارید.

mohammad :

باعرض سلام و خسته نباشید.
من فایل رو دانلود میکنم اما باز نمیشه اگه لطف کنید همین فایل برنامه نویسیش رو به ایمیلم ارسال کنید مهندس ممنون میشم..

 

پاسخ:
لینک دانلود بررسی شد و مشکلی نداشت. جهت اطمینان به ایمیل شما هم ارسال شد.

احسان :

سلام ممنون بابت راهنماییتون. سوالی داشتم اگر بخواهیم در دمای خاصی مثلا ۳۵ درجه یک پین از میکرو یک بشه برنامه رو چطور باید تغییر داد. یعنی برنامه مثل یک ترموستات بشه در دمای ۳۵ درجه که رسید یه پین رو روشن کنه به دمای ۲۵ش که رسید همون پین رو خاموش کنه. لطفا کمکم کنید.

احسان :

یعنی در حالی که دما رو می سنجه به دمای ۳۵ که رسید یک پین رو روشن کنه و به دمای ۲۵ که رسید همون پین خاموش بشه.

 

پاسخ:
از این کد ها در بین برنامه استفاده شود.

void main(void){
DDRB.0=1; PORTB.0=0;

while (1){

if (Temp>=35){ PORTB.0=1;} else if(Temp<=25) {PORTB.0=0;}
}
}

احسان :

منتظر پاسختون هستم. ممنونم.

احسان :

خیلی ممنونم. خدا اجرتون بده.

Ali :

با سلام خدمت شما بزرگوار
ممکنه برنامه راه انداز سنسور PT 100 رو با زبان c بفرستید واسم ممنون میشم


افزودن نظر: