Leírás
Amikor egy Arduino vagy más mikrokontroller projektben elfogynak a digitális lábak, nem feltétlenül kell rögtön nagyobb vezérlőpanelre váltani. A 8 csatornás I/O – PCF8574/HLF8574 modul az I2C buszon keresztül nyolc további digitális I/O-vonalat ad a rendszerhez, miközben a vezérlő oldalán csak az SDA és SCL buszvonalat használja.
A nyolc port bemenetként és kimenetként is használható, de itt van egy fontos különbség a mikrokontrollerek megszokott GPIO-jához képest: a PCF8574 portjai kvázi kétirányúak. Nincs külön bemenet/kimenet irányregiszter. Ha egy lábat bemenetként szeretnél használni, az adott bitet magas állapotba kell írni, és ezután olvasható a láb tényleges szintje.
A 8 csatornás I/O – PCF8574/HLF8574 modul 3,3 V-os és 5 V-os rendszerekhez használható. Három címválasztó bit segítségével legfeljebb nyolc modul tehető ugyanarra az I2C buszra, így egy vezérlőről akár 64 további digitális I/O kezelhető.
A modul nem teljesítménymeghajtó. Gombok, kapcsolók, állapotjelek vagy kisebb jelzőterhelések kezelésére való; motor, relétekercs vagy más nagyobb terhelés esetén külön meghajtófokozatot kell tenni az I/O és a terhelés közé.
Mikor vegyük elő?
Tipikus helyzet: egy Arduino UNO-n már ott van a kijelző, néhány érzékelő, pár nyomógomb, LED-ek, relévezérlés, és egyszer csak elfogy a szabad GPIO. Ilyenkor a 8 csatornás I/O – PCF8574/HLF8574 modul nem új vezérlőt helyettesít, hanem a meglévő mellé ad nyolc távolról kezelhető digitális portot.
Az I2C busz előnye itt nem pusztán a kisebb vezetékszám. Ugyanazon az SDA-SCL páron több különböző I2C-eszköz is működhet, amennyiben a címeik nem ütköznek és a busz elektromos kialakítása megfelelő.
A PCF8574 esetében három címválasztó bit ad nyolc lehetséges címet. Ezért nyolc azonos címterű 8 csatornás I/O – PCF8574/HLF8574 modul használatával 64 digitális vonalig lehet eljutni anélkül, hogy újabb mikrokontroller-I/O-kat kellene feláldozni.
Mi történik a háttérben?
A vezérlő egyetlen bájtot ír vagy olvas az I2C buszon. A bájt nyolc bitje a P0-P7 portnak felel meg. Íráskor ezek állapotát állítjuk, olvasáskor pedig a portok pillanatnyi állapotát kapjuk vissza.
A szokatlan rész a bemenetkezelés. A PCF8574 nem rendelkezik hagyományos irányregiszterrel. Bekapcsoláskor az I/O-k magas állapotban indulnak, gyenge belső felhúzással. Ha egy portot bemenetként akarunk használni, azon 1-es állapotot kell hagyni. Ekkor egy külső jel lehúzhatja a vonalat alacsony szintre, amit olvasáskor már lát a vezérlő.
Ez egy nyomógombnál kifejezetten kényelmes lehet. Viszont ha valaki úgy kezeli, mint egy klasszikus push-pull GPIO-t, meglepetést okozhat a magas kimeneti állapot viselkedése. Ezért ennél a modulnál a bekötés mellett a programozási modell megértése is része a beüzemelésnek.
Mikor érdemes használni?
- Több nyomógomb vagy kapcsoló állapotának beolvasására, amikor már kevés a mikrokontroller szabad digitális bemenete.
- LED-es állapotjelzők vezérlésére megfelelő előtét- és terhelésméretezéssel.
- Kezelőpanelek bemeneteinek összegyűjtésére.
- Arduino-alapú oktatási projektekben a digitális portbővítés és az I2C busz működésének bemutatására.
- ESP32 vagy más 3,3 V-os vezérlő mellett további digitális vonalak kialakítására.
- AVR, PIC vagy ARM alapú vezérlésnél olyan feladatra, ahol nyolc lassabb digitális I/O fontosabb, mint a nagy kapcsolási sebesség.
- Több azonos funkciójú kezelő- vagy kijelzőelem vezérlésére, ha a címválasztással több 8 csatornás I/O – PCF8574/HLF8574 modul kerül egy buszra.
Mire kell figyelni beüzemeléskor?
| Mire figyelj? | Mit okoz? |
|---|---|
| Milyen tápfeszültségű a teljes I2C busz? | A modul 3,3-5 V rendszerben használható, de a busz minden résztvevőjének logikai szintjeit együtt kell kezelni. |
| Beállítottad az I2C-címet? | Két azonos című eszköz ugyanazon a buszon ütközni fog. |
| Bemenetként használod valamelyik P0-P7 lábat? | Az adott portbitet előbb magas állapotba kell írni, különben a külső jel nem tudja a vonalat rendesen vezérelni. |
| Nagyobb terhelést szeretnél kapcsolni? | Reléhez, motorhoz vagy más nagyobb fogyasztóhoz külön tranzisztoros vagy MOSFET-es meghajtás kell. |
| 400 kHz-re állítottad az I2C perifériát? | A PCF8574 és HLF8574 biztosan igazolt szabványos buszsebessége 100 kHz, ezért ehhez érdemes igazítani a buszt. |
| Több modult fűzöl fel? | Az A0-A2 címbeállításoknak különbözniük kell, és egy címkészletben legfeljebb nyolc modul használható. |
Kiválasztáskor ezekre figyelj
A legelső kérdés az, hogy valóban digitális I/O-ra van-e szükséged. A 8 csatornás I/O – PCF8574/HLF8574 modul nem mér analóg feszültséget, nincs benne ADC, és nem növeli a PWM hardvercsatornák számát sem.
Második döntési pont a sebesség. Kapcsolókhoz, LED-ekhez, kezelőszervekhez vagy lassú állapotjelekhez a PCF8574 jól illeszkedik. Nagy sebességű párhuzamos buszhoz vagy precíz időzítésű jelgeneráláshoz viszont nem ez a megfelelő eszköz.
A harmadik a terhelés. A portbővítő logikai I/O-eszköz, nem meghajtómodul. Ha relét, motort, nagyáramú LED-et vagy más teljesítményterhelést kapcsolnál, a PCF8574 csak a vezérlőjelet adja – a tényleges áramot külön fokozatnak kell kapcsolnia.
Végül nézd meg, hogy GPIO-bővítést vagy I2C buszbővítést keresel-e. Ha egyszerűen több digitális bemenet és kimenet kell, a 8 csatornás I/O – PCF8574/HLF8574 modul erre való. Ha viszont azonos című I2C eszközöket szeretnél külön buszágakra bontani, akkor TCA9548A-féle I2C multiplexer a megfelelő kategória.
Amikor nem ez lesz a jó megoldás
- Ne ezt válaszd, ha analóg jelet szeretnél mérni, mert a 8 csatornás I/O – PCF8574/HLF8574 modul csak digitális I/O-t ad.
- Ne közvetlenül erről hajts motort, relétekercset vagy nagyobb teljesítményű fogyasztót – ezekhez külön meghajtófokozat szükséges.
- Ne erre építs nagy sebességű párhuzamos adatátvitelt vagy pontos impulzusidőzítést.
- Ha nyolcnál lényegesen több I/O kell egyetlen áramkörből, érdemes nagyobb portbővítő kategóriát keresni.
- Ha nem GPIO-k száma kevés, hanem több azonos című I2C eszköz akad össze, akkor I2C multiplexer kell, nem portbővítő.
Egy részlet, amin sok múlhat
A PCF8574-nél a leggyakoribb félreértés a bemenet fogalma. Mikrokontrollernél megszoktuk, hogy pinMode(INPUT) vagy egy irányregiszter mondja meg, mi legyen a láb. Itt nincs ilyen külön irányregiszter. Bemenethez az adott portbitet 1-be kell írni, majd a láb állapotát visszaolvasni.
Ez egyetlen apró részlet, de ha kimarad, az egész modul könnyen úgy viselkedik, mintha rosszul lenne bekötve – miközben valójában csak a PCF8574 működési módja más.
Műszaki jellemzők
| Jellemző | Érték |
|---|---|
| Funkció: | 8 bites digitális I/O-portbővítő |
| Vezérlő IC: | PCF8574 / HLF8574 funkciójú kivitel |
| Kommunikáció: | I2C / IIC / TWI |
| Digitális I/O-k száma: | 8, P0-P7 |
| I/O felépítése: | Kvázi kétirányú |
| Panel tápfeszültsége: | 3,3-5 V |
| Biztosan igazolt I2C órajel: | Legfeljebb 100 kHz |
| Címválasztás: | 3 bit, A0-A2 |
| Azonos címterű modulok száma: | Legfeljebb 8 |
| Elérhető I/O 8 modullal: | 64 |
| Bekapcsolási portállapot: | Magas állapot, gyenge belső felhúzással |
| Belső felhúzóáram IC-szinten: | kb. 100 µA |
| INT megszakítási funkció IC-szinten: | Aktív alacsony, open-drain |
| Programozási környezet: | Arduino, C, BASCOM-AVR, stb |
Dokumentáció
Csomag
- 1 db 8 csatornás I/O – PCF8574/HLF8574 modul











Telek György –
Gyorsan megérkezett és jól működik a modul.