فهرست مطالب:
- مرحله 1: ADC چیست؟
- مرحله 2: نحوه کار ADC در AVR- میکروکنترلر
- مرحله 3: فرمول تبدیل ADC
- مرحله 4: چگونه ADC را در ATmega8 پیکربندی کنیم؟
- مرحله 5: انتخاب ADLAR
- مرحله 6: انتخاب ADCSRA
- مرحله 7: اگر می خواهید از ارزش ADC استفاده کنید ، باید به کارهایی که در زیر لیست شده است ، نیاز داشته باشید
- مرحله 8: مقدار ADC را تنظیم کنید
- مرحله 9: پین LED خروجی را پیکربندی کنید
- مرحله 10: سخت افزار ADC را پیکربندی کنید
- مرحله 11: ADC را فعال کنید
- مرحله 12: تبدیل آنالوگ به دیجیتال را شروع کنید
- مرحله 13: در حالی که برای همیشه
- مرحله 14: در پایان کد کامل است
تصویری: آشنایی با ADC در میکروکنترلر AVR - برای مبتدیان: 14 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:56
در این آموزش شما همه چیز 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
جایی که Vin ولتاژ پین ورودی انتخاب شده است و Vref مرجع ولتاژ انتخاب شده است
مرحله 4: چگونه ADC را در ATmega8 پیکربندی کنیم؟
ثبت زیر برای پیاده سازی ADC در ATmega8 استفاده می شود
انتخاب چندگانه ADC
مرحله 5: انتخاب ADLAR
ADC Left Adjust Result بیت ADLAR بر روی نمایش نتیجه تبدیل ADC در ثبت اطلاعات ADC تأثیر می گذارد. یک عدد برای ADLAR بنویسید تا نتیجه به چپ تنظیم شود. در غیر این صورت ، نتیجه به درستی تنظیم می شود
هنگامی که تبدیل ADC کامل می شود ، نتیجه در ADCH و ADCL یافت می شود وقتی ADCL خوانده می شود ، ثبت اطلاعات ADC تا زمانی که ADCH خوانده نمی شود به روز نمی شود. در نتیجه ، اگر نتیجه تنظیم شود و بیش از 8 بیت دقت لازم نباشد ، خواندن ADCH کافی است. در غیر این صورت ، ابتدا ADCL باید خوانده شود ، سپس ADCH. بیت های انتخاب کانال آنالوگ مقدار این بیت ها انتخاب می کند که کدام ورودی های آنالوگ به ADC متصل شوند.
مرحله 6: انتخاب 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 ؛
}
ابتدا این آموزش را منتشر کنید اینجا را کلیک کنید
توصیه شده:
آشنایی با آردوینو: 18 مرحله
مقدمه بر آردوینو: آیا تا به حال به این فکر کرده اید که دستگاه های خود را مانند ایستگاه هواشناسی ، داشبورد خودرو برای نظارت بر سوخت ، سرعت و ردیابی موقعیت مکانی یا کنترل لوازم خانگی خود که توسط تلفن های هوشمند کنترل می شوند ، بسازید یا تا به حال در مورد ساخت وسایل پیچیده فکر کرده اید
آشنایی با "کیت DIY حرفه ای عملکرد ژنراتور ILC8038": 5 مرحله
آشنایی با "کیت حرفه ای ILC8038 Function Generator DIY": در حال انجام پروژه های الکترونیکی جدید بودم که با یک کیت تولید کننده عملکرد کوچک زیبا روبرو شدم. این عنوان "کیت حرفه ای ILC8038 Function Generator Sine Triangle Square Wave DIY Kit" نامیده می شود و در دسترس تعدادی از فروشندگان است
آشنایی با تنظیم کننده های ولتاژ خطی: 8 مرحله
مقدمه ای بر تنظیم کننده های ولتاژ خطی: پنج سال پیش وقتی برای اولین بار با Arduino و Raspberry Pi کار کردم ، زیاد به منبع تغذیه فکر نکردم ، در این زمان آداپتور برق رزبری پای و منبع USB آردوینو بیش از حد کافی بود. اما بعد از مدتی کنجکاوی من p
پیکربندی بیت های فیوز میکروکنترلر AVR. ایجاد و بارگذاری در فلش مموری میکروکنترلر برنامه چشمک زن LED: 5 مرحله
پیکربندی بیت های فیوز میکروکنترلر AVR. ایجاد و بارگذاری در فلش مموری میکروکنترلر برنامه چشمک زن LED: در این حالت ما یک برنامه ساده در کد C ایجاد کرده و آن را در حافظه میکروکنترلر می سوزانیم. ما برنامه خود را می نویسیم و فایل hex را با استفاده از Atmel Studio به عنوان پلت فرم توسعه یکپارچه کامپایل می کنیم. ما fuse bi را پیکربندی می کنیم
مربی تمرینات شخصی (پروژه میکروکنترلر مبتدیان): 4 مرحله
مربی تمرینات شخصی (پروژه میکروکنترلر مبتدیان): خلاصه: هدف از این دستورالعمل ایجاد دستگاهی است که به ارائه یک برنامه ورزشی ثابت برای کاربر دوچرخه ورزشی کمک می کند. این دستگاه: -به کاربر اجازه می دهد تا تلاش خود را حفظ کند چشمک زدن یک چراغ و صدای بوق در مخفی