بازدیدها: 824
در این مثال آموزشی خواهیم گفت که چگونه با استفاده از مبدل آنالوگ به دیجیتال (ADC) میکروکنترلر AVR ولتاژ 0 تا 5 ولت را انداره گیری نمائیم. با کمک تابع read_adc که از نوع برگشتی هم می باشد، ابتدا منتظر می مانیم تا عمل تبدیل به اتمام برسد سپس توسط فرمول زیر مقدار ولتاژ کانال مورد نظر را محاسبه کرده و مقدار نهایی را برگشت می دهیم. تابع قادر است تا مقادیر مختلف را از کانال های مختلف (0تا7) دریافت و پس از محاسبه مقدار نهایی ولتاژ را برگشت دهد.
توسط رابطه زیر مقدار اندازه گیری شده را به ولتاژ تبدیل میکنیم. در این رابطه Vin مقدار ولتاژ مجهول ماست که به ADC داده ایم و Vref هم مقدار ولتاژ مرجع می باشد، که ADC بر اساس این ولتاژ عمل تبدیل را انجام میدهد و ما هم در این مثال ولتاژ پایه 32 یعنی AREF را به عنوان مرجع انتخاب کرده ایم (این قضیه سه حالت دارد که در ادامه خواهیم گفت). ADCW رجیستری است که مقدار تبدیل شده به دیجیتال درون آن قرار میگیرد، در صورتی که دقت 10 بیتی انتخاب شده باشد این رجیستر مقداری از صفر تا 1023 خواهد داشت. 2n نیز همان دقت انتخابی است گفتیم و در این مثال n=10 می باشد. پس به راحتی با رابطهtemp=(ADCW*5)/1023; مقدار مجهول یعنی Vin بدست می آید و درون متغیر temp قرار میگیرد.
#define ADC_VREF_TYPE 0x00 //Volt.Ref ==> AREF pin //#define ADC_VREF_TYPE 0x40 //Volt.Ref ==> AVCC pin //#define ADC_VREF_TYPE 0xC0 //Volt.Ref ==> int.cap on AREF 2.56v
توضیحات کاملتر در صفحات ضمیمه شده زیر موجود می باشد، برای کسب اطلاعات بیشتر در مورد مبدل آنالوگ به دیجیتال به این صفحه مراجعه نمائید.
باتشکر سید محسن قاسمیان