فهرست مطالب:

پین Arduino AREF: 6 مرحله
پین Arduino AREF: 6 مرحله

تصویری: پین Arduino AREF: 6 مرحله

تصویری: پین Arduino AREF: 6 مرحله
تصویری: Контрольная лампа переменного тока с диммером Arduino AC 2024, نوامبر
Anonim
پین Arduino AREF
پین Arduino AREF

در این آموزش ما نحوه اندازه گیری ولتاژهای کوچکتر با دقت بیشتر را با استفاده از پین های ورودی آنالوگ در Arduino یا برد سازگار خود با پین AREF بررسی می کنیم. با این حال ، ابتدا کمی تجدید نظر می کنیم تا سرعت شما را افزایش دهیم. لطفاً قبل از اولین کار با AREF این پست را کاملاً بخوانید.

مرحله 1: تجدید نظر

تجدید نظر!
تجدید نظر!

ممکن است به خاطر داشته باشید که می توانید از تابع Arduino analogRead () برای اندازه گیری ولتاژ جریان الکتریکی حسگرها و غیره با استفاده از یکی از پین های ورودی آنالوگ استفاده کنید. مقدار () analogRead () بین صفر تا 1023 خواهد بود ، که صفر نشان دهنده صفر ولت و 1023 نشان دهنده ولتاژ عملکرد برد آردوینو در حال استفاده است.

و وقتی می گوییم ولتاژ کار - این ولتاژی است که بعد از مدار تغذیه در اختیار آردوینو قرار دارد. به عنوان مثال ، اگر یک برد معمولی Arduino Uno دارید و آن را از سوکت USB اجرا می کنید - مطمئناً 5 ولت از سوکت USB در رایانه یا هاب در دسترس برد است - اما با وزش ولتاژ کمی در اطراف جریان اتصال به میکروکنترلر - یا منبع USB فقط خراشیده نمی شود.

این را می توان با اتصال Arduino Uno به USB و قرار دادن یک مجموعه مولتی متر برای اندازه گیری ولتاژ در پین های 5V و GND به راحتی نشان داد. برخی از تخته ها تا 4.8 ولت ، برخی بالاتر اما همچنان زیر 5 ولت باز خواهند گشت. بنابراین اگر به دنبال دقت هستید ، برد خود را از منبع تغذیه خارجی از طریق سوکت DC یا پین Vin - مانند 9V DC تغذیه کنید. سپس بعد از عبور از مدار تنظیم کننده قدرت ، 5 ولت خوبی خواهید داشت ، برای مثال تصویر.

این مهم است زیرا دقت هر یک از مقادیر analogRead () با نداشتن 5 ولت واقعی تحت تأثیر قرار می گیرد. اگر گزینه ای ندارید ، می توانید از ریاضیات در طرح خود برای جبران افت ولتاژ استفاده کنید. به عنوان مثال ، اگر ولتاژ شما 4.8 ولت است - دامنه analogRead () 1023 0 0 به 4.8 0 0 و نه 0 ~ 5 ولت مربوط می شود. این ممکن است بی اهمیت به نظر برسد ، اما اگر از حسگری استفاده می کنید که مقداری را به عنوان ولتاژ باز می گرداند (به عنوان مثال سنسور دما TMP36) - مقدار محاسبه شده اشتباه خواهد بود. بنابراین به منظور دقت ، از منبع تغذیه خارجی استفاده کنید.

مرحله 2: چرا AnalogRead () مقدار بین 0 تا 1023 را برمی گرداند؟

چرا AnalogRead () مقدار بین 0 تا 1023 را برمی گرداند؟
چرا AnalogRead () مقدار بین 0 تا 1023 را برمی گرداند؟

این به دلیل وضوح ADC است. وضوح (برای این مقاله) درجه ای است که می توان چیزی را به صورت عددی نشان داد. هر چه وضوح تصویر بالاتر باشد ، دقت بیشتری در نمایش چیزی وجود دارد. ما وضوح را بر حسب تعداد بیت های وضوح اندازه گیری می کنیم.

به عنوان مثال ، وضوح 1 بیتی فقط دو (دو به توان یک) مقدار صفر و یک را مجاز می کند. وضوح 2 بیتی به چهار (دو در توان دو) مقدار صفر ، یک ، دو و سه اجازه می دهد. اگر سعی کنیم محدوده پنج ولت را با وضوح دو بیت اندازه گیری کنیم و ولتاژ اندازه گیری شده چهار ولت باشد ، ADC ما عددی 3 نشان می دهد-زیرا چهار ولت بین 3.75 و 5V افت می کند. تصور این با تصویر آسان تر است.

بنابراین با مثال ما ADC با وضوح 2 بیتی ، تنها می تواند ولتاژ را با چهار مقدار احتمالی حاصل نشان دهد. اگر ولتاژ ورودی بین 0 تا 1.25 باشد ، ADC عددی 0 را برمی گرداند. اگر ولتاژ بین 1.25 و 2.5 باشد ، ADC مقدار عددی 1. و غیره را برمی گرداند. با محدوده ADC آردوینو 1023 0 0-ما 1024 مقدار ممکن داریم-یا 2 به توان 10. بنابراین آردوینوهای ما دارای ADC با وضوح 10 بیت هستند.

مرحله 3: بنابراین AREF چیست؟

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

برای بردهای آردوینو معروف تر مانند بردهای Uno ، Mega ، Duemilanove و Leonardo/Yún ، ولتاژ کار 5 ولت است. اگر برد برد آردوینو دارید ، ولتاژ کار 3.3 ولت است. اگر چیز دیگری دارید - صفحه محصول Arduino را بررسی کنید یا از تامین کننده برد خود بپرسید.

بنابراین اگر ولتاژ مرجع شما 5 ولت است ، هر واحد بازگردانده شده توسط analogRead () 0.00488 ولت ارزش دارد (این عدد با تقسیم 1024 به 5 ولت محاسبه می شود). اگر بخواهیم ولتاژها را بین 0 و 2 یا 0 تا 4.6 اندازه گیری کنیم ، چه کنیم؟ چگونه ADC می داند که 100٪ محدوده ولتاژ ما چقدر است؟

و دلیل پین AREF در آن نهفته است. AREF به معنی مرجع آنالوگ است. این به ما این امکان را می دهد که آردوینو را از منبع تغذیه خارجی به عنوان ولتاژ مرجع تغذیه کنیم. به عنوان مثال ، اگر بخواهیم ولتاژها را با حداکثر برد 3.3 ولت اندازه گیری کنیم ، 3.3 ولت خوب و نرم را به پین AREF وارد می کنیم - شاید از IC تنظیم کننده ولتاژ.

سپس هر مرحله ADC حدود 3.22 میلی ولت را نشان می دهد (1024 را به 3.3 تقسیم کنید). توجه داشته باشید که کمترین ولتاژ مرجع که می توانید داشته باشید 1.1 ولت است. دو نوع AREF وجود دارد - داخلی و خارجی ، بنابراین اجازه دهید آنها را بررسی کنیم.

مرحله 4: AREF خارجی

AREF خارجی جایی است که ولتاژ مرجع خارجی را به برد آردوینو وارد می کنید. این می تواند از منبع تغذیه تنظیم شده باشد ، یا در صورت نیاز به 3.3 ولت می توانید آن را از پین 3.3 ولت آردوینو دریافت کنید. اگر از منبع تغذیه خارجی استفاده می کنید ، حتماً GND را به پین GND آردوینو وصل کنید. یا اگر از منبع 3.3V Arduno استفاده می کنید - فقط یک جهنده را از پین 3.3V به پین AREF اجرا کنید.

برای فعال کردن AREF خارجی ، از موارد زیر در void setup () استفاده کنید:

analogReference (EXTERNAL) ؛ // از AREF برای ولتاژ مرجع استفاده کنید

این ولتاژ مرجع را به هر چیزی که به پین AREF وصل کرده اید - که البته دارای ولتاژ بین 1.1 ولت و ولتاژ عملکرد برد است ، تنظیم می کند. نکته بسیار مهم - هنگام استفاده از مرجع ولتاژ خارجی ، باید مرجع آنالوگ را روی EXTERNAL تنظیم کنید. قبل از استفاده از analogRead (). این کار از کوتاه شدن ولتاژ مرجع داخلی فعال و پین AREF جلوگیری می کند که می تواند به میکروکنترلر روی برد آسیب برساند. در صورت لزوم برای برنامه خود ، می توانید با موارد زیر به ولتاژ عملکرد برد AREF (یعنی - به حالت عادی) بازگردید.

analogReference (DEFAULT) ؛

اکنون برای نشان دادن AREF خارجی در محل کار. با استفاده از AREF 3.3V ، طرح زیر ولتاژ A0 را اندازه گیری می کند و درصد کل AREF و ولتاژ محاسبه شده را نمایش می دهد:

#شامل "LiquidCrystal.h"

LCD مایع LiquidCrystal (8 ، 9 ، 4 ، 5 ، 6 ، 7) ؛

int analoginput = 0؛ // پین آنالوگ ما

int analogamount = 0؛ // مقدار ورودی مقدار float = 0 را ذخیره می کند؛ // برای ذخیره مقدار درصد ولتاژ شناور = 0 استفاده می شود. // برای ذخیره مقدار ولتاژ استفاده می شود

void setup ()

{lcd.begin (16 ، 2) ؛ analogReference (EXTERNAL) ؛ // از AREF برای ولتاژ مرجع استفاده کنید}

حلقه خالی ()

{lcd.clear ()؛ analogamount = analogRead (analoginput) ؛ درصد = (analogamount/1024.00)*100 ؛ ولتاژ = مقدار مشابه*3.222 ؛ // در میلی ولت lcd.setCursor (0 ، 0) ؛ lcd.print ("٪ AREF:")؛ lcd.print (درصد ، 2) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("A0 (mV):")؛ lcd.println (ولتاژ ، 2) ؛ تأخیر (250) ؛ }

نتایج طرح بالا در ویدئو نشان داده شده است.

مرحله 5: AREF داخلی

میکروکنترلرهای روی بردهای آردوینو ما همچنین می توانند ولتاژ مرجع داخلی 1.1 ولت ایجاد کنند و ما می توانیم از آن برای کارهای AREF استفاده کنیم. به سادگی از خط استفاده کنید:

مرجع analog (داخلی) ؛

برای بردهای Arduino Mega ، از موارد زیر استفاده کنید:

analogReference (INTERNAL1V1) ؛

در void setup () و شما خاموش هستید. اگر آردوینو مگا دارید ولتاژ مرجع 2.56 ولت نیز موجود است که با موارد زیر فعال می شود:

analogReference (INTERNAL2V56) ؛

سرانجام - قبل از نتیجه گیری از پین AREF ، همیشه قرائت ها را با یک مولتی متر خوب شناخته شده تنظیم کنید.

نتیجه

عملکرد AREF با اندازه گیری سیگنال های آنالوگ به شما انعطاف پذیری بیشتری می دهد.

این پست توسط pmdway.com برای شما ارسال شده است - همه چیز برای سازندگان و علاقه مندان به لوازم الکترونیکی ، با ارسال رایگان در سراسر جهان.

توصیه شده: