فهرست مطالب:

آشنایی با ADC در میکروکنترلر AVR - برای مبتدیان: 14 مرحله
آشنایی با ADC در میکروکنترلر AVR - برای مبتدیان: 14 مرحله

تصویری: آشنایی با ADC در میکروکنترلر AVR - برای مبتدیان: 14 مرحله

تصویری: آشنایی با ADC در میکروکنترلر AVR - برای مبتدیان: 14 مرحله
تصویری: LDmicro 1: Introduction (Microcontroller PLC Ladder Logic Programming with LDmicro) 2024, جولای
Anonim
آشنایی با ADC در میکروکنترلر AVR | برای مبتدی ها
آشنایی با ADC در میکروکنترلر AVR | برای مبتدی ها

در این آموزش شما همه چیز ADC را در میکروکنترلر avr خواهید دانست

مرحله 1: ADC چیست؟

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

مرحله 2: نحوه کار ADC در AVR- میکروکنترلر

AVR ADC به میکروکنترلر AVR اجازه می دهد تا ولتاژهای آنالوگ را به مقادیر دیجیتالی با اندک قطعات خارجی بدون هیچگونه مبدل تبدیل کند. ATmega8 دارای یک تقریب متوالی 10 بیتی ADC است. ATmega8 دارای 7 کانال ADC در PortC است. ADC دارای پین ولتاژ منبع تغذیه آنالوگ جداگانه ، AVCC است. AVCC نباید بیش از 0.3V ± با VCC تفاوت داشته باشد. مرجع ولتاژ ممکن است به صورت خارجی در پین AREF جدا شود. AVCC به عنوان مرجع ولتاژ استفاده می شود. ADC همچنین می تواند تنظیم شود که به طور مداوم اجرا شود (حالت رایگان) یا تنها یک تبدیل را انجام دهد.

مرحله 3: فرمول تبدیل ADC

فرمول تبدیل ADC
فرمول تبدیل ADC

جایی که Vin ولتاژ پین ورودی انتخاب شده است و Vref مرجع ولتاژ انتخاب شده است

مرحله 4: چگونه ADC را در ATmega8 پیکربندی کنیم؟

چگونه ADC را در ATmega8 پیکربندی کنیم؟
چگونه ADC را در ATmega8 پیکربندی کنیم؟

ثبت زیر برای پیاده سازی ADC در ATmega8 استفاده می شود

انتخاب چندگانه ADC

مرحله 5: انتخاب ADLAR

انتخاب ADLAR
انتخاب ADLAR
انتخاب ADLAR
انتخاب ADLAR

ADC Left Adjust Result بیت ADLAR بر روی نمایش نتیجه تبدیل ADC در ثبت اطلاعات ADC تأثیر می گذارد. یک عدد برای ADLAR بنویسید تا نتیجه به چپ تنظیم شود. در غیر این صورت ، نتیجه به درستی تنظیم می شود

هنگامی که تبدیل ADC کامل می شود ، نتیجه در ADCH و ADCL یافت می شود وقتی ADCL خوانده می شود ، ثبت اطلاعات ADC تا زمانی که ADCH خوانده نمی شود به روز نمی شود. در نتیجه ، اگر نتیجه تنظیم شود و بیش از 8 بیت دقت لازم نباشد ، خواندن ADCH کافی است. در غیر این صورت ، ابتدا ADCL باید خوانده شود ، سپس ADCH. بیت های انتخاب کانال آنالوگ مقدار این بیت ها انتخاب می کند که کدام ورودی های آنالوگ به ADC متصل شوند.

مرحله 6: انتخاب ADCSRA

انتخاب ADCSRA
انتخاب ADCSRA
انتخاب ADCSRA
انتخاب ADCSRA

• بیت 7 - ADEN: ADC فعال کردن نوشتن این بیت به یکی ADC را فعال می کند. با نوشتن آن بر روی صفر ، ADC خاموش می شود

• بیت 6 - ADSC: ADC Start Conversion در حالت تبدیل واحد ، برای شروع هر تبدیل ، این بیت را به یکی بنویسید. در حالت اجرای رایگان ، این بیت را به یکی بنویسید تا اولین تبدیل شروع شود.

• بیت 5 - ADFR: ADC Free Running انتخاب کنید وقتی این بیت (یک) تنظیم شود ADC در حالت Free Running عمل می کند. در این حالت ، ADC به طور مداوم از Data Register ها نمونه برداری و به روز می کند. با پاک کردن این بیت (صفر) حالت Free Running خاتمه می یابد.

• بیت 4 - ADIF: ADC وقفه پرچم این بیت زمانی تنظیم می شود که تبدیل ADC تکمیل شود و ثبت داده ها به روز شوند. اگر ADIE bit و I-bit در SREG تنظیم شوند ، ADC Conversion Complete Interrupt اجرا می شود. هنگام اجرای بردار وقفه مربوطه ، ADIF توسط سخت افزار پاک می شود. متناوباً ، ADIF با نوشتن یک عدد منطقی در پرچم پاک می شود.

• بیت 3-ADIE: ADC Interrupt Enable وقتی این بیت بر روی یک نوشته شود و I-bit در SREG تنظیم شود ، ADC Conversion Complete Interrupt فعال می شود.

• بیت های 2: 0 - ADPS2: 0: ADC Prescaler Select Bits با توجه به برگه داده ، این prescalar باید طوری تنظیم شود که فرکانس ورودی ADC بین 50 کیلوهرتز تا 200 کیلوهرتز باشد. ساعت ADC از ساعت سیستم به کمک ADPS2 گرفته شده است: 0 این بیت ها عامل تقسیم بین فرکانس XTAL و ساعت ورودی به ADC را تعیین می کنند.

مرحله 7: اگر می خواهید از ارزش ADC استفاده کنید ، باید به کارهایی که در زیر لیست شده است ، نیاز داشته باشید

  • مقدار ADC را تنظیم کنید
  • پین LED خروجی را پیکربندی کنید
  • پیکربندی سخت افزار ADC
  • ADC را فعال کنید
  • شروع تبدیل آنالوگ به دیجیتال
  • در حالی که برای همیشه

IF ADC Value Higher و سپس مقدار را تنظیم کنید ، LED ELSE را خاموش کنید LED را خاموش کنید

مرحله 8: مقدار ADC را تنظیم کنید

کد: uint8_t ADC ارزش = 128؛

مرحله 9: پین LED خروجی را پیکربندی کنید

کد: DDRB | = (1 << PB1) ؛

مرحله 10: سخت افزار ADC را پیکربندی کنید

پیکربندی سخت افزار ADC

این کار از طریق تنظیم بیت در رجیسترهای کنترل برای ADC انجام می شود. اول ، اجازه دهید prescalar را برای ADC تنظیم کنیم. با توجه به برگه داده ، این prescalar باید طوری تنظیم شود که فرکانس ورودی ADC بین 50 کیلوهرتز تا 200 کیلوهرتز باشد. ساعت ADC از ساعت سیستم گرفته شده است. با فرکانس سیستم 1 مگاهرتز ، پیش فروشنده 8 فرکانس ADC 125 کیلوهرتز را ایجاد می کند. پیش پلمپ توسط بیت های ADPS در ثبت ADCSRA تنظیم می شود. طبق برگه داده ، هر سه بیت ADPS2: 0 باید روی 011 تنظیم شوند تا 8 پیش فروشنده 8 را دریافت کنند.

کد: ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0] ؛

بعد ، اجازه دهید ولتاژ مرجع ADC را تنظیم کنیم. این توسط بیت های REFS در ثبت ADMUX کنترل می شود. موارد زیر ولتاژ مرجع را به AVCC تنظیم می کند.

کد: ADMUX | = (1 << REFS0] ؛

برای تنظیم کانال منتقل شده از طریق مالتی پلکسر به ADC ، بیت های MUX در ثبت ADMUX باید مطابق آن تنظیم شوند. از آنجا که ما در اینجا از ADC5 استفاده می کنیم

کد: ADMUX & = 0xF0؛ ADMUX | = 5 ؛

به منظور قرار دادن ADC در حالت اجرای آزاد ، بیت ADFR را با نام مناسب در ثبت ADCSRA تنظیم کنید:

کد: ADCSRA | = (1 << ADFR) ؛

آخرین تنظیمات انجام می شود تا خواندن مقدار ADC ساده تر شود. اگرچه ADC دارای وضوح 10 بیت است ، اما این اطلاعات زیاد اغلب ضروری نیست. این مقدار 10 بیتی در دو ثبات 8 بیتی ADCH و ADCL تقسیم می شود. به طور پیش فرض ، کمترین 8 بیت از مقدار ADC در ADCL یافت می شود ، دو بیت بالا پایین ترین دو بیت ADCH است. با تنظیم بیت ADLAR در ثبت ADMUX ، می توانیم مقدار ADC را به سمت چپ تراز کنیم. این بیشترین 8 بیت اندازه گیری را در ثبت ADCH و بقیه را در ثبت ADCL قرار می دهد. اگر ما ثبت نام ADCH را بخوانیم ، یک مقدار 8 بیتی دریافت می کنیم که نشان دهنده اندازه گیری 0 تا 5 ولت ما به عنوان یک عدد از 0 تا 255 است. ما اساساً اندازه گیری ADC 10 بیتی خود را به یک 8 بیتی تبدیل می کنیم. در اینجا کد تنظیم بیت ADLAR آمده است:

کد:

ADMUX | = (1 << ADLAR] ؛ با این کار تنظیم سخت افزار ADC برای این مثال تکمیل می شود. دو بیت دیگر باید تنظیم شوند تا ADC شروع به اندازه گیری کند.

مرحله 11: ADC را فعال کنید

برای فعال کردن ADC ، بیت ADEN را در ADCSRA تنظیم کنید:

کد: ADCSRA | = (1 << ADEN) ؛

مرحله 12: تبدیل آنالوگ به دیجیتال را شروع کنید

برای شروع اندازه گیری ADC ، بیت ADSC در ADCSRA باید تنظیم شود:

کد: ADCSRA | = (1 << ADSC) ؛

در این مرحله ، ADC نمونه برداری مداوم از ولتاژ ارائه شده در ADC5 را آغاز می کند. کد این نقطه به این شکل است:

مرحله 13: در حالی که برای همیشه

تنها کاری که باید انجام دهید آزمایش مقدار ADC و تنظیم LED ها برای نمایش نشانگر بالا / پایین است. از آنجا که خواندن ADC در ADCH حداکثر 255 است ، مقدار تست th برای تعیین بالا یا پایین بودن ولتاژ انتخاب شد. یک عبارت ساده IF/ELSE در حلقه های FOR به ما امکان می دهد LED مناسب را روشن کنیم:

کد

if (ADCH> ADCValue)

{

PORTB | = (1 << PB0] ؛ // LED را روشن کنید

}

دیگری

{

PORTB & = ~ (1 << PB0)؛ // LED را خاموش کنید

}

مرحله 14: در پایان کد کامل است

کد:

#عبارتند از

int main (باطل)

{

uint8_t ADC ارزش = 128؛

DDRB | = (1 << PB0] ؛ // LED1 را به عنوان خروجی تنظیم کنید

ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0] ؛ // ADC prescalar را روی 8 - // نرخ نمونه 125KHz 1 مگاهرتز تنظیم کنید

ADMUX | = (1 << REFS0] ؛ // مرجع ADC را به AVCC تنظیم کنید

ADMUX | = (1 << ADLAR] ؛ // تنظیم ADC سمت چپ برای خواندن آسان 8 بیتی

ADMUX & = 0xF0؛

ADMUX | = 5 ؛ // برای استفاده از ADC0 مقادیر MUX باید تغییر کند

ADCSRA | = (1 << ADFR) ؛ // ADC را روی Free-Running Mode تنظیم کنید

ADCSRA | = (1 << ADEN] ؛ // ADC را فعال کنید

ADCSRA | = (1 << ADSC) ؛ // شروع A2D Conversions در حالی که (1) // Loop Forever

{

if (ADCH> ADCValue)

{

PORTB | = (1 << PB0] ؛ // LED1 را روشن کنید

}

دیگری

{

PORTE & = ~ (1 << PB1)؛ // LED1 را خاموش کنید

}

}

بازگشت 0 ؛

}

ابتدا این آموزش را منتشر کنید اینجا را کلیک کنید

توصیه شده: