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.

Připojení analogových senzorů k Arduino, čtení hodnot senzorů

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.

Obecné schéma analogových senzorů a jejich propojení

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:

Schéma zapojení analogových senzorů

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).

Klasický oddělovač

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.

Schéma a konstrukční vztahy 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ů.

Nejjednodušší schéma zapojení termistoru

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.

Fotorezistor

Obrázek ukazuje připojení fotorezistoru k arduinu.

Schéma 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:

Jak připojit analogový senzor

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.

Analogový senzor na TMP36

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.

Teplotní rozsahy a výstupní napětí snímače

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.

Senzor linky

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).

Ostrý snímač vzdálenosti

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 i.electricianexp.com:

  • Jaký je rozdíl mezi analogovými a digitálními senzory?
  • Měření teploty a vlhkosti na Arduino - výběr způsobů
  • Jak se převádí analogový signál na digitální
  • Nejoblíbenější senzory pro Arduino
  • Jak je čidlo linky uspořádáno a jak funguje

  •