Leírás
Egy kezelőpanellel nagyon gyorsan el lehet fogyasztani egy mikrokontroller összes szabad lábát. Nyolc kapcsoló, néhány visszajelző LED, két végállás, és már kezdődik a GPIO-k újraosztása. A PCF8575 16 csatornás I/O expander modul erre ad egyszerű kerülőutat: SDA és SCL vezetéken keresztül 16 további digitális vonalat ad a rendszerhez.
A portok P00-P07 és P10-P17 néven két nyolcas csoportban érhetők el. Mindegyik használható digitális bemenetként vagy kimenetként, a működésük viszont eltér egy megszokott mikrokontroller GPIO-tól. A PCF8575 kvázi kétirányú portokat használ, külön irányregiszter nélkül. Bemenethez az adott bitet először magas állapotba kell írni.
Három címválasztó pont – A0, A1 és A2 – segítségével nyolc PCF8575 16 csatornás I/O expander modul kerülhet ugyanarra az I2C buszra. Ezzel 128 digitális vonalig lehet eljutni anélkül, hogy minden jel külön mikrokontroller-lábat foglalna.
A panel 2,5-5,5 V-ról működik, az I2C busz igazolt felső órajele 400 kHz. INT megszakítási kimenet is rendelkezésre áll, így bemeneti változásnál a vezérlőnek nem feltétlenül kell folyamatosan végigolvasnia mind a 16 portot.
Hogyan kerül be egy valódi kapcsolásba?
Vegyünk egy 12 gombos kezelőpanelt négy visszajelző LED-del. Közvetlen bekötésnél ehhez már 16 GPIO kellene. A PCF8575 16 csatornás I/O expander modul ugyanezt az I2C busz mögé teszi, miközben a mikrokontroller oldalán az SDA és SCL kapcsolat marad.
Gomboknál a kvázi kétirányú működés számít. A bemenetként olvasandó bitet HIGH-ra kell írni. Ilyenkor a belső gyenge felhúzás tartja magas állapotban, a külső kapcsoló pedig GND felé lehúzhatja. Ha előzőleg LOW-t írtál ugyanarra a portra, a láb továbbra is lefelé hajt, így bemenetként egészen mást fogsz látni, mint amit várnál.
Kimenetnél szintén van egy kis csavar. LOW irányba a port sokkal erősebben tud áramot nyelni, mint amennyit HIGH állapotban forrásként ki tud adni. LED-nél ezért célszerű a táp felől, előtétellenálláson keresztül a PCF8575 lába felé kötni a diódát, majd LOW szinttel bekapcsolni.
Relétekercset, motort vagy nagyobb LED-terhelést már ne bízz közvetlenül a portra. Ilyen fogyasztóhoz tranzisztor, MOSFET, ULN2803 vagy más megfelelő meghajtófokozat kell.
Címzés, megszakítás és programozás
A0-A2 három címbitet ad. A PCF8575 címtartománya 0x20-0x27, ezért nyolc azonos eszköz fér el egy buszon. Ha két panel ugyanazt a címbeállítást kapja, a vezérlő ugyanarra a címre két áramkört fog megszólítani, ami külön vezérlésnél már gondot okoz.
Az INT vonal bemeneti állapotváltozásnál jelezhet a mikrokontrollernek. Ez sokgombos kezelőpanelnél hasznos: a főprogramnak nem kell állandóan az I2C buszt kérdezgetnie. Az INT open-drain kimenet, így megfelelő felhúzást igényel.
Arduino környezetben kész PCF8575 könyvtárak is rendelkezésre állnak. A Rob Tillaart PCF8575 könyvtára például kezeli az egyes lábak és a teljes 16 bites port olvasását, írását, valamint a 0x20-0x27 címtartományt.
Hol jön jól?
- Sok nyomógombbal vagy kapcsolóval épített kezelőpanelen.
- Végálláskapcsolók és egyszerű digitális érzékelőjelek összegyűjtésénél.
- Több státusz-LED kezelésénél megfelelő előtétellenállással.
- Arduino vagy ESP32 rendszerben, amikor már kevés a szabad GPIO.
- Raspberry Pi mellett egyszerű digitális bemenetek és kimenetek bővítésére.
- Makett-, automatika- vagy vezérlőpanelen sok lassan változó digitális jel kezelésére.
- 8 × 8 billentyűzetmátrix vagy más sokkapcsolós kezelőfelület kialakításánál megfelelő programozással.
- Több külön kezelőpanel közös I2C buszra fűzésénél.
Mire kell figyelni beüzemeléskor?
| Mire figyelj? | Mit okoz? |
|---|---|
| Bemenetként szeretnéd olvasni valamelyik portot? | Az adott bitet előbb HIGH állapotba kell írni, mert a PCF8575 külön irányregiszter helyett kvázi kétirányú portokat használ. |
| Az A0-A2 címbeállítás minden panelen különbözik? | Azonos cím mellett két expander nem vezérelhető egymástól függetlenül ugyanazon a buszon. |
| 400 kHz fölé állítottad az I2C buszt? | A PCF8575 igazolt maximális buszsebessége 400 kHz. |
| LED-et közvetlenül kötnél a kimenetre? | A port LOW irányban erősebb, ezért a LED-et előtétellenállással a táp felől célszerű kapcsolni. |
| Relét vagy motort vezérelnél? | A port csak kisáramú digitális terheléshez való, teljesítményfokozatot külön kell hozzáadni. |
| 3,3 V-os és 5 V-os eszköz kerül ugyanarra az I2C buszra? | A busz felhúzási feszültségét és a vezérlő megengedett jelszintjét együtt kell ellenőrizni. |
| INT kimenetet használsz? | Az INT open-drain jel, megfelelő felhúzással kell bekötni. |
| Analóg jelet vagy valódi PWM-et szeretnél? | A PCF8575 digitális portbővítő, ADC-t és hardveres PWM-et nem tartalmaz. |
Vásárlás előtt ezeket nézd meg
A PCF8575 16 csatornás I/O expander modul akkor passzol igazán, amikor sok egyszerű digitális jel gyűlik össze. Gombok, kapcsolók, végállások és állapotjelzők jól illenek hozzá. Gyors időkritikus jelekhez már kevésbé szerencsés, mert minden hozzáférés az I2C buszon keresztül történik.
A 16 vonal miatt ugyanannyi I/O-hoz feleannyi portbővítő kell, mint egy nyolcbites PCF8574 esetén. Ettől még a programozási logika hasonló: a kvázi kétirányú port bemenetként való kezelésére figyelni kell.
A címzés 0x20-0x27 tartományban mozog. Ha más I2C eszköz is ugyanezeket a címeket használja, a busz címkiosztását még a szerelés előtt érdemes összeírni.
A kimeneti áramnál ne a 25 mA-es chiphatárból indulj ki LED-tervezéskor. A PCF8575 LOW irányban erősebb, HIGH oldalon jóval gyengébb, ezért a kimenet nem általános push-pull teljesítménymeghajtó.
Mikor keress más típust?
- Analóg feszültség méréséhez ADC kell.
- Több valódi PWM-csatornához PWM-vezérlő, például erre készült periféria szükséges.
- Relé, motor vagy nagyobb teljesítményű LED közvetlen meghajtásához teljesítményfokozat kell.
- Ha részletes irányregiszterekre, több konfigurálható megszakítási lehetőségre vagy összetettebb GPIO-funkciókra van szükség, MCP23017 jellegű portbővítő jobban illeszkedhet.
- Ha azonos című I2C perifériákat szeretnél külön buszágakra választani, TCA9548A jellegű I2C multiplexer való arra a feladatra.
Műhelytipp
Ha sok bemenet kerül a PCF8575 16 csatornás I/O expander modul lapra, érdemes már a program elején 16 bites maszkkal gondolkodni. Az alsó nyolc bit tartozhat például a kezelőgombokhoz, a felső nyolc a végállásokhoz. Így egyetlen I2C olvasással megkapod az egész bemeneti képet, a program pedig maszkolással eldöntheti, melyik csoport változott.
LED-es kimenetnél pedig célszerű LOW-aktív logikát tervezni. Ez elsőre fordítottnak tűnhet – a programban a nulla kapcsolja be a fényt -, viszont jobban illeszkedik a PCF8575 kimeneti felépítéséhez.
Műszaki jellemzők
| Jellemző | Érték |
|---|---|
| Vezérlő IC: | PCF8575 |
| Digitális I/O-k száma: | 16 |
| Portok: | P00-P07 és P10-P17 |
| Portfelépítés: | kvázi kétirányú |
| Kommunikáció: | I2C / IIC / TWI |
| Tápfeszültség: | 2,5-5,5 V DC |
| Maximális I2C órajel: | 400 kHz |
| Címválasztás: | A0 / A1 / A2 |
| I2C címtartomány: | 0x20-0x27 |
| Egy buszon használható azonos expander: | legfeljebb 8 db |
| Maximális I/O 8 panellel: | 128 |
| Megszakítási kimenet: | INT, open-drain |
| Bekapcsolási portállapot: | HIGH |
| Chip standby áram: | legfeljebb 10 µA |
| Chip tápáram terheletlen I/O-knál: | legfeljebb 200 µA 5,5 V / 400 kHz feltételnél |
| Ajánlott LOW kimeneti áram felső értéke chip-szinten: | 25 mA |
| Garantált LOW meghajtás: | legalább 10 mA, VOL = 1 V feltételnél |
| HIGH állapot statikus forrásárama: | gyenge, µA nagyságrend |
| Analóg bemenet: | nincs |
| Hardveres PWM: | nincs |
| Panelméret: | kb. 33 × 21 mm |
Dokumentáció és források
- Gyártói adatlap: Texas Instruments PCF8575 datasheet [Texas Intruments]
- Arduino könyvtár: RobTillaart
PCF8575(MIT licence) [GitHub] - Alternatív könyvtár: xreef
PCF8575_library(Arduino, ESP, RP2040) [GitHub] - Adafruit kompatibilitás: PCF8575 a PCF8574 könyvtárral [learn Adafruit]
- Online használati példa: Instructables – gomb és LED Arduino olvasás [instructables]
Csomag
- 1 db PCF8575 16 csatornás I/O expander modul
- 3 db forrasztható tüskesor












Értékelések
Még nincsenek értékelések.