Moduł wejść cyfrowych z optoizolacją i interfejsem USB-C

Moduł wejść cyfrowych z optoizolacją i interfejsem USB-C

Moduł wejść cyfrowych z optoizolacją będzie przydatny w domowej automatyce. Komunikacja z modułem odbywa się poprzez interfejs USB, a zastosowanie fabrycznego mostka UART/GPIO/I²C z gotowym protokołem komunikacyjnym zwalnia nas z potrzeby tworzenia aplikacji dla mikrokontrolera.

Podstawowe parametry:
  • 4 wejścia cyfrowe z optoizolacją oraz 4 wejścia bez optoizolacji,
  • komunikacja z modułem odbywa się poprzez interfejs USB z układem FT230,
  • interfejs GPIO jest zrealizowany poprzez układ SC18IM704 firmy NXP,
  • każde z wyprowadzeń GPIO może pracować w trzech trybach: wejścia, wyjścia z otwartym drenem i wyjścia Push-Pull.

Zaprezentowany układ interfejsu zawiera dwa specjalizowane układy, pierwszy to konwerter USB/UART typu FT230, drugi to układ mostka UART/GPIO/I²C typu SC18IM704 firmy NXP, którego strukturę wewnętrzną pokazano na rysunku 1. Układ SC18IM704 komunikuje się z komputerem nadrzędnym poprzez standardowy interfejs szeregowy UART, używając komunikacji znakowej ASCII.

Rysunek 1. Schemat wewnętrzny układu SC18IM704 (za notą NXP)

Interfejs GPIO dostępny jest poprzez rejestry wewnętrzne układu, każde z wyprowadzeń GPIO może pracować w trzech trybach: wejścia, wyjścia z otwartym drenem i wyjścia Push-Pull. Układ obsługuje także magistralę I²C w trybie odczytu i zapisu. Cała praca programistyczna podczas korzystania z SC18IM704 ogranicza się do opracowania aplikacji na PC komunikującej się poprzez UART. Aby zapewnić komunikację z SC18IM704, jego port szeregowy połączony jest z PC poprzez interfejs konwertera USB/UART.

Budowa i działanie

Schemat interfejsu został pokazany na rysunku 2. Magistrala USB-C doprowadzona jest do gniazda typu USB4110 GCT, które ma ograniczoną do trybu zgodności USB liczbę wyprowadzeń. Dostępny jest jedynie interfejs USB 2.0, zasilanie oraz wyprowadzenia konfiguracji interfejsu. Zmniejszona liczba wyprowadzeń USB-C ułatwia montaż, który nie wymaga specjalistycznych narzędzi.

Rysunek 2. Schemat ideowy modułu

Układ U1 typu FT230XS pełni funkcję interfejsu USB/UART, dioda LD1 sygnalizuje aktywną transmisję szeregową (dla obu kierunków transmisji RX/TX). Napięcia zasilania 3,3 V dla modułu dostarcza stabilizator LDO U2 typu MCP1700T33, dioda LD2 sygnalizuje obecność zasilania.

Układ U3 typu SC18IM704 pełni funkcję mostka UART/GPIO/I²C, za poprawny restart po włączeniu zasilania odpowiada U4 typu MCP100T-315. Mostek U3 ma 8 wyprowadzeń GPIO, w modelu cztery z nich GPIO3...0 służą do monitorowania stanów optoizolowanych wejść IO3...0. Sygnały wejściowe w standardzie 24 VDC doprowadzone są do złącza INPUT. Poczwórny transoptor IS1 typu TCMT4600 separuje je od części logicznej modułu. Za sygnalizację stanów wejść IN1...4 odpowiadają diody LD3...LD6 buforowane przez bramki U5. Pozostałe cztery GPIO układu SC18IM704 wraz z zasilaniem 3,3 V doprowadzone są do złączy zgodnych z Grove IO45, IO67, do których można bezpośrednio podłączyć czujniki lub sygnalizatory systemu Grove zgodne z 3,3 V.

Szczególnej uwagi wymaga używanie GPIO6, który w momencie resetu SC18IM704 nie może przyjmować stanu niskiego i musi być podciągnięty do potencjału zasilania, co w modelu realizowane jest przez RP1-RB2. Obwody wejściowe U3, mają wbudowane bramki Schmitta, pozwalające na filtrację sygnału.

Podanie napięcia 24 V na wejścia złącza INPUT powoduje zaświecenie LED i ustawia podłączone GPIO w stan niski (aktywny stan niski, negacja w transoptorze).

Na złącze I²C wyprowadzona jest magistrala I²C wraz z zasilaniem 3,3 V. Umożliwia to rozszerzenie funkcjonalności modułu o obsługę ekspanderów GPIO np. PCF8574 lub czujników zgodnych z I²C.

Montaż i uruchomienie

Moduł zmontowany jest na dwustronnej płytce drukowanej. Schemat płytki został pokazany na rysunku 3. Montaż jest typowy i nie wymaga opisu.

Rysunek 3. Schemat płytki PCB

Poprawnie zmontowany układ nie wymaga uruchamiania. Po podłączeniu do portu USB, konwerter FT230 powinien zostać wykryty i automatycznie zostaną zainstalowane sterowniki. Przy użyciu oprogramowania narzędziowego FT Prog należy skonfigurować prąd pobierany z magistrali zgodnie z rysunkiem 4. Następnie należy zmienić konfigurację wyprowadzenia C1 na sygnalizację sumy sygnałów RXD/TXD zgodnie z rysunkiem 5. Jeżeli konfiguracja została ustalona i zapisana, należy układ zrestartować poprzez odłączenie i ponowne podłączenie do magistrali USB.

Rysunek 4. Konfiguracja prądu USB
Rysunek 5. Konfiguracja wyprowadzenia C0

Dla sprawdzenia modułu należy zainstalować terminal portu szeregowego z możliwością wysyłania sekwencji znaków np. Realterm oraz źródło sygnału 24 V i kilka czujników Grove 3,3 V. Komunikacja z układem SC18IM704 odbywa się poprzez wysłanie polecenia w postaci komendy ASCII, zestaw rozpoznawanych komend został pokazany w tabeli 1. Komendy nierozpoznane są ignorowane. Układ ma wbudowany licznik time-out, który kasuje zawartość buforów, jeżeli odbiór kolejnych dwóch znaków zajmuje więcej niż 655 ms.

Po restarcie układ jest skonfigurowany wstępnie – standard transmisji ustawiony jest na 9600,8,N,1. Konfiguracja może zostać zmieniona w rejestrach układu, których zestawienie pokazuje rysunek 6. Szczegółowy opis dostępny jest w dokumentacji SC18IM704.pdf dołączonej do materiałów dodatkowych.

Rysunek 6. Rejestry konfiguracyjne układu SC18IM704

Po uruchomieniu terminala i resecie układu zwrócone zostaną znaki OK, potwierdzające połączenie z układem. Dla sprawdzenia poprawnej komunikacji z układem SC18IM704 odczytujemy jego sygnaturę, wysyłając:

56 50

Układ powinien zwrócić ciąg:

53 43 31 38 49 4D 37 30 34 20 31 2E0 30 2E 32 00

Czyli typ i wersję układu:

SC18IM704 1.0.2

Do zmiany konfiguracji służą sekwencje poleceń zapisu rejestru wewnętrznego:

W <rejestr 0> <dana 0>......<rejestr N> <dana N> P

lub odczytu:

R <rejestr 0>......<rejestr N> P

po którym SC18IM704 zwróci ciąg wartości:

<dana 0>...... <dana N>

Odczyt rejestru 00 to sekwencja:

52 00 50

która po resecie zwraca wartość domyślną 0xF0.

Przed użyciem wyprowadzeń GPIO w rejestrach PortConf1/2 należy ustawić wymaganą konfigurację wyprowadzenia, zgodnie z tabelą 2.

Do monitorowania stanów sygnałów doprowadzonych do złącza INPUT konieczna jest konfiguracja GPIO3...0 jako wejść (0x). Wymaga to zapisu rejestrów wewnętrznych PortConf1 0×02 (GPIO3...0), które muszą zawsze być ustawione jako wejścia! Konfiguracja GPIO7...4 odbywa się poprzez rejestr PortConf2 0×03 (GPIO7...4) i zależy od aplikacji (z uwzględnieniem uwagi o GPIO6):

57 02 55 50 – ustawia w rejestrze PortConf1 (0×02) piny GPIO3...0 jako wejścia,

57 03 55 50 – ustawia rejestrze PortConf2 (0×03) piny GPIO7...4 jako wejścia.

Domyślnie GPIO układu SC18IM704 po włączeniu zasilania skonfigurowane są jako wejścia. Weryfikację zapisu rejestrów można wykonać poleceniem odczytu rejestru wewnętrznego:

52 02 50 – która powinna zwrócić zapisaną wartość 0×55,

52 03 50 – która powinna zwrócić zapisaną wartość 0×55.

Do zmiany stanu GPIO służą sekwencje poleceń odczytu I, zapisu O:

49 50 – po której układ zwróci <stan GPIO>

4F <dana> 50 – po której układ zapisze stan GPIO.

Oczywiście zapis pod GPIO3...0 nie jest dozwolony.

Do sprawdzenia magistrali I²C do modułu (złącze I²C) podłączony będzie układ PCF8574, który ma ustawiony adres 0×20, odczyt stanu wyprowadzeń wykonany jest sekwencją:

53 41 01 50 – która odczytuje jeden bajt spod adresu 0×41, czyli stan wyprowadzeń PCF8574 z ustawionym siedmiobitowym adresem 0×20. Ze względu na adresowanie 8 bitowe najmłodszy bajt ustawiony jest na 1 dla operacji odczytu (0100 000 1).

Ustawienie wyjść wykonywane jest sekwencją:

53 40 01 00 50 – która zapisuje jeden bajt o wartości 0×00 pod adres 0×40, czyli stan wyprowadzeń PCF8574 z ustawionym siedmiobitowym adresem 0×20 zostanie zmieniony na 0×00. Ze względu na adresowanie 8-bitowe najmłodszy bajt ustawiony jest na 0 dla operacji zapisu (0100 000 0).

Poprawność wykonania operacji sprawdzamy, odczytując rejestr statusu I²CStat: 0×0 A:

52 0a 50, która powinna zwrócić wartość 0xF0, zgodnie z dokumentacją, której fragment pokazuje rysunek 7.

Rysunek 7. Rejestr kontroli stanu magistrali I²C

Po sprawdzeniu działania wszystkich wyjść i magistrali I²C moduł można zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603, 1%)
  • R1, R2: 27 Ω
  • R3: 470 Ω
  • R4: 2,2 kΩ
  • R5, R6: 5,1 kΩ
  • R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, : 680 Ω, 1% (SMD1206)
Kondensatory: (SMD0603)
  • C1, C2: 47 pF/25 V
  • C3, C4, C8, C9, C10: 0,1 μF/10 V
  • C5: 10 μF/10 V
  • C6, C7: 1 μF/10 V
Półprzewodniki:
  • LD1: dioda LED żółta 2 mA (SMD0603)
  • LD2: dioda LED czerwona 2 mA (SMD0603)
  • LD3....LD6: dioda LED zielona 2 mA (SMD0603)
  • U1: FT230XS (SSOP16)
  • U2: MCP1700T-3302MB (SOT-89)
  • U3: SC18IM704PWJ (TSSOP16_065)
  • U4: MCP100T-315I/TT (SOT-23)
  • U5: LVC00 (TSSOP14)
Pozostałe:
  • FB1, FB2: koralik ferrytowy BLM18EG101TN1D (SMD0603)
  • INPUT: złącze MC 3,81 mm, śrubowe, rozłączane, komplet
  • IO45, 67, I²C: złącze Grove proste (110990030)
  • IS1: transoptor TCMT4600 (SO16)
  • RP1: drabinka rezystorowa 4×10 kΩ (CRA06S08)
  • RP2: drabinka rezystorowa 4×330 Ω (CRA06S08)
  • RP3: drabinka rezystorowa 4×22 kΩ (CRA06S08)
  • RP4: drabinka rezystorowa 4×2,2 kΩ (CRA06S08)
  • USB-C: złącze USB-C GCT (USB4110)
Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik maj 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje maj 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna maj 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich czerwiec 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów