اندازه گیری ولتاژ با مبدل آنالوگ به دیجیتال ADC
در این مثال آموزشی خواهیم گفت که چگونه با استفاده از مبدل آنالوگ به دیجیتال (ADC) میکروکنترلر AVR ولتاژ ۰ تا ۵ ولت را انداره گیری نمائیم. با کمک تابع read_adc که از نوع برگشتی هم می باشد، ابتدا منتظر می مانیم تا عمل تبدیل به اتمام برسد سپس توسط فرمول زیر مقدار ولتاژ کانال مورد نظر را محاسبه کرده و مقدار نهایی را برگشت می دهیم. تابع قادر است تا مقادیر مختلف را از کانال های مختلف (۰تا۷) دریافت و پس از محاسبه مقدار نهایی ولتاژ را برگشت دهد.
وسط رابطه زیر مقدار اندازه گیری شده را به ولتاژ تبدیل میکنیم. در این رابطه Vin مقدار ولتاژ مجهول ماست که به ADC داده ایم و Vref هم مقدار ولتاژ مرجع می باشد، که ADC بر اساس این ولتاژ عمل تبدیل را انجام میدهد و ما هم در این مثال ولتاژ پایه ۳۲ یعنی AREF را به عنوان مرجع انتخاب کرده ایم (این قضیه سه حالت دارد که در ادامه خواهیم گفت). ADCW رجیستری است که مقدار تبدیل شده به دیجیتال درون آن قرار میگیرد، در صورتی که دقت ۱۰ بیتی انتخاب شده باشد این رجیستر مقداری از صفر تا ۱۰۲۳ خواهد داشت. ۲n نیز همان دقت انتخابی است گفتیم و در این مثال n=10 می باشد. پس به راحتی با رابطهtemp=(ADCW*5)/1023; مقدار مجهول یعنی Vin بدست می آید و درون متغیر temp قرار میگیرد.

ads

 

defi
حالت اول ولتاژ مرجع ADC از پین AREF انتخاب می شود. پین ۳۲
حالت دوم ولتاژ مرجع ADC از پین AVCC انتخاب می شود. پین ۳۰
حالت سوم ولتاژ مرجع ADC از ولتاژ مرجع داخلی تثبت شده ۲٫۵۶ انتخاب می شود. (در مواردی که رنج تغیرات محدود است و یا ولتاژ تغذیه مدار ۵ ولت کامل نیست بهتر است از این حالت استفاده شود، که باز بستگی به طراح و سایر پارامترهای دیگر دارد.)