hamik166

17. díl – OctopusLAB
Další základní vstupy a výstupy

Tentokrát si ukážeme některé možnosti, jak připojit k ATtiny různé vstupní nebo výstupní obvody (I/O). Známe už ty nejjednodušší, kam patří tlačítko jako vstup a svítivá dioda pro výstup. ATiny má omezený počet nožiček, proto využijeme pro I/O zatím dva PINy. Zbylé si ponecháme na komunikaci, UART pro možnost ladění se sériovým displejem a I2C pro zapojení ATtiny s režimu „slave“ jako inteligentní senzor nebo akční prvek ve větších projektech.


Vstupy (Inputs)

V řídící a regulační technice potřebujeme „načíst“ hodnoty měřených veličin do mikrokontroléru. K obvodům, které to mají na starosti patří senzory (čidla). Ty převádějí obecné fyzikální veličiny na jiné, které umíme dále zpracovat. Nejčastěji se veličiny převádějí na napětí pro analogový vstup, ze kterého pak mikrokontrolér pomocí ADC umí získat číslo. ADC (Analog-Digital converter) je analogově digitální převodník.

Princip si ukážeme na hypotetickém tříbitovém převodníku. Tři bity nám určují osm možných stavů (dvě na třetí = 2 * 2 * 2 = 8, hodnoty 0 až 7).
Číslo, které je dáno převodníkem, udává tzv. RAW hodnotu. Přepočet na volty bývá lineární, stačí jen vynásobit patřičnou konstantou.
Value [V] = k * Value_RAW [num]
Dnešní mikrokontroléry mívají alespoň 10 bitové ADC, jejich výstup tedy může dle vstupu od nuly do maximálního napětí nabývat 1024 hodnot (2^10).

Další možností je převádět veličiny i na pulzy (pro digitální vstup). Následně pak měříme délku těchto impulsů (časové trvání) a nebo periodické pulzy měříme jako frekvenci. (Využívá se například pro měření kapacity s obvodem 555 a pod.)

Odporový dělič (oranžový obdélník, první nákres úplně vlevo)
Chceme-li měřit vyšší napětí, než by ATtiny snesl na vstupu Uin (například 12V) použijeme odporový dělič. Výsledné napětí (max. 12V), je dáno součtem napětí U1 (na odporu R1) a U2 na odporu R2. Jejich poměrem docílíme snížení na vhodnou mezní hodnotu.
Třeba 3:1 (30k + 10k) nám 12V sníží na 12:(3+1)=12/4=3V, což i při napájení Vcc 3.3V je přijatelné a s rezervou. Děličem protéká trvale proud (od Vcc do GND) je proto vhodné mít odpor co největší, ale při velkých odporech zase dochází k velkému zkreslení a snížení citlivosti. Proto se odpory volí v rozsahu 10k – 50k (podle senzorů).

Fotoodpor i termistor jsou založeny na změně odporu, která souvisí s měřenou veličinou. Změnu odporu měříme jako změnu napětí na odporovém děliči. Roste-li jedna veličina (třeba intenzita světla nebo teplota), chceme někdy zachovat, že roste i napětí. Podle toho se pak zapojuje senzor na pozici R1 (nahoru) nebo R2 (dolů).
Je potřeba vzít v úvahu, že změna zmíněných veličin už není přímo úměrná odporu. Není lineární, ale v určitém rozsahu se výrobce snaží dosáhnout co nejmenší odchylky – třeba u termistoru na měření pokojové teploty to bude v okolí 20 stupňů „takřka lineární“, je dobré to proměřit a v mikrokontroléru případně povést nějak korekce.


Výstupy (Outputs)

Identický koncept (relé a MOS-FETu) máme odzkoušený na vývojové a prototypové desce IoTBoard – https://www.octopuslab.cz/iot-board/

Relé používáme pro spínání střídavých i stejnosměrných napětí, proudové omezení je dáno „velikostí“ relé. V našem zapojení ho spíná tranzistor T (BC337, 500mA). Všimněte si ochranné diody D, která svádí zpětné proudy a tím tranzistor chrání. Odpor R do báze může být i 10k.

MOS-FET se hodí pro rychlé spínání (i PWM) LED pásku nebo řízení větráku. Tranzistor má vnitřní odpor (podle požadavků vybíráme s co nejmenším). Máme-li na vstupu TTL hodnoty (0-5V), abychom dosáhli úplného otevření, použili jsme optický člen (vazba fotodioda-fototranzistor, tzv. opto kopler, v jednom obvodu: PC817) R1 omezuje proud do LED (používáme 300 – 1000ohm) a R2 je pull-down 10k.