خانه / پروژه های میکروکنترلر AVR / راه اندازی ADC در میکروکنترلر AVR

راه اندازی ADC در میکروکنترلر AVR

اگر بخواهیم مبدل انالوگ به دیجیتال (ADC) را به صورت ساده توصیف کنیم، یک ولت متر دیجیتال است که بر روی پایه های میکروکنترلر نصب شده است و به وسیله ی آن میتوان ولتاژ پایه های ورودی را با دقت مناسبی اندازه گیری کرد. همانطور که میدانید ما تا به حال در هیچ آی سی نمیتوانستیم شدت ولتاژ ورودی را به دقت اندازه گیری کنیم و فقط میتوانستیم بدانیم آیا ولتاژ ورودی بالای ۲.۵ ولت است یا زیر ۲.۵ ولت، و ورودی هایمان را به صورت ۰ و ۱ بررسی می کردیم. (آی سی ها ورودیهای خود را منطقی می کنن) اما به کمک این قابلیت میکروکنترلرهای خانواده ی AVR ، ما میتوانیم با دقت مناسبی ولتاژ ورودی خود را بررسی کنیم .

در میکروکنترلر ATMEGA16 (و ATMEGA32) هشت پایه به ADC اختصاص داده شده، یعنی شما می توانید به صورت همزمان ، خروجی ۸ سنسور یا مدار جانبی را به میکرو کنترلر خود وصل کنید و اطلاعات آن ها را به وسیله ی ADC دریافت کنید. اما این ۸ پایه کدام پایه ها هستند؟  این ۸ پایه ، پایه های مربوط به پورت A هستند که با فعال کردن ADC در کدویزارد، این پایه ها در اختیار ADC قرار می گیرند.

این پایه ها طبق شکل زیر از ADC0 تا ADC7 نام گذاری شده اند:

یکی از کاربردهای مهم ADC میتواند در رباتها برای تشخیص رنگ باشد. همانطور که میدانید هر رنگ میزان مشخصی از نور را بازتاب می دهد و بقیه را جذب می کند، ما با اندازه گیری مقدار نور بازتاب شده ، میتوانیم رنگ را تشخیص دهیم . در اینجا ما برای اندازه گیری میزان شدت نور بازتاب شده ، باید از ADC میکروکنترلر استفاده کنیم تا بتوانیم ولتاژ خروجی سنسور نوری خود را به دقت اندازه گیری کنیم.

 

در برنامه ای که در ادامه قرار داده خواهد شد, لازم است تا کاربرد یکسری توابع را بدانید :

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

که بجای x شماره پین مورد نظر از 0 تا 7  (ADC0 تا ADC7) را قرار می دهیم. به عنوان مثال, دستور زیر مقدار ولتاژ انالوگ روی پین ADC0 را در متغیر a می ریزد ( البته خروجی این دستور عددی بین 0 تا 1023 می باشد که با استفاده از فرمول تناسب که در ادامه گفته می شود, ان را به ولتاژ تبدیل می کنیم )

 

فرمول تناسب در ADC :

مبدل آنالوگ به دیجیتال در میکرو کنترلر AVR به ازای ۰ تا ۵ ولت ورودی که به آن اعمال می شود عددی بین ۰ تا ۱۰۲۳ تولید می کند. پس اگر عدد تولید شده ۵۱۱ بود ولتاژ ورودی ۲.۵ ولت بوده است .
بنابراین هر مقداری را که با تابع (read_adc(x خواندیم درصورتی که بخواهیم به ولتاژ تبدیل کنیم , باید در تناسب قرار داده تا بفهمیم مقدار ولتاژ ورودی چقدر بوده است .

شماتیک :

در این پروژه مبدل انالوگ به دیجیتال میکرو (ADC) تشخیص می دهد که ولتاژی که به پین ADC0 می دهیم کمتر از 2 ولت است یا بیشتر و درنهایت عبارتی روی LCD کاراکتری نمایش می دهد

نکته : همانطور که در شماتیک بالا مشاهده می کنید, برای استفاده از ADC میکرو باید پین AREF و AVCC را به ولتاژ مرجع خود که در اینجا 5 ولت است متصل کنید. (پین 31 را هم که در شبیه سازی Proteus وجود ندارد, به منفی وصل کنید)

 

برنامه کدویژن :

در کدویزارد میکرو ATmega16 را انتخاب کنید و فرکانس ان را 1 مگا هرتز تنظیم کنید. تمام پین های پورت C را جهت اتصال به LCD خروجی کنید و LCD کاراکتری را برای اتصال به پورت C تنظیم کنید. تنظیمات ADC باید به صورت زیر باشد

اگر با تنظیمات محیط کدویزارد اشنا نیستید, حتما این پست ” اشنایی با محیط نرم افزار CodeVisionAVR ” را مطالعه کنید .

برنامه کامل این پروژه بصورت زیر است :

قسمت های مهم برنامه توضیح داده شده و نیاز به توضیح خاصی نیست اگر سوالی داشتید در قسمت نظرات مطرح کنید. اگر با دستورات مربوط به نوشتن روی lcd کاراکتری اشنا نیستید این مطلب ” نوشتن متن روی LCD کاراکتری ” رو مطالعه کنید .

کلیپ شبیه سازی در پروتئوس :

 

دانلود فایل ها

پسورد فایل زیپ : www.emic.ir

نظر یادتون نره …

درباره ی عابد رازانی

فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, درحال اماده شدن برای ارشد یا شایدم خدمت (:

یک دیدگاه

  1. بسیار عالی بود . سپاس از شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *