Kolejną część poradnika rozpocznę od przypomnienia schematu ogólnego naszego układu.
Oto i on:
Zgodnie z zapowiedzią tym razem zajmę się szczegółowymi schematami poszczególnych segmentów. Jednak, aby to uczynić, potrzebny jest podział naszej stacji. Dzielę, zatem, nasz układ w następujący sposób:
Oczywiście jest to podział przyjęty wyłącznie na potrzebę tego, konkretnego projektu. Na innych makietach może on być zupełnie inny. Zatem, jeśli ktoś buduje podobną stację na sześciu segmentach – to nie ma się czym martwić. Będzie miał wręcz ułatwione zadanie, gdyż „elektryka” na każdym z segmentów będzie zredukowana i łatwiejsza do wykonania. Natomiast zaistnieje potrzeba zastosowania większej ilości płytek Arduino NANO, bo to one są „sercem” każdego segmentu i należy przyjąć założenie, że na każdym segmencie, na którym jest jakiekolwiek urządzenie do wysterowania taka płytka musi się znaleźć.
Zacznijmy zatem od segmentu nr 2 – najprostszego – w naszym układzie. Widać na nim następującą infrastrukturę wymagającą sterowania:
– rozjazd ze zwrotnicą Zw3
– rozjazd ze zwrotnicą Zw4
Wobec tego schemat naszego układu elektrycznego dla segmentu nr 2 przedstawia się następująco:
Mamy tu „serce” segmentu, czyli Arduino NANO, do którego wyjść podłączone są następujące elementy:
Najpierw magistrala naszej makiety:
– do wyjścia oznaczonego 5V podłączona jest linia zasilania +5V;
– do wyjścia GND podłączony jest wspólny minus, czyli masa układu;
– do wyjścia Tx podłączona jest dioda BAV 17 i dalej magistrala Rx układu;
– wyjście Rx (a właściwe wejście) podłączone jest do magistrali Tx makiety.
Dlaczego Tx zostało podłączone do Rx? O tym napisałem szczegółowo w poprzednim artykule. Kto nie pamięta – niech koniecznie to sprawdzi!
Do wyjścia D2 podłączony został serwomechanizm SERWO 3 sterujący położeniem zwrotnicy rozjazdu Zw3. Serwomechanizm jakiego należy użyć, to każde serwo sterowane sygnałem PWM, a więc właściwie wszystkie serwomechanizmy stosowane np. w modelarstwie lotniczym. Proponuję użycie małego i niezawodnego serwa TOWER PRO SG-90.
Na powyższej fotografii widać, że kabel wychodzący z serwa ma 3 żyły są to:
– brązowy – GND
– czerwony +5V
– żółty – sygnał sterujący, czyli podłączenie do wyprowadzenia D2.
Do wyjścia D3 analogicznie podłączamy SERWO 4, które to będzie odpowiedzialne za sterowanie zwrotnicą rozjazdu Zw4.
Zapewne u części modelarzy pojawi się teraz pytanie: czy muszę zastosować serwomechanizm do sterowania położeniem zwrotnicy rozjazdu?
Odpowiedź brzmi: NIE, ale od razu dodam, że sterowanie za pomocą Arduino np. napędem od centralnego zamka jest trochę skomplikowane, gdyż wymaga użycia dodatkowych przekaźników lub tranzystorów. Podobnie rzecz się ma, gdy chcemy zastosować „fabryczne” napędy, które są sterowane za pomocą różnych poziomów napięć. One także bez dodatkowych akcesoriów nie będą współpracować z tym systemem sterowania. Serwomechanizmy modelarskie są wręcz stworzone do współpracy z platformą Arduino. Cały pobierany przez nie prąd płynie bezpośrednio z zasilacza, a z mikrokontrolera „przychodzi” jedynie sygnał sterujący. Ponadto możemy bardzo precyzyjnie ustawiać zakres wykonywanego ruchu, jak i prędkość z jaką przemieszcza się ramię serwomechanizmu. Co ważne – to wszystko odbywa się za pomocą jedynie „jednego kabelka”. Na końcu tego artykułu wrócę jeszcze do tematu sterowania rozjazdami za pomocą „innych” napędów.
Wracajmy jednak do segmentu nr 2.
Pozostają nam jeszcze do opisania dwa wyjścia: D4 i D5, do których podłączamy przekaźniki sterujące polaryzacją rozjazdów odpowiednio Zw3 i Zw4. Możemy użyć dowolnego przekaźnika sterowanego napięciem 5V i posiadającego styk zwierny + rozwierny po stronie wtórnej. Prościej jest oczywiście zastosować gotowy moduł np. taki:
Jest to gotowy moduł przekaźnika dodatkowo zabezpieczający układ w razie zwarcia, czy też spalenia przekaźnika. Jak widać na grafice moduł ma wyprowadzone złącza „skręcane”, czyli ARK, do których należy podłączyć kable do polaryzacji rozjazdu, a z drugiej strony złącze kołkowe „goldpin” do którego należy przyłączyć: +5V, GND oraz IN1 – sygnał sterujący, czyli wyjście D4 naszego mikroprocesora. Takiego modułu należy użyć dwukrotnie, gdyż polaryzujemy dwa rozjazdy.
W bogatej ofercie dodatków do Arduino znajduje się również coś takiego :
Zmniejszamy zatem liczbę „kabelków” na naszym segmencie i podłączamy do listwy kołkowej :
+5V – zasilanie modułu;
GND – masę;
IN1 – sterowanie przekaźnika P3 (wyjście D4);
IN2 – sterowanie przekaźnika P4 (wyjście D5).
W ten oto sposób mamy podłączony segment nr 2. Prawda, że jest to proste?
Należy tylko zawsze upewnić się dwa razy, czy aby na pewno wszystkie przewody są poprawnie połączone i trafiają do właściwych wyjść/wejść.
Czas zatem na segment nr 3:
Zaczynamy, oczywiście, od magistrali, czyli +5V, Rx, Tx, GND – dokładnie tak samo, jak poprzednio. Również i dalej niewiele się zmienia, bo mamy SERWO 5 – sterujące zwrotnicą rozjazdu Zw5, podłączone do wyjścia D2.
Natomiast do wyjścia D3 podłączamy przekaźnik P5 (tym razem pojedynczy) – analogicznie jak na poprzednim segmencie.
Jeśli użyjemy gotowego modułu to mamy następujące połączenia:
+ 5V zasilanie modułu;
GND wspólna masa;
IN1 – sterowanie przekaźnikiem czyli nasze wyjście D3.
Teraz pora na podłączenie semaforów. Jak wiadomo większość semaforów świetlnych posiada wbudowane diody LED i taki przypadek tutaj rozpatrujemy (nie żarówki!).
Łączymy wyjście Arduino – opisane jako D5 – z diodą czerwoną semafora F. Dodatkowo „po drodze” dokładamy opornik 2,2kΏ i dalej do masy układu. Czemu służy ten opornik? Jest on włączony w układ żeby nie spalić diody LED, która nie jest przystosowana do napięcia 5V i należy je obniżyć. Niestety, wiem, że różni producenci modelarskich semaforów stosują różne rozwiązania w swoich produktach, więc może się zdarzyć, że oporniki są już zabudowane w podstawie semafora i wtedy nie będzie konieczne użycie ich po raz drugi. Może też być tak, że rezystor o wartości 2,2kΏ okaże się być nieco za duży lub za mały. Dlatego należy to sprawdzić przed ostatecznym montażem i ewentualnie skorygować wartość rezystora. Jedno natomiast jest pewne OPORNIK BYĆ MUSI !!! Mogą się również zdarzyć semafory, które są „odwrotnie spolaryzowane”, czyli wspólna jest nie masa lecz [+]. Łączymy je wtedy bardzo podobnie do naszego Arduino, lecz nie do wspólnej masy, a do zasilania [+5V]. Oczywiście chcąc narysować schemat takiego podłączenia, dioda byłaby wówczas odwrócona i tak też ją podłączamy. Natomiast to czy dioda jest podłączona do wspólnego plusa czy minusa układu nie ma w tym momencie znaczenia, załatwi to oprogramowanie mikrokontrolera.
Analogicznie postępujemy z pozostałymi diodami od semafora F, D oraz E.
Pora teraz na opis segmentu nr 1, który – na pierwszy rzut oka – wydaje się być najbardziej skomplikowany.
Przyglądnijmy się dokładnie temu schematowi.
Mamy tutaj trzy semafory, czyli 12 diod + 12 oporników.
Mamy też dwa serwomechanizmy (SERWO 1, SERWO 2) sterujące położeniem zwrotnic rozjazdów Zw1 i Zw2 oraz przekaźniki do polaryzacji krzyżownic w tych rozjazdach (P1, P2).
Doszedł też trzeci serwomechanizm – do przestawiania wykolejnicy (SERWO WYK). Jest on bez przekaźnika, gdyż w przypadku wykolejnicy nie ma potrzeby dokonywania jakichkolwiek zmian polaryzacji. W ten oto sposób wszystkie segmenty makiety zostają podłączone elektrycznie.
Nie sądzę, aby komukolwiek sprawiło to jakąś szczególną trudność. Dopowiem w tym miejscu, że przy budowie instalacji elektrycznej bardzo pomaga dbałość o estetykę tych prac, czyli „ładne i schludne” prowadzenie przewodów. Zwiększa to czytelność całego układu i w łatwy sposób pozwala na eliminowanie błędnych połączeń. Oczywiście nikomu nie zabrania się łączenia kabli pod makietą luzem, czy nawet tworzenie czegoś na kształt „kłębka wełny”, jednak należy pamiętać, że gdy zajdzie potrzeba zmiany jakiegoś połączenia lub wyeliminowania stwierdzonego błędu, to może okazać się to bardzo trudne, a nawet wręcz niemożliwe.
Pora teraz na pulpit:
Tutaj mamy nieco inną sytuację niż na segmentach makiety. Właściwie wszystko co znajduje się na pulpicie to przyciski (chwilowe) i diody led. Nie ma tu oczywiście, żadnych serwomechanizmów ani przekaźników, gdyż te znajdują się na segmentach makiety. Również sygnały (informacje) wyświetlane na pulpicie są – wzorem oryginału – zredukowane i nie stanowią dokładnych obrazów sygnałowych podawanych na semaforach. Jest też mała różnica w zasilaniu i od tego zacznę.
Jak widać, zasilanie płytki sterującej pulpitem jest opisane jako 9V-12V i jest to osobny przewód, nie połączony z zasilaniem pozostałej części makiety. Dlaczego tak jest? Dzieje się tak z dwóch powodów:
Po pierwsze mikrokontroler pulpitu – jako główny „mózg” – powinien być jak najlepiej zabezpieczony przed wszelkimi zakłóceniami, które generowane są podczas pracy serwomechanizmów oraz innych napędów wykorzystujących silniki. Dodatkowo praca styczników również powoduje powstawanie zakłóceń na linii zasilania. Drugim powodem jest spora liczba diod led, które będą świeciły się na pulpicie, a co za tym idzie spowodują one spadek napięcia – również niekorzystny – tym razem dla logiki naszego procesora, który lubi „wyraźne” poziomy napięć.
Dlatego proponuję zastosowanie drugiego zasilacza np. 12V i podłączenie go do gniazda zasilania Arduino MEGA. Napięcie te i tak jest sprowadzone do poziomu 5V poprzez wbudowany stabilizator napięcia, ale mamy pewność że zasilamy „mózg” naszego układu w odpowiedni sposób i dajemy mu w miarę komfortowe warunki pracy. Jak widać na schemacie wszystkie masy płytek i zasilacza są ze sobą połączone. Jest to zabieg konieczny do zaistnienia komunikacji (szeregowej) pomiędzy pulpitem a segmentami makiety. Ktoś powie, że zakłócenia przejdą do pulpitu poprzez masę. Owszem część na pewno, ale zachować powinniśmy rozsądek. Wszak nie budujemy systemu sterowania lotem samolotu pasażerskiego, czy rakiety kosmicznej lecz system sterowania małą stacją na makiecie kolejowej. Teraz parę zdań o przyciskach. Muszą to być przyciski chwilowe, czyli takie, które zwierają obwód tylko w trakcie naciskania. Mogą temu służyć na przykład przyciski typu MICROSWITCH zwane też TACTSWITCH
Można oczywiście zastosować każde inne jak np.
Wszystkie przyciski – jak widać na schemacie – są włączone pomiędzy wyjścia mikrokontrolera a masę naszego układu, czyli „zwierają do masy”.
Diody led są informacją kontrolną i informują osobę obsługującą pulpit o położeniu zwrotnic, wyświetlanych sygnałach na semaforach itp.
Szczegółowiej należy opisać przeznaczenie diod oznaczonych jako a1, a2, b1, c2, d1, e2, f1, f2. Na rysunku pulpitu (na początku artykułu) widać, że diody te to potrójne „pakiety”. Ponadto każdy taki „pakiet” znajduje się w dwóch miejscach pulpitu. Tak naprawdę, więc, nasza dioda a1 na schemacie to w rzeczywistości 6 diod led umieszczonych w pulpicie. Trzeba zatem te 6 diod podłączyć do jednego wyjścia. Jak to zrobić? Można podłączyć je tak, jak napisałem wcześniej, jednak wówczas zbytnio obciążamy prądowo dane wyjście procesora, co w konsekwencji mogłoby doprowadzić do jego destrukcji.
Pokażę na rysunku. Tak jest źle:
Co zatem zrobić by było dobrze? Należy zmniejszyć prąd jaki jest pobierany przez te diody.
Dla mniej wtajemniczonych w elektroniczne zakamarki napiszę, że dioda (w zależności od typu i koloru) pobiera od kilku do kilkunastu miliamperów (mA) prądu podczas świecenia, natomiast wydajność prądowa naszego procesora na jedno wyjście to około 40mA.
Należy, więc, być ostrożnym i wykonać połączenie w taki oto sposób:
Realizując połączenie w pokazany sposób redukujemy prąd o połowę, co jest wystarczające. W układzie takim należy zastosować dużo mniejszy rezystor np. 100 omów, gdyż całe napięcie (5V) zostanie tym razem podzielone na dwie diody, z których każda wytwarza spadek napięcia około 2V. Pozostaje, więc, „rozprawić się” wyłącznie ze zbywającym jednym woltem.
Dlaczego nie można połączyć trzech diod w szereg? Byłoby przecież o wiele łatwiej skablować takie „pakiety” lampek. Niestety, nasze Arduino daje 5V na wyjściu, a każda dioda do pracy potrzebuje nieco ponad 2V, zatem przyjmując 2V spadku napięcia na każdej diodzie potrzebujemy w sumie 6V (czyli troszkę więcej niż mamy „w dyspozycji”), aby owe trzy diody się świeciły. Pozostaje nam, zatem, łączyć po dwie diody w szereg i jeden z tych szeregów rozbić pomiędzy dwa „pakiety” lampek na pulpicie.
Nic nie stoi też na przeszkodzie, aby zastosować tranzystor na wyjściu procesora i wtedy można „zaszaleć” z pobieraną mocą. Dla 6 diod wystarczy jednak powyższy układ. Natomiast chcąc użyć żarówek (czy to do oświetlenia pulpitu czy w semaforach) należy bezwzględnie użyć tranzystorów, które – tak naprawdę – są „elektronicznymi przekaźnikami” i pozwalają na dużo większe obciążenia prądowe.
Sposób podłączenia tranzystora pokazany jest na rysunku:
Należy oczywiście dobrać tranzystor adekwatnie do obciążeń jakie przewidujemy, że się pojawią w naszym układzie.
W tym projekcie założyłem wyłącznie wykorzystanie oświetlenia diodowego, więc użycie tranzystora będzie zbędne. Jednak dla porządku oraz dla osób, które będą w swoich projektach potrzebowały większej mocy na wyjściu mikrokontrolera (chociażby do sterowania oświetleniem makiety lub modułem dźwiękowym) podaję tę informację. Oczywiście nic nie stoi na przeszkodzie, aby użyć klasycznego przekaźnika, jednak wtedy może się okazać że nasz pulpit podczas przełączania różnych elementów zamieni się w „automat perkusyjny”.
Teraz jeszcze kilka zdań na temat sterowania innymi napędami niż serwomechanizmy modelarskie. Sprawa nie jest zbyt skomplikowana w przypadku kiedy chcemy sterować napędem posiadającym wyłączniki krańcowe (w takie wyposażona jest większość fabrycznych napędów). Należy wtedy zamiast serwomechanizmu podłączyć do naszego mikrokontrolera przekaźnik np. taki, jak do polaryzacji krzyżownic. Do przekaźnika doprowadzamy napięcie, które wysteruje napęd rozjazdu. W większości przypadków będzie to napięcie rzędu 12 – 16V. Oba styki wyjściowe przekaźnika podłączamy do złącz sterujących napędu. Dzięki temu do napędu popłynie prąd w sposób ciągły – do jednego styku. Natomiast po zmianie stanu przekaźnika – do styku drugiego. Najczęściej takie napędy do modelowych rozjazdów posiadają wbudowane styki do polaryzacji krzyżownic, więc nie musimy stosować dodatkowych przekaźników do polaryzacji (P1-P5). Trochę trudniej będzie, gdy zastosujemy napęd bez wyłącznika krańcowego. Wtedy musimy zastosować dwa przekaźniki i włączać je „na chwilę” – raz jeden, raz drugi – przełączając w ten sposób napęd rozjazdu. W takiej sytuacji potrzebne są po dwa wyjścia z mikrokontrolera do każdego napędu.
Podobna sytuacja występuje gdy napędem rozjazdu jest napęd z centralnego zamka samochodowego. Nie tylko nie posiada on wyłączników krańcowych, ale jeszcze wymaga odwrotnej polaryzacji na stykach sterujących, czyli należy go zasilać jedynie chwilowo i za każdym razem zamieniać polaryzację obu przewodów sterujących napędem. Jedyne wyjście to zastosowanie przekaźników posiadających po dwa obwody wtórne lub czterech zwykłych przekaźników. Może, więc, nie warto komplikować sobie życia i zastosować serwomechanizmy?
To, w zasadzie, już koniec opisu części elektrycznej służącej do sterowania urządzeniami srk na naszej makiecie doświadczalnej o nazwie „stacja Wysoka”. Jak pewnie zdążyliście zauważyć, nie ma w tym niczego skomplikowanego – nawet dla kogoś, kto nie posiada doświadczenia z elektroniką. Wystarczy łączyć po kolei wyjścia płytek Arduino z odpowiednimi urządzeniami, dbając o przejrzystość ułożenia kabli na makiecie celem szybkiego wychwycenia ewentualnych błędów. Pamiętać trzeba również o nielutowaniu niczego bezpośrednio do płytek Arduino, a to można zrobić stosując odpowiednie złącza ARDUINO TERMINAL BLOCK.
Kończąc tę część cyklu artykułów o sterowaniu urządzeniami srk na makiecie kolejowej informuję, że w kolejnej przejdę do opisu programów sterujących poszczególnymi segmentami. Będzie trochę podstaw programowania, aby każdy wiedział jak to działa i jak takie programy zmodyfikować dla własnych potrzeb. Przecież prostej i „przyjaznej” elektroniki można użyć nie tylko do obsługi urządzeń srk, ale również do sterowania za jej pomocą wieloma urządzeniami „peryferyjnymi” na makiecie.