Obsah:

Pin Arduino AREF: 6 kroků
Pin Arduino AREF: 6 kroků

Video: Pin Arduino AREF: 6 kroků

Video: Pin Arduino AREF: 6 kroků
Video: 6 ARDUINO ANALOG analogReference 2024, Červenec
Anonim
Pin Arduino AREF
Pin Arduino AREF

V tomto tutoriálu se podíváme na to, jak můžete měřit menší napětí s větší přesností pomocí analogových vstupních pinů na vašem Arduinu nebo kompatibilní desce ve spojení s pinem AREF. Nejprve však uděláme nějakou revizi, abychom vás dostali do tempa. Před první prací s AREF si prosím přečtěte celý tento příspěvek.

Krok 1: Revize

Revize!
Revize!

Můžete si vzpomenout, že můžete použít funkci Arduino analogRead () k měření napětí elektrického proudu ze senzorů a tak dále pomocí jednoho z analogových vstupních kolíků. Hodnota vrácená z analogRead () by byla mezi nulou a 1023, přičemž nula představuje nulové napětí a 1023 představuje provozní napětí používané desky Arduino.

A když říkáme provozní napětí - to je napětí, které má Arduino k dispozici po napájecích obvodech. Pokud například máte typickou desku Arduino Uno a spouštíte ji z USB zásuvky - jistě, na desce je k dispozici 5 V z USB zásuvky na vašem počítači nebo rozbočovači - ale napětí se mírně snižuje, jak se proud vine kolem obvod k mikrokontroléru - nebo zdroj USB prostě není na poškrábání.

To lze snadno demonstrovat připojením Arduino Uno k USB a vložením multimetrové sady pro měření napětí na piny 5V a GND. Některé desky se vrátí tak nízké, jak 4,8 V, některé vyšší, ale stále pod 5V. Pokud tedy toužíte po přesnosti, napájejte desku z externího zdroje napájení pomocí zásuvky DC nebo Vin - například 9 V DC. Poté, co to projde obvodem regulátoru výkonu, budete mít pěkných 5 V, například obrázek.

To je důležité, protože přesnost všech hodnot analogRead () bude ovlivněna tím, že nebudete mít skutečných 5 V. Pokud nemáte jinou možnost, můžete v náčrtu použít nějakou matematiku ke kompenzaci poklesu napětí. Pokud je například vaše napětí 4,8 V - rozsah analogového čtení () 0 ~ 1023 se bude vztahovat na 0 ~ 4,8 V a ne na 0 ~ 5 V. Může to znít triviálně, pokud však používáte snímač, který vrací hodnotu jako napětí (např. Teplotní senzor TMP36) - vypočítaná hodnota bude špatná. V zájmu přesnosti tedy použijte externí napájecí zdroj.

Krok 2: Proč AnalogRead () vrací hodnotu mezi 0 a 1023?

Proč AnalogRead () vrací hodnotu mezi 0 a 1023?
Proč AnalogRead () vrací hodnotu mezi 0 a 1023?

To je způsobeno rozlišením ADC. Rozlišení (pro tento článek) je míra, do jaké lze něco reprezentovat číselně. Čím vyšší je rozlišení, tím větší je přesnost, s jakou lze něco reprezentovat. Rozlišení měříme z hlediska počtu bitů rozlišení.

Například 1bitové rozlišení by umožnilo pouze dvě hodnoty (dvě na sílu jedné)-nula a jedna. 2bitové rozlišení by umožnilo čtyři (dvě až dvě mocniny) hodnoty-nula, jedna, dvě a tři. Pokud bychom se pokusili změřit rozsah pěti voltů s dvoubitovým rozlišením a naměřené napětí bylo čtyři volty, náš ADC by vrátil číselnou hodnotu 3-protože čtyři volty klesají mezi 3,75 a 5V. Je snazší si to představit na obrázku.

Takže u našeho příkladu ADC s 2bitovým rozlišením může reprezentovat pouze napětí se čtyřmi možnými výslednými hodnotami. Pokud vstupní napětí klesne mezi 0 a 1,25, vrátí ADC numerickou hodnotu 0; pokud napětí klesne mezi 1,25 a 2,5, ADC vrátí číselnou hodnotu 1. A tak dále. S naším ADC rozsahem Arduino 0 ~ 1023-máme 1024 možných hodnot-nebo 2 do výkonu 10. Takže naše Arduino mají ADC s 10bitovým rozlišením.

Krok 3: Co je tedy AREF?

Abychom to zkrátili, když váš Arduino odebírá analogové hodnoty, porovnává napětí naměřené na analogovém pinu, který se používá, s tím, co je známé jako referenční napětí. Při běžném používání analogového čtení je referenční napětí provozním napětím desky.

