Egyszerű elektronika: Felhúzó-ellenállás

Számos módon hozhatunk létre digitális kimeneti jelet - az áramköreink a működésük során minden esetben magas vagy alacsony állapotban találhatóak meg. Ez a két logikai érték egyszerűen  két feszültségszinttel reprezentálható. A kimenet ilymódon történő vezérlése egy egyszerű kéttranzisztoros megoldással is már könnyen megvalósítható:

Magas? Alacsony?

A két képen a logikai magas ("1"; High; Vcc) illetve a logikai alacsony ("0"; Low; GND) szintek keletkezését láthatjuk két tranzisztorral megvalósítva.

Az első képen a ctrlA vezérlés alacsony szinten van (a felső tranzisztor nyit) és a ctrlB vezérlés is alacsony szintű (alsó tranzisztor zár). Logikai magas szint mérhető így a tranzisztorok közös pontján.

A második képen a ctrlA vezérlés és a ctrlB is magas szinten van, így a tranzisztorok közös pontja közel GND szintre kerül.

Ha jól megnézzük az ábrákat, láthatjuk, hogy a kimenet szintjét egyedül a ctrlA illetve a ctrlB kivezetésen legő jelszint határozza meg, azaz ez dönti el, hogy melyik tranzisztor fog vezetni. Ha - mint itt az ábrán látható módon - PNP és NPN tranzisztorpárt használunk, akkor a kimenet beállítása a közösített bázison át egyszerűen megoldható. Ez a megoldás modellszerűen az ATMega kivezetéseit mutatta be - egyszerűsítve. A ctrlA és ctrlB vonalakat ezesetben a chipek belső logikkája vezérli.

De nem minden esetben kell ennyi sok alkatrészből építkezni. A felső tranzisztor egyszerűen helyettesíthető egy ellenállással:

Az ellenállás - még a chip tokon belül, szilíciumból előállítva is - sokkal olcsóbb, mint a tranzisztor: de ami ennél sokkal fontosabb, hogy rugalmasabban kezelhető. Az alsó kapcsolótranzisztort azért nem hagyhatjuk el:)! Amikor az alsó tranzisztor kinyit, akkor a kollektor potenciálja a GND-re kerül. Amikor zárt állapotú, akkor pedig a "lebegő" kollektort az ellenállás magas szintre húzza. Fontos! A megoldás addig működik csak megfelelően, amíg nem akarjuk nagy árammal terhelni a kimenetet. A felhúzóellenállás szokásos értéke 1k..100k közt van - ennek az a következménye, hogy az áramkör  logikai 1 kimeneti szinten csak néhány uA terhelés esetén működik megfelelően. Ez viszont a legtöbb logikai áramkörhöz bőven elegendő (Logikai 0 esetén a terhelést a tranzisztor áteresztőképessége határozza meg).

Mire jó ez nekünk?

Ahol ilyen megoldásokat használhatunk, az jellemzően a 0..12V digitális jelek kezelése. Egyszerűen egy tranzisztor és egy felhúzó-ellenállás elegendő a megvalósításhoz. De ugyanez a trükk járható 3.3V->5V átalakításhoz is, amikor az egyik áramkörünk 3.3V-ról jár, míg a fogadó oldal 5V feszültségű jelet igényel. Azonban ez a megoldás akkor is működik, ha a céláramkör a kisebb feszültségű!

Ilyen esetekben a tranzisztor, mint kapcsolóelem funkcióját hazsnáljuk ki.

Még egy különleges tulajdonsága van ennek a kapcsolásnak: számos tranzisztoros kimenet dolgozhat így egyetlen felhúzóellenállásra! Ez egy egyszerű logikai áramkör tud lenni, ugyanis, ha valamelyik tranzisztor vezet, akkor logikai 0 az eredmény, míg ha az összes zárt állapotú, akkor logikai 1 a kimeneti jelszint. Ahol ilyen eljérást használhatunk az a logikat foglaltságjelzés egy buszon keresztül - egyetlen vezetéket használva! De ezt hívják még logikai vagy kapcsolásnak is.

Az ilyen tranzisztoros-ellenállásos buszrendszer több különálló eszköz együttes működését teljesen jól támogatja. Ha egyidőben egy eszközzel kell kommunikálni és elektromosan egy buszhálózaton vannak, akkor mindenféle extra eszköz nélkül ez a nyitott kollektor + ellenállás könnyen megvalósítható.

Fontos! A szabályok közé fel kell írni, hogy a lehúzó tranzisztor képes nagyobb áramokat kapcsolni; így ha ilyen kimenetre LED-et kapcsolunk, akkor az csak a kimenet és a + jelszint közt fog működni. A kimenet és a GND közt nem működik! Ilyen chip például a PCF8574 jelű portbővítő!

És még egy tanács, amit jó ha tudunk: a kimenet a GND felé nem érzékeny a rövidzárra. A kimeneti tranzisztor ekkor nem tud kapcsolni, hiszen nincsen a C-E közt feszültségkülönbség. Egyszerűen a belső felhúzóellenállás korlátozza a zárlati áramot. Fontos: + irányban nem rövidzárvédett a kapcsolás, mert a tranzisztor ekkor a + és a - közt fog vezetni!

Fontos, hogy a tranzisztor bázisára pozitív feszültséget adva, azonnal vezetni fog.

A nyitott kollektoros - tranzisztoros megvalósítás klasszikus példája az I2C/TWI buszrendszer. A sok tranzisztror és a felhúzóellenállás, mint kimenet, és a tranzisztor-ellenállás közös pontja, mint logikai bemeneti jel nagyon könnyen teszi megvalósíthatóvá a kétirányú kommunikációt. Az AVR/ATMega chipek esetén a felhúzó ellenállás értéke (ami egy külön járulékos tranzisztorral kapcsolgatható) 20..50 kohm közötti (erről bővebben az "A vagy nem A" cikkben volt szó).

És mi az a lehúzó ellenállás?

Technikailag megvalósítható az a megoldás is, amikor a transzisztor a tápfeszültség felé kerül beépítve, és az ellenállás a GND felé került bekötésre. Ezt a technikát kevéssé használják és a PNP tranzisztor kialakítása miatt drágább is lenne. Az ATMega chipcsaládban csak a felhúzóellenállások érhetőek el, a gyljes gyártmánypalettában nem található olyan chip ahol logikai lehúzóellenállás vagy fordított logika került volna beépítésre.

TavIR-Facebook