Kategorie: Obvody mikrokontrolérů
Počet zobrazení: 18998
Komentáře k článku: 0
Připojení analogových senzorů k Arduino, čtení senzorů
Senzory se používají k měření množství, podmínek prostředí a reakcí na změny stavů a pozic. Na jejich výstupu mohou být digitální signály sestávající z jedniček a nul a analogové sestávající z nekonečného počtu napětí v určitém intervalu.
O senzorech
Podle toho jsou senzory rozděleny do dvou skupin:
1. Digitální.
2. Analogové.
Pro čtení digitálních hodnot lze v našem případě použít digitální i analogové vstupy mikrokontroléru Avr na desce Arduino. Analogová čidla musí být připojena přes analogově digitální převodník (ADC). ATMEGA328, to je to, co je nainstalované ve většině desek ARDUINO (více o tom na webu je článek), obsahuje ve svém obvodu vestavěné ADC. K dispozici je až 6 analogových vstupů.
Pokud vám to nestačí, můžete použít externí externí ADC pro připojení k digitálním vstupům, ale to zkomplikuje kód a zvýší jeho objem díky přidání algoritmů zpracování a řízení ADC. Téma analogově-digitálních převodníků je dostatečně široké, abyste o nich mohli vytvořit samostatný článek nebo cyklus. Je snazší použít desku s velkým počtem nebo multiplexery. Pojďme se podívat, jak připojit analogové senzory k Arduino.
Obecné schéma analogových senzorů a jejich propojení
Senzorem může být i konvenční potenciometr. Ve skutečnosti se jedná o odporový snímač polohy, na tomto principu implementují kontrolu hladiny kapalin, úhlu sklonu, otevření něčeho. Může být připojen k arduinu dvěma způsoby.
Výše uvedený obvod umožňuje odečítat hodnoty od 0 do 1023, protože veškerý pokles napětí na potenciometru. Zde funguje princip děliče napětí, v kterékoli poloze motoru je napětí distribuováno lineárně na povrchu odporové vrstvy nebo na logaritmické stupnici (v závislosti na potenciometru), ta část napětí, která zůstává mezi výstupem posuvníku (kluzný kontakt) a zemí (gnd), se dostane na vstup. Na prkénku vypadá toto spojení takto:
Druhá možnost je připojena podle klasického odporového děliče, kde napětí v bodě maximálního odporu potenciometru závisí na odporu horního odporu (na obrázku R2).
Obecně je odporový dělič velmi důležitý nejen v oblasti práce s mikrokontroléry, ale obecně také v elektronice. Níže vidíte obecné schéma a vypočtené poměry pro stanovení hodnoty napětí na dolním rameni.
Takové připojení je charakteristické nejen pro potenciometr, ale pro všechny analogové senzory, protože většina z nich pracuje na principu změny odporu (vodivosti) pod vlivem vnějších zdrojů - teploty, světla, záření různých druhů atd.
Následuje nejjednodušší schéma zapojení termistorv zásadě lze na jeho základě vyrobit teploměr. Přesnost odečtů však bude záviset na přesnosti tabulky převodu odporu na teplotu, na stabilitě zdroje energie a koeficientech změny odporu (včetně odporu horní části paže) pod vlivem stejné teploty. To lze minimalizovat výběrem optimálních odporů, jejich výkonu a provozních proudů.
Stejným způsobem můžete jako světelný senzor připojit fotodiody, fototranzistory. Fotoelektronika našla uplatnění v senzorech, které určují vzdálenost a přítomnost objektu, z nichž jeden budeme zvažovat později.
Obrázek ukazuje připojení fotorezistoru k arduinu.
Softwarová část
Než začnu mluvit o připojení konkrétních senzorů, rozhodl jsem se zvážit software pro jejich zpracování. Všechny analogové signály jsou čteny ze stejných portů pomocí příkazu analogRead ().Za zmínku stojí, že Arduino UNO a další modely s atmosférou 168 a 328 atmega mají 10bitový ADC. To znamená, že mikrokontrolér vidí vstupní signál jako číslo od 0 do 1023 - celkem 1024 hodnot. Pokud uvažujete, že napájecí napětí je 5 voltů, pak vstupní citlivost:
5/1024 = 0,0048 V nebo 4,8 mV
To znamená, že při hodnotě 0 na vstupu je napětí 0 a hodnotě 10 na vstupu - 48 mV.
V některých případech je pro převod hodnot na požadovanou úroveň (například pro přenos na výstup PWM) 1024 děleno číslem a v důsledku dělení by mělo být dosaženo požadovaného maxima. Funkce mapy (zdroj, nízká, vysoká, vysoká, vysoká, nízká) funguje jasněji, kde:
-
nízký - nižší počet před převodem podle funkce;
-
vch - horní;
-
VCh - nižší číslo po zpracování funkcí (na výstupu);
-
VHV - top.
Praktická aplikace pro převod funkce vstupní hodnoty pro přenos do PWM (maximální hodnota 255, pro převod dat z ADC na výstupní PWM 1024 dělený 4):
Varianta 1 - rozdělení.
int x;
x = analogRead (pot) / 4;
// bude přijato číslo od 0 do 1023
// vydělíme jej 4, dostaneme celé číslo od 0 do 255 analogWrite (led, x);
Varianta 2 - funkce MAP - otevírá více příležitostí, ale více o tom později.
prázdná smyčka ()
{int val = analogRead (0);
val = mapa (val, 0, 1023, 0, 255);
analogWrite (led, val); }
Nebo ještě kratší:
analogWrite (led, map (val, 0, 1023, 0, 255))
Ne všechny senzory mají na výstupu 5 V, tj. číslo 1024 není vždy vhodné rozdělit, aby bylo dosaženo stejných 256 pro PWM (nebo jakýkoli jiný). To může být 2 a 2,5 volty a další hodnoty, když maximální signál bude například 500.
Populární analogové senzory
Obecný pohled na senzor pro arduino a jeho připojení je uveden níže:
Obvykle existují tři výstupy, může to být čtvrtý - digitální, ale to jsou funkce.
Vysvětlení označení výstupů analogového senzoru:
-
G - mínus výkon, společný autobus, zem. Může být označeno jako GND, „-“;
-
V - plus výkon. Může být označen jako Vcc, Vtg, "+";
-
S - výstupní signál, možný zápis - Out, SGN, Vout, sign.
Začátečníci se naučí, jak číst hodnoty senzorů, vybírat projekty všech druhů teploměrů. Takové senzory jsou v digitálním provedení, například DS18B20, a analogové - jedná se o všechny druhy mikroobvodů jako LM35, TMP35, TMP36 a další. Zde je příklad modulární konstrukce takového senzoru na desce.
Přesnost senzoru je od 0,5 do 2 stupňů. Vestavěné na čipu TMP36, stejně jako mnoho jeho analogů, jsou jeho výstupní hodnoty 10 mV / ° C. Při 0 ° je výstupní signál 0 V a poté se přidá 10 mV na 1 stupeň. To znamená, že při 25,5 stupně je napětí 0,255 V, je možná odchylka v rámci chyby a samoohřívání IC krystalu (až do 0,1 ° C).
V závislosti na použitém mikroobvodu se mohou měřicí rozsahy a výstupní napětí lišit, viz tabulka.
U vysoce kvalitního teploměru však hodnoty nemůžete jen číst a zobrazovat na LCD indikátoru nebo sériovém portu pro komunikaci s PC, pro stabilitu výstupního signálu celého systému jako celku musíte průměrovat hodnoty ze senzorů, analogových i digitálních, v určitých mezích, zatímco aniž by to ovlivnilo jejich rychlost a přesnost (vše je omezeno). Důvodem je přítomnost šumu, rušení, nestabilních kontaktů (u odporových senzorů založených na potenciometru viz závady čidla hladiny vody nebo paliva v nádrži automobilu).
Kódy pro práci s většinou senzorů jsou dost objemné, takže jim nedám všechny, lze je snadno najít v síti pomocí požadavku „sensor + Arduino name“.
Dalším senzorem, který robotičtí inženýři arduino často používají, je senzor linky. Je založeno na fotoelektronických zařízeních, typ fototranzistoru.
S jejich pomocí robot, který se pohybuje podél linie (používá se v automatizované výrobě k dodání dílů), určuje přítomnost bílého nebo černého pruhu. Na pravé straně obrázku jsou viditelná dvě zařízení podobná LED. Jedním z nich je LED, která může emitovat v neviditelném spektru, a druhým je fototranzistor.
Světlo se odráží od povrchu, pokud je tma - fototranzistor nepřijímá odražený proud, ale pokud světlo přijímá a otevírá se. Algoritmy, které vložíte do mikrokontroléru, zpracovávají signál a určují správnost a směr pohybu a opravují je. Optická myš, kterou při čtení těchto řádků pravděpodobně držíte v ruce, je uspořádána podobně.
Doplním se sousedním senzorem - dálkovým senzorem od Sharpu, používá se také v robotice, stejně jako v podmínkách sledování polohy objektů v prostoru (s odpovídající TX chybou).
Funguje na stejném principu. Knihovny a příklady náčrtů a projektů s nimi jsou k dispozici ve velkém počtu na stránkách Arduino.
Závěr
Použití analogových senzorů je velmi jednoduché a pomocí snadno se naučitelného programovacího jazyka Arduino se rychle učíte jednoduchým zařízením. Tento přístup má ve srovnání s digitálními protějšky značné nevýhody. Je to kvůli velké variabilitě parametrů, což způsobuje problémy při výměně senzoru. Možná budete muset upravit zdrojový kód programu.
Je pravda, že jednotlivá analogová zařízení obsahují zdroje referenčního napětí a stabilizátory proudu, což má pozitivní vliv na opakovatelnost konečného produktu a zařízení v hromadné výrobě. Použitím digitálních zařízení lze předejít všem problémům.
Digitální obvody jako takové snižují potřebu vyladit a upravit obvod po montáži. To vám dává příležitost sestavit několik stejných zařízení do stejného zdrojového kódu, jehož podrobnosti poskytnou stejné signály, s odporovými senzory je to vzácné.
Viz také na našem webu:Připojení externích zařízení k Arduino
Viz také na e.imadeself.com
: