Съдържание:

Pin на Arduino AREF: 6 стъпки
Pin на Arduino AREF: 6 стъпки

Видео: Pin на Arduino AREF: 6 стъпки

Видео: Pin на Arduino AREF: 6 стъпки
Видео: 6 ARDUINO ANALOG analogReference 2024, Юли
Anonim
Pin на Arduino AREF
Pin на Arduino AREF

В този урок ще разгледаме как можете да измервате по -малки напрежения с по -голяма точност, като използвате аналоговите входни щифтове на вашия Arduino или съвместима платка, заедно с щифта AREF. Първо обаче ще направим някои ревизии, за да ви ускорим. Моля, прочетете изцяло тази публикация, преди да работите с AREF за първи път.

Стъпка 1: Ревизия

Ревизия!
Ревизия!

Може да си припомните, че можете да използвате функцията Arduino analogRead () за измерване на напрежението на електрически ток от сензори и т.н., като използвате един от аналоговите входни щифтове. Стойността, върната от analogRead (), ще бъде между нула и 1023, като нулата представлява нула волта и 1023 представлява работното напрежение на използваната платка Arduino.

И когато казваме работното напрежение - това е напрежението, достъпно за Arduino след електрическата верига. Например, ако имате типична платка Arduino Uno и я пускате от USB гнездото - със сигурност има 5V на разположение на платката от USB гнездото на вашия компютър или хъб - но напрежението се намалява леко, тъй като токът се навива около верига към микроконтролера - или USB източникът просто не е до нулата.

Това може лесно да се докаже чрез свързване на Arduino Uno към USB и поставяне на мултицетен комплект за измерване на напрежението върху 5V и GND щифтове. Някои платки ще се върнат до 4.8 V, някои по -високи, но все пак под 5V. Така че, ако търсите точност, захранвайте дъската си от външно захранване чрез DC гнездото или Vin pin - например 9V DC. След това, след като премине през веригата на регулатора на мощността, ще имате хубави 5V, например изображението.

Това е важно, тъй като точността на всички стойности на analogRead () ще бъде повлияна от липсата на истински 5 V. Ако нямате опция, можете да използвате някои математики в скицата си, за да компенсирате спада на напрежението. Например, ако напрежението ви е 4.8V - диапазонът на analogRead () от 0 ~ 1023 ще се отнася до 0 ~ 4.8V, а не 0 ~ 5V. Това може да звучи тривиално, но ако използвате сензор, който връща стойност като напрежение (например температурен сензор 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 диапазона на нашия Arduino от 0 ~ 1023-имаме 1024 възможни стойности-или 2 до степен 10. Значи нашите Arduino имат ADC с 10-битова резолюция.

Стъпка 3: И така, какво е AREF?

Накратко, когато вашият Arduino взема аналогово отчитане, той сравнява измереното напрежение на аналоговия щифт с това, което е известно като референтно напрежение. При нормално използване на analogRead, референтното напрежение е работното напрежение на платката.

За по -популярните платки Arduino като платките Uno, Mega, Duemilanove и Leonardo/Yún, работното напрежение е 5V. Ако имате дъска Arduino Due, работното напрежение е 3.3V. Ако имате нещо друго - проверете продуктовата страница на Arduino или попитайте вашия доставчик на дъска.

Така че, ако имате референтно напрежение от 5V, всяка единица, върната от analogRead (), се оценява на 0.00488 V. (Това се изчислява чрез разделяне на 1024 на 5V). Ами ако искаме да измерваме напрежения между 0 и 2 или 0 и 4,6? Как АЦП ще разбере какъв е 100% от нашия диапазон на напрежение?

И в това се крие причината за щифта AREF. AREF означава аналогова референция. Тя ни позволява да захранваме Arduino референтно напрежение от външно захранване. Например, ако искаме да измерваме напрежения с максимален обхват 3.3V, бихме подали хубави гладки 3.3V в щифта AREF - може би от IC регулатор на напрежение.

Тогава всяка стъпка на ADC ще представлява около 3,22 миливолта (разделете 1024 на 3,3). Обърнете внимание, че най -ниското референтно напрежение, което можете да имате, е 1.1V. Има две форми на AREF - вътрешна и външна, така че нека ги проверим.

Стъпка 4: Външен AREF

Външен AREF е мястото, където подавате външно референтно напрежение към платката Arduino. Това може да дойде от регулирано захранване или ако имате нужда от 3.3V, можете да го получите от 3.3V щифта на Arduino. Ако използвате външно захранване, не забравяйте да свържете GND към щифта GND на Arduino. Или ако използвате 3.3V източник на Arduno - просто пуснете джъмпер от щифта 3.3V към щифта AREF.

За да активирате външния AREF, използвайте следното в void setup ():

analogReference (ВЪНШНО); // използвайте AREF за референтно напрежение

Това задава референтното напрежение на всичко, което сте свързали към щифта AREF - което, разбира се, ще има напрежение между 1.1V и работното напрежение на платката. Много важна забележка - когато използвате външна референтна стойност на напрежението, трябва да зададете аналоговата референция на EXTERNAL преди да използвате analogRead (). Това ще ви попречи да скъсите активното вътрешно референтно напрежение и щифта AREF, което може да повреди микроконтролера на платката. Ако е необходимо за вашето приложение, можете да се върнете към работното напрежение на платката за AREF (тоест - обратно към нормалното) със следното

analogReference (DEFAULT);

Сега за демонстриране на външен AREF по време на работа. Използвайки 3.3V AREF, следната скица измерва напрежението от A0 и показва процента от общия AREF и изчисленото напрежение:

#include "LiquidCrystal.h"

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int аналогов вход = 0; // нашият аналогов щифт

int analogamount = 0; // съхранява входяща стойност плаващ процент = 0; // използва се за съхраняване на нашата процентна стойност плаващо напрежение = 0; // използва се за съхраняване на стойността на напрежението

void setup ()

{lcd.begin (16, 2); analogReference (ВЪНШНО); // използвайте AREF за референтно напрежение}

void loop ()

{lcd.clear (); analogamount = analogRead (аналогов вход); процент = (аналогова сума/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

Микроконтролерите на нашите платки Arduino също могат да генерират вътрешно референтно напрежение от 1.1V и можем да го използваме за работа с AREF. Просто използвайте реда:

analogReference (ВНУТРЕННИ);

За Arduino Mega платки използвайте:

analogReference (INTERNAL1V1);

in void setup () и сте изключени. Ако имате Arduino Mega, има и референтно напрежение 2.56V, което се активира с:

analogReference (INTERNAL2V56);

И накрая - преди да се спрете на резултатите от вашия AREF щифт, винаги калибрирайте показанията спрямо известен известен мултицет.

Заключение

Функцията AREF ви дава по -голяма гъвкавост при измерване на аналогови сигнали.

Тази публикация ви е предоставена от pmdway.com - всичко за производители и ентусиасти на електрониката, с безплатна доставка по целия свят.

Препоръчано: