Arduino relay shield – jak zmontować

Arduino relay shield jest w ofercie Nettigo już od pewnego czasu, jednak dotąd nie pojawił się na naszym blogu opis jak go wykorzystywać. Czas to zmienić :)

Zanim się go wykorzysta, najpierw trzeba go zmontować, gdyż sprzedawany jest jako zestaw do montażu. Oprócz płytki drukowanej (PCB) w opakowaniu znajduje się trochę różnych elementów:

Elementy wchodzące w skład relay shielda
Elementy wchodzące w skład relay shielda

I tak od góry, od lewej mamy 4 przekaźniki, komplet złączek przelotowych jakie zwykle w shieldach są używane (stacking headers), złącza do podłączania kabli (te niebieskie), 4 rezystory w wspólnej obudowie (tzw drabinka), dwa układy scalone w obudowach DIP 16 – PCF 8574 (8-mio portowe rozszerzenie wejść/wyjść cyfrowych dostępne przez I2C) oraz ULN2003 (zestaw 7 par tranzystorów w układzie Darlingtona), drabinka goldpinów, zworki oraz mikroprzełącznik.

Rozpoczynamy montaż od drobnych elementów. Mikroprzełącznik trudno wsadzić w złym kierunku ale trzeba uważać :) bo dla chcącego nic trudnego (jak to mówią – nic na siłę, weź większy młotek). Na następnym zdjęciu widać orientację przycisku na płytce:

Orientacja przycisku i drabinki
Orientacja przycisku i drabinki

Kolejnym elementem jest drabinka rezystorów. Ma ona zaznaczony jeden koniec rombem, który powinien znajdować się nad otworem oznaczonym krzyżykiem. Czas zacząć lutować. Przycisk po wciśnięciu będzie się trzymał sam, ale drabinka po odwróceniu płytki do lutowania będzie wypadać. Dlatego trzeba lekko zagiąć pierwszą i ostatnią nóżkę:

Zagięte nóżki - i można lutować
Zagięte nóżki - i można lutować (tak, wiem że ostrość nie najlepsza ale takie tylko mam)

Po przylutowaniu czas na pierwszy układ scalony – PCF8574:

PCF na swoim miejscu
PCF na swoim miejscu

Ważna jest orientacja – nadruk kształtu układu PCF8574 na płytce (silkscreen) ma na jednym końcu półokrągłe wgłębienie. Na obudowie układu jest podobne wgłębienie – muszą być z tej samej strony. Próba wsadzenia układu może być najpierw lekko denerwująca – nóżki układów scalonych po wyjściu z fabryki są lekko rozchylone, przez co nie pasują do otworów. Rada jest dość prosta – lekko docisnąć jedną stroną o płaskie i twarde podłoże (np. blat biurka) i powtórzyć z drugiej strony:

Wyrównywanie nóżek
Wyrównywanie nóżek

Lutując następny układ scalony (ULN2003) powtarzamy całość pamiętając o właściwej orientacji układu na płytce (trzeba pamiętać, że wycięcie na obudowie powinno być z drugiej strony w porównaniu z PCF8574) . Następnie możemy zainstalować piny dla zworek ustawiających adres na magistrali I2C. Najpierw trzeba podzielić goldpin na dwa 3 pinowe. Najlepiej nadają się do tego szczypce boczne. Goldpin ciężko się rozcina na całej długości plastiku między pinami – zwykle powoduje to częściowe zmiażdżenie plastiku. Cięcie samym czubkiem, na długości do połowy daje najlepsze rezultaty:

Jak ciąć goldpina
Jak ciąć goldpina

Mając podzielonego goldpina należy go wlutować, najlepiej prosto :) Aby sobie to ułatwić ja użyłem złącza 6-cio pinowego, w które wsadziłem pociętego goldpina i tak przyłożyłem do płytki aby przylutować. Dzięki temu goldpiny zostały przylutowane równolegle. W tym wypadku nie ma to specjalnego znaczenia (zworki są zakładane na goldpiny w jednym kawałku) ale warto pamiętać o takiej metodzie jeżeli trzeba równo je wlutować. Oczywiście tzw. trzecia ręka jest nieodzowna do przytrzymania całości podczas lutowania.

Jak sobie pomóc równo lutować dwa rzędy goldpinów
Jak sobie pomóc równo lutować dwa rzędy goldpinów

Następnym elementem lutowanym są złącza do podłączania kabli doprowadzonych do przekaźników. Można użyć trzeciej ręki do przytrzymania podczas lutowania, albo powinno pomóc położenie na płaskiej powierzchni złączy, nałożenie płytki PCB dociśnięcie całości i można lutować.

Następnym elementem który zamocowałem były przekaźniki, ale wygodniejsze byłoby zostawić je na koniec, a najpierw przylutować złącza przelotowe do podłączenia do Arduino. Dlaczego? Bo przekaźniki są najwyższymi elementami i jeżeli dla uproszczenia całości chcemy lutować złącza na odwróconym shieldzie będą one opadać o 1-2 mm. Jako rezultat złącza (czarna część plastikowa) będzie unosić się te 1-2 mm nad powierzchnią shileda. Funkcjonalnie nie powinno to mieć wpływy (piny w przelotkach są długie), jednak nie wygląda to zbyt elegancko.

Lutowanie przekaźników jest względnie proste. Nie da się ich wsadzić z niewłaściwą orientacją, jedynie podczas zaginania ich nóżek (jeżeli korzystamy z trzeciej ręki) trzeba pamiętać, że te grubsze trudno zagiąć i jeżeli używamy czegoś ostrego (śrubokręt), to w razie ześlizgnięcia się, zarysować możemy płytkę. W większości przypadków pozostanie niegroźna rysa, ale  w najgorszym razie możemy przerwać którąś z cieńszych ścieżek.

Lutując złącza/przelotki najlepiej zrobić to obracając shielda i skorzystać z Arduino aby zapewnić sobie równe i równoległe wlutowanie złącz:

Lutowanie złączek/przelotek
Lutowanie złączek/przelotek

Ponieważ w tym egzemplarzu najpierw przylutowałem przekaźniki, musiałem użyć kartonu aby podeprzeć same złącza. Dzięki temu przylutowane zostały równo tuż przy powierzchni płytki PCB. Pomarańczowe nóżki na Arduino to nic innego jak Sugru – przydatna rzecz :)

Uwaga błąd na płytce PCB!

Teraz ważna informacja, która wyszła na jaw podczas testów tego egzemplarza. Płytki PCB w obecnie sprzedawanej wersji zawierają błąd. Jedna z trzech nóżek adresowych układu PCF8574 (A2) pozostaje niepodłączona. Oznacza to, że w może losowo przyjmować wartość 0 lub 1 zmieniając w trakcie pracy adres urządzenia. Uniemożliwia to prawidłowe korzystanie z shielda, lub jest to utrudnione, bo przez dłuższy czas może on działać, by nagle przestać. Zmiany te są zupełnie losowe.

Na szczęście można to łatwo naprawić. Pierwszą metodą jest zmostkować za pomocą kabelka wiszącą nóżkę do masy lub +5V (ustawiając w ten sposób bit A2 odpowiednio na 0 lub 1):

Naprawa shieldu
Naprawa shieldu

Drugą metodą naprawy jest użycie cyny do połączenia A2 z A1. Dzięki temu prostemu zabiegowi A2 zawsze będzie miało wartość taką jaka zostanie ustawiona za pomocą zworki na A1.

Test płytki:

Pozostaje przetestować całość. Przekaźniki wg dokumentacji znalezionej w sieci mogą pracować od 9.5V, zalecane napięcie to 12V. Zasilanie jest do nich doprowadzone z pinu Vin – czyli po prostu są zasilane tym napięciem, które jest doprowadzone do gniazda zasilania Arduino. Zasilając Arduino 12V będziemy mieli przekaźniki zasilone jak należy.

Adres układu PCF8524 zależy od ustawienia zworek A0, A1 i A2:

//znaczenie bitow xxxx210 - 2 A2, 1 A1, 0 A0
#define expander B0100000

Po pierwsze zwrócić uwagę należy, że adres jest 7-mio bitowy. 8 bit adresu jest ustawiany przez bibliotekę Wire automatyczne w zależności czy chcemy odczytać czy zapisać dane z/do układu.

Drugi bit adresu jest ustawiony na 1 a bity 5, 6 i 7 są odpowiednio równe wejściom A2, A1 i A0. Wejście A0 ustalamy albo na 0 lub 1 jeżeli korzystamy z kabelka mostkującego do masy lub +5V, lub kopiuje wartość A1 jeżeli wybierzmy naprawę błędu na płytce PCB poprzez połączenie cyną z sąsiednim pinem. Czyli jeżeli ustawimy A0 na 1 resztę na 0 to mamy adres B0100001.

Następnie prosty program testowy, który będzie przełączał wszystkie wyjścia PCF z 0 na 1 i odwrotnie:

/*
  Test program for PCF8574 I2C I/O expander
  - Blinks all ports low then high.
  by Ford
*/

#include <Wire.h>
//znaczenie bitow xxxx210 - 2 A2, 1 A1, 0 A0
#define expander B0100000  // Address with three address pins grounded.
				   // Note that the R/W bit is not part of this address.

void setup() {
  Wire.begin();
}

void loop() {
  expanderWrite(B00000000);
  delay(5*1000);
  expanderWrite(B11111111);
  delay(5*1000);
}


void expanderWrite(byte _data ) {
  Wire.beginTransmission(expander);
  Wire.send(_data);
  Wire.endTransmission();
}

byte expanderRead() {
  byte _data;
  Wire.requestFrom(expander, 1);
  if(Wire.available()) {
    _data = Wire.receive();
  }
  return _data;
}
 

Kod zaczerpnięty z przykładu na Arduino forum.

Po ustawieniu adresu expander zgodnie z tym co na A2-A0, wgraniu szkicu i zasileniu całości 12V (może zadziałać na 9V, nie będzie działać na samym USB) powinniśmy słyszeć cykliczne przełączanie się cewek w przełącznikach. Po podpięciu multimetru do wejść powinny raz przewodzić a raz nie.

Tyle wstępu, wkrótce o trochę bardziej praktycznym zastosowaniu shieldu (przypominam – jeżeli próbujesz podłączyć do przekaźników urządzenia pracujace na 230V – uważaj).