- osiem dowolnie konfigurowalnych wyprowadzeń,
- wyprowadzenia mogą działać jako standardowe GPIO lub jako wejścia ADC albo wyjścia DAC,
- ADC oraz DAC o rozdzielczości 12 bitów,
- wbudowanie źródło napięcia odniesienia,
- wyprowadzenia cyfrowe mogą pracować w konfiguracji otwarty dren (OD), przeciwsobnej push-pull (PP) oraz trójstanowej (tristate).
Moduł bazuje na układzie Analog Devices typu AD5593R, którego struktura wewnętrzna została pokazana na rysunku 1. Układ umożliwia tworzenie ośmiokanałowych ekspanderów GPIO realizujących zarówno funkcje cyfrowe, jak i analogowe. Wyprowadzenia cyfrowe mogą pracować w konfiguracji otwarty dren (OD), przeciwsobnej push-pull (PP) oraz trójstanowej (tristate). Wyprowadzenia analogowe mogą pełnić funkcję przetwornika ADC/DAC o rozdzielczości 12 bitów. Aplikację układu ułatwia wbudowanie źródło napięcia odniesienia, konfigurowane rezystory pull-down oraz programowany zakres napięć ADC/DAC 0...Vref/0...2×Vref. W strukturze dostępny jest też czujnik temperatury.
Budowa i działanie
Schemat ideowy układu został pokazany na rysunku 2. Moduł jest zgodny z Raspberry Pi Zero (HAT 40 PIN), zawiera układ U3 typu AD5593R, układ resetu MCP100T (U2) oraz niskoszumowy stabilizator U1 typu ADM7160. Całość zasilana jest napięciem 5 V z RPI. Sygnały GPIO wraz z zasilaniem doprowadzone są do złączy IO01...IO67 zgodnych ze standardem Grove. Złącze I2C umożliwia wyprowadzenie magistrali I2C do innych współpracujących modułów (standard 3,3 V).
Montaż i uruchomienie
Moduł został zmontowany na dwustronnej płytce drukowanej, której schemat pokazuje rysunek 3. Sposób montażu jest klasyczny i nie wymaga opisu. Prawidłowo zmontowany nie wymaga uruchomienia.
Dla wstępnego sprawdzenia działania konieczna jest instalacja narzędzi magistrali I2C. Należy wpisać w konsoli następujące polecenia:
sudo apt-get install i2c-tools
Po instalacji i restarcie RPI należy sprawdzić obecność AD5593R poleceniem:
Efekt powinien być podobny do tego pokazanego na rysunku 4. Układ powinien pojawić się pod adresem 0x11.
Wszystkie funkcje AD5593R definiowane są programowo poprzez odpowiedni zapis rejestrów konfiguracyjnych/danych. Zapis do układu wymaga zgodnie z rysunkiem 5 przesłania 4 bajtów informacji. W zależności od wartości wskaźnika (Pointer Byte, drugi wysyłany bajt) możliwe jest zapisywanie do rejestrów danych lub konfiguracji – tabele 1 i 2.
Sposób odczytu rejestrów AD5593R został pokazany na rysunku 6.
Dla sprawdzenia działania modułu skonfigurujemy GPIO0 jako cyfrowe wyjście:
i2cset -y 1 0×11 0×08 0×00 0×01 i
Następnie ustawimy wyjście 0 w stan wysoki:
oraz niski:
Pozostałe wyprowadzenia GPIO 7...1 skonfigurujemy jako wejścia:
i odczytamy ich stan:
Jeżeli wszystko działa prawidłowo, można przejść do tworzenia własnej aplikacji.
Adam Tatuś, EP
- R1, R2: 4,7 kΩ (SMD0603) 1%
- C1, C2: 10 μF (SMD0603)
- CE1: 10 μF tantalowy (SMD3216)
- C3, C4, C5, C6, C7, C8, C9: 0,1 μF (SMD0603)
- U1: ADP7160AUJZ (SOT-23-5)
- U2: MCP100T (SOT-23)
- U3: AD5593RBRUZ (SSOP16)
- FB: koralik ferrytowy BLM18AG102 (SMD0603)
- GPIO: złącze żeńskie IDC 2×20 pinów
- I2C, IO01, IO23, IO45, IO67: złącze Grove kątowe 110990037