Съдържание:
- Стъпка 1: Ревизия
- Стъпка 2: Защо AnalogRead () връща стойност между 0 и 1023?
- Стъпка 3: И така, какво е AREF?
- Стъпка 4: Външен AREF
- Стъпка 5: Вътрешен AREF
Видео: Pin на Arduino AREF: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
В този урок ще разгледаме как можете да измервате по -малки напрежения с по -голяма точност, като използвате аналоговите входни щифтове на вашия 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?
Това се дължи на резолюцията на 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 - всичко за производители и ентусиасти на електрониката, с безплатна доставка по целия свят.
Препоръчано:
ICSP конектор за Arduino Nano без споена заглавка на щифт, но Pogo Pin: 7 стъпки
ICSP конектор за Arduino Nano без заварена заглавка на щифт, но Pogo Pin: Направете ICSP конектор за Arduino Nano без заварена заглавка на щифта на дъската, но Pogo Pin. -BP75-E2 (1,3 мм конусна глава) Пружинна изпитателна сонда Pogo Pin
Направи си сам Arduino Pin Pointer металдетектор: 3 стъпки
DIY Arduino Pin Pointer Metal Detector: Традиционният металотърсач може да локализира заровен предмет и да ви даде грубо местоположение на обекта, който е над земята. Pinpointer ви позволява да определите местоположението на обекта, да направите по -малка дупка при копаене и да извлечете елемента . Също така, може да
ETextile Multimeter Pin Sonda: 10 стъпки (със снимки)
ETextile Multimeter Pin Sonda: Pin Probe както е публикувано в eTextile Swatchbook 2017 Pin сондата е изпитателен кабел за свързване между мултицет и проводяща тъкан или конец. Сондата се състои от щифт за осъществяване на временен, но стабилен контакт с текстилни материали, без да се навреди
Металотърсач Pin -Pointer - Arduino: 6 стъпки (със снимки)
Pin -Pointer Metal Detector - Arduino: Ако сте ентусиаст на Metal Detector или просто търсите удобен инструмент за работилница, тогава този уникален ръчен pinpointer ще ви хареса за стесняване на конкретното местоположение на метална мишена. LED цветове за подпис
ISP 6 Pin към 8 Pin гнездо: 4 стъпки
ISP 6 Pin към 8 Pin Socket: Причината, поради която основно изградих този проект, беше да програмирам ATTiny45, който има 8 пинова връзка, докато моят USBtinyISP (от Ladyada) има само 10 пинова и 6 пинова връзка. След като обиколих интернет около 3-4 седмици, не открих нищо какво