U populárnějších desek Arduino, jako jsou desky Uno, Mega, Duemilanove a Leonardo/Yún, je provozní napětí 5V. Pokud máte desku Arduino Due, provozní napětí je 3,3 V. Pokud máte něco jiného - podívejte se na stránku produktu Arduino nebo se zeptejte svého dodavatele desky.

Pokud tedy máte referenční napětí 5V, každá jednotka vrácená analogRead () je oceněna na 0,00488 V. (To se vypočítá dělením 1024 na 5V). Co když chceme měřit napětí mezi 0 a 2 nebo 0 a 4,6? Jak by ADC věděl, co je 100% našeho napěťového rozsahu?

A v tom je důvod pro pin AREF. AREF znamená Analogový REFerence. Umožňuje nám napájet Arduino referenčním napětím z externího napájecího zdroje. Pokud bychom například chtěli měřit napětí s maximálním rozsahem 3,3 V, přivedli bychom na pin AREF pěkné hladké 3,3 V - možná z IC regulátoru napětí.

Pak by každý krok ADC představoval přibližně 3,22 milivoltů (rozdělte 1024 na 3,3). Všimněte si, že nejnižší referenční napětí, které můžete mít, je 1,1 V. Existují dvě formy AREF - interní a externí, pojďme se na ně podívat.

Krok 4: Externí AREF

Externí AREF je místo, kde na desku Arduino dodáváte externí referenční napětí. To může pocházet z regulovaného napájecího zdroje, nebo pokud potřebujete 3,3 V, můžete jej získat z 3,3 V pinu Arduina. Pokud používáte externí napájecí zdroj, nezapomeňte připojit GND ke kolíku GND Arduina. Nebo pokud používáte zdroj Arduno 3,3 V - stačí spustit propojku z 3,3 V na pin AREF.

Chcete -li aktivovat externí AREF, použijte ve void setup () následující:

analogReference (EXTERNÍ); // pro referenční napětí použijte AREF

Tím se nastaví referenční napětí na cokoli, co jste připojili ke kolíku AREF - což samozřejmě bude mít napětí mezi 1,1 V a provozním napětím desky. Velmi důležitá poznámka - při použití externí referenční hodnoty napětí musíte nastavit analogovou referenci na EXTERNÍ před použitím analogRead (). Zabráníte tím zkratu aktivního interního referenčního napětí a pinu AREF, což může poškodit mikrokontrolér na desce. Pokud je to pro vaši aplikaci nutné, můžete se vrátit zpět na provozní napětí desky pro AREF (tj. - zpět do normálu) s následujícím

analogReference (VÝCHOZÍ);

Nyní předvedeme externí AREF v práci. Následující skica pomocí 3.3V AREF měří napětí od A0 a zobrazuje procento celkového AREF a vypočítané napětí:

#include "LiquidCrystal.h"

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

int analogový vstup = 0; // náš analogový pin

int analogamount = 0; // ukládá příchozí hodnotu float procento = 0; // slouží k ukládání naší procentuální hodnoty plovoucí napětí = 0; // slouží k ukládání hodnoty napětí

neplatné nastavení ()

{lcd.begin (16, 2); analogReference (EXTERNÍ); // použijte AREF pro referenční napětí}

prázdná smyčka ()

{lcd.clear (); analogamount = analogRead (analogový vstup); procento = (analogové množství/1024,00)*100; napětí = analogové množství*3,222; // v milivoltech lcd.setCursor (0, 0); lcd.print ("% z AREF:"); lcd.print (procento, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (napětí, 2); zpoždění (250); }

Výsledky výše uvedené skici jsou uvedeny ve videu.

Krok 5: Interní AREF

Mikrokontroléry na našich deskách Arduino mohou také generovat interní referenční napětí 1,1 V a toto můžeme použít pro práci AREF. Jednoduše použijte řádek:

analogReference (VNITŘNÍ);

Pro desky Arduino Mega použijte:

analogReference (INTERNAL1V1);

v neplatném nastavení () a jste pryč. Pokud máte Arduino Mega, je k dispozici také referenční napětí 2,56 V, které se aktivuje pomocí:

analogReference (INTERNAL2V56);

Nakonec - než se pustíte do výsledků z vašeho pinu AREF, vždy proveďte kalibraci naměřených hodnot proti známému dobrému multimetru.

Závěr

Funkce AREF vám poskytuje větší flexibilitu při měření analogových signálů.

Tento příspěvek vám přinesl web pmdway.com - vše pro výrobce a nadšence do elektroniky s doručením zdarma po celém světě.

Doporučuje: