5. Obsługa GPIO
Moduły wejść/wyjść z izolacją galwaniczną
W systemie przewidziano zastosowanie dwóch osobnych modułów zawierających po 8 linii separowanych galwanicznie, przystosowanych do pracy z sygnałami TTL. Moduły te zostały zbudowane z wykorzystaniem 4-kanałowych układów Analog Devices ADuM6400, które należą do kategorii izolatorów cyfrowych oznaczonych przez producenta isoPower. Różnią się od innych układów realizujących funkcje izolacji sygnałów tym, że zawierają dodatkowo w strukturze specjalną przetwornicę DC/DC upraszczając tym samym zasilanie. W każdym z modułów zastosowano po 2 takie elementy.
Schemat blokowy układu ADuM6400 przedstawia rysunek:
Napięcie zasilające strony pierwotnej o wartości 3,3 lub 5 V powinno być przyłączone do wyprowadzeń nr 1 (Vdd1) oraz 7 (Vddl). Wyjście Viso można wykorzystać do zasilania zewnętrznych układów. Napięcie na wyjściu wewnętrznej przetwornicy DC/DC może wynosić 3,3 V lub 5 V i określone jest przez Vsel.
Gdy Vsel dołączone jest do Viso, wtedy napięcie wyjściowe przetwornicy wynosi 5 V, gdy Vsel dołączono do GNDiso, napięcie to jest równe 3,3 V. Wybór umożliwiają zworki J1 i J2. Moc wyjściowa zależna jest od wartości zasilania strony pierwotnej oraz napięcia wyjściowego przetwornicy. Wynosi:
400mW, gdy Vdd1 = 5 V, Viso = 5 V,
330mW, gdy Vdd1 = 5 V, Viso = 3,3 V,
132mW, gdy Vdd1 = 3,3 V, Viso = 3,3 V.
Ponieważ napięcie podawane na porty I/O procesora Allwinner A20 nie powinno przekraczać 3,3 V (absolutne maksimum to 3,6 V) w przypadku zastosowania modułu jako izolatora wejść napięcia Vdd1 oraz Viso muszą wynosić 3,3 V. W tym celu należy doprowadzić napięcie 3,3 V z zewnętrznego zasilacza do wyprowadzenia Vdd (1) złącza Z1 oraz podłączyć Vsel do GNDiso czyli zworki J1 i J2 ustawić w pozycji 2-3.
W zależności od sposobu podłączenia do płytki Iteaduino moduł może pracować udostępniając osiem wejść lub wyjść.
Dwa podłączone do Iteaduino moduły mogą pracować w trzech konfiguracjach udostępniając:
- 16 wejść,
- 16 wyjść,
- 8 wejść i 8 wyjść.
Schemat ideowy modułu pokazano na rysunku:
Moduł wejść 24V
Często zachodzi konieczność podłączenia do budowanego urządzenia sygnałów o napięciu większym niż 5 V np. w systemach automatyki, w których standardem jest napięcie 24 V.
Konieczne jest wtedy zastosowanie elementów dostosowujących napięcie wejściowe do wartości akceptowanej przez pozostałe elementy układu. Realizuje się to poprzez dodanie np. dzielników rezystancyjnych czy diod Zenera.
Bardzo ważna jest również separacja galwaniczna między obwodem sterującym a sterowanym. W module zastosowano transoptory 6N137 o prędkości do 1Mb/s, co jest w większości przypadków wystarczające, gdyż moduł ten nie będzie pracował z sygnałami magistralowymi. Jeżeli jednak byłaby konieczność przesyłania sygnałów przy większej prędkości to zawsze można dokonać wymiany transoptora na wersję 6N137-E o maksymalnej prędkości do 10Mb/s. Moduł może pracować przy szerokim zakresie napięć wejściowych do 24V. Schemat ideowy pokazany jest na rysunku:
Rezystory R1, R2 oraz dioda Zenera 5,1V ustalają prąd diody LED transoptora. Napięcie podawane na diodę LED transoptora nie może przekroczyć wartości 5,5 V. Transoptor powinien być zasilany napięciem z zakresu 4,5 do 5,5 V. Pracuje on jednak poprawnie już przy napięciu 3,3 V.
Należy również pamiętać, że układ 6N137 posiada wyjście typu otwarty kolektor, konieczne jest podłączenie rezystora łączącego wyjście do plusa zasilania. Układ w takiej konfiguracji jak pokazano na schemacie jest negatorem. Gdy na wejście podane zostanie napięcie, które spowoduje zaświecenie diody LED transoptora, to na stan wyjścia zmieni się na niski.
Moduły wykonawcze
Aby możliwe było sterowanie urządzeniami zasilanymi napięciem 230 V np. lampami, grzałkami, silnikami potrzeba układu, który zapewniałby możliwość przełączania prądów o znacznej wartości oraz separację galwaniczną między obwodem sterującym a sterowanym. W praktyce stosuje się przekaźniki, tranzystory mocy lub tyrystory czy triaki.
Główną wadą przekaźników jest ich ograniczona trwałość powodowana wypalaniem się styków podczas iskrzenia przy odłączaniu styku. Wynika z tego maksymalna liczba zadziałań, która dla każdego typu przekaźnika definiowana jest indywidualnie i wynosi od kilkudziesięciu do kilkuset tysięcy przełączeń. Tej wady pozbawione są elektroniczne elementy przełączające (tranzystory mocy, tyrystory, triaki), jednak w stanie przewodzenia występuje na nich spadek napięcia oraz straty mocy w postaci wydzielanego ciepła, które należy odprowadzić za pomocą radiatorów. Straty mocy (istotnej wielkości) nie występują w przypadku przekaźników. Z tego opisu można wyodrębnić obszary zastosowań dla przekaźników i triaków.
Gdy urządzenia przełączane są z dużą częstotliwością, a obciążenie jest załączane na krótki czas powinny być stosowane triaki, w przeciwnym wypadku przekaźniki.
Moduł przekaźników
Przekaźniki mogą sterować obwodami zasilanymi z sieci energetycznej lub z zasilaczy napięcia stałego. Schemat ideowy modułu składającego się z 4 przekaźników przedstawia rysunek:
Każdy z bloków składa się z przekaźnika o obciążalności styków 10A przy napięciu maksymalnym 250V oraz tranzystora sterującego jego cewką. Załączenie tranzystora sygnalizowane jest przez diodę LED D1. Cewki przekaźników i diody LED są podłączone do odrębnego zasilacza. Dioda D2 zabezpiecza tranzystor przed uszkodzeniem w wyniku pojawienia się wysokiego napięcia wyindukowanego w cewce przekaźnika przy wyłączeniu. Styki przekaźników doprowadzone są do złącz śrubowych.
Załączenie przekaźnika odbywa się przez podanie stanu wysokiego z wyjścia mikroprocesora na bazę tranzystora BC547.
Moduł triaków
Schemat ideowy modułu triaków pokazuje rysunek:
Omówiony zostanie pierwszy z bloków na schemacie. Elementem wykonawczym jest triak BT136 sterujący odbiornikami przez które może przepływać prąd maksymalny do 4A. Zastosowany w układzie optotriak MOC3041 zapewnia izolację galwaniczną oraz wymaganą własność, jaką jest załączanie przy przejściu przez zero napięcia zasilającego. Rezystory R2, R3 ograniczają wartość prądu bramki triaka TR1. Dioda LED D1 sygnalizuje stan pracy, załączenie triaka jest możliwe po podaniu stanu wysokiego na bazę tranzystora T1.
Oprogramowanie
Twórcy IteadOS SDK udostępnili kilka instrukcji do obsługi pojedyńczych linii GPIO jak i całego 8 lub 16 bitowego portu.
Sterowanie liniami GPIO jest identyczne jak w klasycznym Arduino.
Najpierw ustalamy czy dany pin będzie funkcjonował jako wejście czy wyjście. Służy do tego polecenie:
pinMode(pin, mode);
Odczyt stanu wejścia możliwy jest za pomocą:
digitalRead(pin);
Ustawienie stanu wyjścia możemy wykonać przy pomocy polecenia:
digitalWrite(pin, value);
Mamy jednak do czynienia z sytuacjami, gdy potrzeba odebrać lub wysłać dane na równoległej magistrali np. przy komunikacji z
przetwornikiem A/C lub C/A. Do tego celu służą specjalnie opracowane instrukcje:
Set8BitsBUS(&bus, d0, d1, d2, d3, d4, d5, d6, d7);
digitalWrite8(&bus, data);
digitalRead8(&bus);
oraz
Set16BitsBUS(&bus, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);
digitalWrite16(&bus,data);
digitalRead16(&bus);
Przykładowy sposób użycia:
STRUCT_16BITS_BUS magistrala;
Set16BitsBUS(&magistrala, 1, 4, 3, 6, 5, 8, 7, 10, 12, 11, 14, 13, 16, 15, 18, 17, OUTPUT);
digitalWrite16(&magistrala, 0xA560);
Warte odnotowania jest to, że nie trzeba przyporzadkowywać kolejnych wyprowadzeń, można podać linie należące do różnych
portów, tak jak pasuje to projektantowi. Takie podejście ułatwia w dużym stopniu tworzenie PCB.
Korzystając z opracowanych modułów i używając instrukcji udostępnanych przez SDK można zbudować w zasadzie dowolne urządzenia
sterujące automatyki. Język Arduino można użyć do tworzenia prostych programów do przetestowania poprawnego działania modułów.
Monitor GPIO
Wygodniej jest używać aplikacji z graficznym interfejsem użytkownika.
Do testowania modułów jest wykorzystywany specjalnie napisany do tego celu program "Monitor portów GPIO".
Okno główne przedstawia rysunek:
Ekran aplikacji składa się z kolejno umieszczonych jednakowych bloków. Po przypisaniu do każdego z bloków numeru
wyprowadzenia użytkownik może sterować stanem GPIO.
Każdy z bloków zawiera kilka identycznych kontrolek. Pozwalają one na:
- wybór pinu który będzie monitorowany lub sterowany za pomocą listy rozwijanej,
- ustalenie czy dane wyprowadzenie będzie wejściem lub wyjściem,
- ustawienia wyjścia w stan niski lub wysoki,
- sygnalizację stanu pinu przez wizualną kontrolkę LED.
Możliwy jest wybór jednego z 124 wyprowadzeń dostępnych na listwach płytki Iteaduino Plus
Program sprawdza, aby nie został ustawiony ten sam pin dla więcej niż jednego bloku i nie dopuszcza do powielenia ustawień.
Liczbę wieszy i kolumn w jakich zostaną umieszczone kontrolki można zmienić w oknie dialogowym po wywołaniu polecenia "Ustawienia" z menu rozwijanego.
W tym oknie ustala się liczbę kolumnn i wierszy oraz czy dla kolejnych bloków zostaną automatycznie przydzielone linie
portów.
Innym sposobem konfiguracji jest podanie koniecznych ustawień przy uruchomieniu programu jako parametrów:
-config [liczbę wierszy]x[liczbę kolumn] oraz kolejno numerów wyprowadzeń jako -gpio [nr portu] ...
Na przykład wpisując polecenie:
gpiomonitor -config 1x8 -gpio PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9
Uzyskamy wtedy:
Aby każdorazowo nie konfigurować programu ręcznie, ustawienia można wczytać z pliku:
po uprzednim ich zapisaniu:
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięIteaduino Plus A20 - część 3
Moderatorzy:Jacek Bogusz, Grzegorz Becker, Moderatorzy
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości