Expander 40 I/O dla Pi Zero

Expander 40 I/O dla Pi Zero
Pobierz PDF Download icon

Zgodna mechanicznie z Raspberry Pi Zero nakładka z ekspanderem 40 cyfrowych portów GPIO będzie przydatna w rozbudowanych systemach monitorowania lub domowych systemach automatyki.

Podstawowe parametry:
  • umożliwia monitorowanie stanów wejść lub sterowanie do 40 wyjść cyfrowych o napięciu 3,3 V,
  • każde z wyprowadzeń może niezależnie pełnić funkcję wejścia lub wyjścia,
  • dzięki prostej adresacji możliwa jest realizacja systemu do 320 linii GPIO,
  • zgodny mechanicznie z Raspberry Pi Zero.

Nakładka umożliwia rozszerzenie liczby GPIO przy użyciu magistrali I2C. Pozwala na monitorowanie stanów wejść lub sterowanie do 40 wyjść cyfrowych o napięciu 3,3V. Porty GPIO pogrupowane są w pięć ośmiobitowych banków 0...4, w których każde z wyprowadzeń może pełnić dowolną funkcję wejścia lub wyjścia, co zapewnia sporą elastyczność aplikacji. Dzięki prostej adresacji możliwa jest realizacja systemu do 320 punktów GPIO.

Budowa i działanie

W module zastosowano układ PCA9506BS firmy NXP, którego schemat wewnętrzny został pokazany na rysunku 1. Wyprowadzenia PCA9506BS w trybie wejścia przeznaczone są do współpracy z układami sterującymi typu push-pull. W przypadku monitorowania stanu wyjść typu „suchy” styk lub otwarty kolektor/dren konieczne jest zastosowanie zewnętrznych rezystorów podciągających. Wejścia tolerują napięcia do 5 V.

Rysunek 1. Schemat wewnętrzny układu PCA9506BS

Wyprowadzenia układu PCA9506BS w trybie wyjściowym przy zasilaniu 3,3 V mogą być źródłem prądu o wartości ok. 8 mA lub pochłaniać prąd ok. 12 mA, o ile nieprzekroczona jest moc strat i sumaryczny prąd wyprowadzeń zasilania (max. 500 mA). Pozwala to na bezpośrednie podłączenie i sterowanie diodami lub wyświetlaczami LED.

Rysunek 2. Schemat modułu expandera

Schemat ideowy modułu został pokazany na rysunku 2. Został wyposażony w zwory adresowe dla PCA9506BS, umożliwiające ustawienie ośmiu adresów na magistrali I2C zgodnie z tabelą 1. Sygnały GPIO U1 wraz z zasilaniem 3,3 V wyprowadzone są na złącza szpilkowe IDC10 oznaczone I\O0...4. Ze względu na możliwy duży pobór prądu przy sterowaniu wskaźników LED, moduł wyposażony jest w niezależną od systemu zasilania Pi przetwornicę obniżającą U3 typu ADP2108 dostarczającą napięcia 3,3 V.

Dioda LD1 sygnalizuje obecność zasilania. Układ U2 typu MCP100T-3.00 odpowiada za poprawny reset U1 po włączeniu zasilania. Rezystory R1 i R2 polaryzują magistralę I2C. Układ U1 ma możliwość opcjonalnego generowania sygnału przerwania, który poprzez rezystor R3 doprowadzony jest do GPIO4 Raspberry Pi. Jeżeli nie przewidujemy korzystania z przerwania, to nie montujemy na płytce rezystora R3.

Montaż i uruchomienie

Moduł jest zmontowany na dwustronnej płytce drukowanej, której schemat i rozmieszczenie elementów zostało pokazane na rysunku 3. Sposób montażu jest klasyczny i nie wymaga opisu. Zmontowany moduł został pokazany na fotografii tytułowej oraz na fotografii 1 od strony bottom.

Rysunek 3. Schemat płytki PCB z rozmieszczeniem elementów
Fotografia 1. Zmontowany moduł pokazany od strony bottom

Po montażu należy ustalić kroplą cyny adres modułu na zworach A2, A1, A0 zgodnie z tabelą 1. PCA9506BS ma pod adresami 0x00..0x27 pięć grup rejestrów IO oraz ustalających tryb pracy układu i konfigurujących przerwania. Skrócony opis rejestrów pokazano w tabeli 2, pełny opis dostępny jest w karcie katalogowej.

Opis

Do szybkiego przetestowania działania modułu podłączonego do Pi użyjemy bibliotekę i2ctools. Po ustawieniu adresu bazowego zworami A2, A1 i A0, moduł powinien być widoczny po odczycie magistrali poleceniem:
i2cdetect -y 1
tak, jak pokazano na rysunku 4 (ustawiony adres bazowy 0x27). Sterowanie portami i odczyt stanów może być wykonywany przy pomocy prostych komend:

Rysunek 4.

Stan wejść banków GPIO0...4 może być odczytany bez dodatkowej konfiguracji przy ustawieniach domyślnych PCA9506BS:
i2cget -y 1 0x27 0x00
..
i2cget -y 1 0x27 0x04
Stany wejść mogą zostać zanegowane:
i2cset -y 1 0x27 0x10 0xFF
..
i2cset -y 1 0x27 0x14 0xFF
Ustawienie GPIO jako wyjście wykonujemy poleceniem:
i2cset -y 1 0x27 0x18 0x00
..
i2cset -y 1 0x27 0x1C 0x00
Stan wyjść zmieniamy poleceniem:
i2cset -y 1 0x27 0x08 0xXX
...
i2cset -y 1 0x27 0x1C 0xXX
Odblokowanie przerwań wykonujemy poleceniem:
i2cset -y 1 0x27 0x20 0x00
...
i2cset -y 1 0x27 0x24 0x00

Ustawione przerwanie jest kasowane odczytem banku wejściowego 0x00...0x04 lub po przywróceniu stanu wyprowadzenia, które przerwanie wygenerowało. Jeżeli wszystko działa poprawnie można moduł zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2: 4,7 kΩ (SMD0603, 1%)
  • R3: 330 Ω (SMD0603, 1%)
  • R4: 2,2 kΩ (SMD0603, 1%)
Kondensatory:
  • C1…C5, C9, C10, C11: 0,1 µF (SMD0603)
  • C6…C8: 10 µF (SMD0603)
Półprzewodniki:
  • LD1: LED czerwony SMD0603
  • U1: PCA9506BS (HVQFN56)
  • U2: MCP100T300/TT (SOT-23)
  • U3: ADP2108AUJZ SOT-23-5
Inne:
  • L1: 1 µH dławik WE-MAPI3020 (WE 74438336010)
  • A0…A2: zwora PCB
  • GPIO: złącze IDC 2×20 pin żeńskie
  • IO0…IO4: listwa IDC 2×5 2,54 mm
Artykuł ukazał się w
Czerwiec 2021
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje listopad 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów