Digitális kivezetések

Az Arduino kivezetései bemenetként (INPUT) vagy kimenetként (OUTPUT) konfigurálhatók. Ez a dokumentum elmagyarázza a kivezetések működését ezekben az üzemmódokban. Bár ennek a dokumentumnak a címe a digitális kivezetésekre utal, fontos megjegyezni, hogy az Arduino (Atmega) analóg kivezetéseinek túlnyomó többsége pontosan ugyanúgy konfigurálható és használható, mint a digitális kivezetések.

Az INPUT-ként konfigurált kivezetések tulajdonságai

Az Arduino (Atmega) kivezetései alapértelmezés szerint bemenetek, így nem szükséges őket kifejezetten bemenetként deklarálni a pinMode() segítségével, ha bemenetként használja őket. Az így konfigurált kivezetések úgynevezett nagy impedanciájú állapotban vannak. A bemeneti kivezetések rendkívül kis igényt támasztanak az általuk mintavételezett áramkörrel szemben, ami egy 100 megohmos soros ellenállásnak felel meg a kivezetés előtt. Ez azt jelenti, hogy nagyon kevés áramra van szükség ahhoz, hogy a bemeneti kivezetést egyik állapotból a másikba állítsa, és alkalmassá tegye a kivezetéseket olyan feladatokhoz, mint a kapacitív érintés-érzékelő megvalósítása, a LED-ek fotodiódaként történő olvasása vagy egy analóg érzékelő olvasása egy sémával, mint például az RCTime.

Ez azonban azt is jelenti, hogy a pinMode(pin, INPUT)-ként konfigurált kivezetések, amelyekhez semmi sem csatlakozik, vagy amelyekhez olyan vezetékek vannak csatlakoztatva, amelyek nem csatlakoznak más áramkörökhöz, látszólag véletlenszerű változásokat jeleznek a kivezetések állapotában, és elektromos zajt vesznek fel a környezet, vagy egy közeli kivezetés állapotának kapacitív csatolásából.

INPUT-ként konfigurált kivezetések felúzó ellenállásokkal

Gyakran érdemes egy bemeneti kivezetést ismert állapotba hozni, ha nincs bemenet. Ez megtehető egy felhúzó ellenállás (+5 V-hoz csatlakoztatva), vagy egy lehúzó ellenállás (a földhöz csatlakoztatva) hozzáadásával a bemeneten. Egy 10 kohmos ellenállás megfelelő érték felhúzó vagy lehúzó ellenállásnak.

INPUT_PULLUP-ként konfigurált kivezetések tulajdonságai

Az Atmega chipbe 20 kohm-os felhúzó ellenállások vannak beépítve, amelyek szoftverből érhetők el. Ezek a beépített felhúzó ellenállások a pinMode() INPUT_PULLUP beállításával érhetők el. Ez gyakorlatilag megfordítja az INPUT mód viselkedését, ahol a HIGH azt jelenti, hogy az érzékelő ki van kapcsolva, és a LOW azt, hogy be van kapcsolva.

Ennek a felhúzásnak az értéke a használt mikrokontrollertől függ. A legtöbb AVR-alapú kártyán az érték garantáltan 20kΩ és 50kΩ között van. Az Arduino Due-n ez 50kΩ és 150kΩ között van. A pontos értékért tekintse meg a mikrokontroller kártya adatlapján.

Ha egy érzékelőt egy INPUT_PULLUP-pal konfigurált kivezetéshez csatlakoztat, a másik végét a földhöz kell csatlakoztatni. Egy egyszerű kapcsoló esetén ez azt eredményezi, hogy a kivezetés HIGH állapotú, ha a kapcsoló nyitva van, és LOW állapotú, amikor a kapcsolót megnyomja.

A felhúzó ellenállások elegendő áramot biztosítanak a bemenetként konfigurált kivezetéshez csatlakoztatott LED halvány megvilágításához. Ha egy projektben a LED-ek látszólag működnek, de nagyon halványan, akkor valószínűleg ez történik.

A felhúzó ellenállásokat ugyanazok a regiszterek (belső chip-memóriahelyek) vezérlik, amelyek azt szabályozzák, hogy egy kivezetés HIGH vagy LOW legyen. Következésképpen egy olyan kivezetésnél, amely úgy van konfigurálva, hogy bekapcsolja a felhúzó ellenállásokat, amikor a kivezetés INPUT, akkor a kivezetés HIGH-ként lesz konfigurálva, ha a kivezetést ezután OUTPUT-ra kapcsolják a pinMode() segítségével. Ez a másik irányban is működik, és a HIGH állapotban hagyott kimeneti kivezetéseknél a felhúzó ellenállások be lesznek állítva, ha pinMode()-dal bemenetre állítjuk.

Az Arduino 1.0.1 előtt a belső felhúzásokat a következő módon lehetett konfigurálni:

pinMode(pin, INPUT);      // a kivezetés bemenetre állítása
digitalWrite(pin, HIGH);  // a felhúzó ellenállás bekapcsolása

MEGJEGYZÉS: A 13-as digitális kivezetést nehezebb digitális bemenetként használni, mint a többi digitális kivezetést, mivel tartalmaz egy LEDet és egy ellenállást, amely a legtöbb kártyán a kártyára van forrasztva. Ha engedélyezi a belső 20 kohm-os felhúzó ellenállását, akkor a várt 5V helyett 1,7 V körül fog maradni, mert az alaplapi LED és a soros ellenállás lehúzza a feszültségszintet, vagyis mindig ALACSONY visszatérést jelent. Ha a 13-as kivezetést kell használnia digitális bemenetként, állítsa a pinMode() értékét INPUT értékre, és használjon külső lehúzó ellenállást.

OUTPUT-ként konfigurált kivezetések tulajdonságai

A pinMode() segítségével OUTPUT-ként konfigurált kivezetések alacsony impedanciájú állapotban vannak. Ez azt jelenti, hogy jelentős mennyiségű áramot tudnak biztosítani más áramkörök számára. Az Atmega kivezetések akár 40 mA (milliamper) áramforrást (pozitív áramot biztosítanak) vagy elnyelhetnek (negatív áramot biztosítanak) más eszközökhöz/áramkörökhöz. Ez elegendő áramerősség ahhoz, hogy fényesen világítson egy LED (ne felejtse el a soros ellenállást), vagy például sok érzékelőt működtessen, de nem elegendő a legtöbb relé, mágnesszelep vagy motor működtetéséhez.

Az Arduino kivezetésjein fellépő rövidzárlatok vagy a nagy áramerősségű eszközök működtetésének kísérlete károsíthatja vagy tönkreteheti a kivezetésben lévő kimeneti tranzisztorokat, vagy károsíthatja a teljes Atmega chipet. Ez gyakran "halott" kivezetést eredményez a mikrokontrollerben, de a maradék chip továbbra is megfelelően működik. Emiatt célszerű a KIMENETI kivezetéseket más, 470Ω-os vagy 1k ellenállású eszközökhöz csatlakoztatni, kivéve, ha egy adott alkalmazáshoz maximális áramfelvétel szükséges a kivezetésekből.

Lásd még