Grupa modelarska PMMH0 już od dawna przekazuje swą wiedzę modelarską na przeróżne tematy szerszemu gronu odbiorców, lecz w ostatnim czasie – w związku z nieco inną sytuacją na świecie – sporo dzieje się za pośrednictwem tak zwanych mediów społecznościowych oraz stron internetowych. Również w naszych mediach pojawiają się kolejne artykuły i porady modelarskie. Podobnie jak wielu naszym sympatykom, mnie bardzo przypadł do gustu cykl Leszka o zależnościach w kolejowych urządzeniach sterowania ruchem i o prowadzeniu ruchu na makiecie. Postanowiłem, zatem, dorzucić swoje „trzy grosze’ i zaprojektować cały system sterowania dla małej stacji kolejowej, którą znacie już jako stacja Wysoka.
Za zgodą i przy aprobacie Leszka zmieniłem tylko nieco sposób utwierdzania przebiegów pociągowych. W celu ułatwienia obsługi pulpitu nastawczego oraz aby uprościć oprogramowanie systemu sterowania stacją ustaliliśmy, że przyciski przebiegowe będą pojedyncze, a więc do utwierdzenia danego przebiegu potrzebna będzie chwilowe naciśniecie JEDNEGO (a nie dwóch) przycisku przebiegowego. Natomiast kontrola utwierdzenia każdego przebiegu pozostanie niezmienna – przy pomocy dwóch potrójnych segmentów żółtych „światełek” na pulpicie.
Dlatego nasz pulpit do sterowania urządzeniami srk na stacji Wysoka będzie wyglądał tak:
Idea pozostaje niezmienna i zgodna z założeniami opisanymi przez Leszka: stworzyć kompletny system sterowania stacji Wysoka, z zależnościami i zachowaniem jej pełnej funkcjonalności, oparty o elementy dostępne dla każdego i zarazem na tyle prosty, aby każdy modelarz budujący makietę był w stanie taki system stworzyć na swoim modelu stacji.
Zapowiadam, więc już teraz, cały cykl artykułów poświęcony temu tematowi.
Zacznę od części elektronicznej, dotyczącej wyboru odpowiednich elementów i ich opisu, jak również od przekazania niezbędnej wiedzy do poskładania tych wszystkich „klocków” w jedną całość. Następnie przejdziemy do opisu części „programistycznej”, w której krok po kroku przebrniemy przez programy sterujące tym wszystkim, by na koniec opisać dokładnie jak to wszystko razem połączyć i uruchomić.
Proszę się absolutnie nie zniechęcać po przeczytaniu tych kilku zdań – będzie naprawdę łatwo! Najtrudniejszą czynnością przy realizacji tego przedsięwzięcia wydaje się być… lutowanie. I wcale nie żartuję.
Zatem – do rzeczy. Projekt owej stacji został podzielony na 3 segmenty, na których znajdą się elementy wymagające sterowania. Dlatego na każdym takim segmencie, na którym znajdzie się rozjazd, wykolejnica lub semafor, musimy mieć elementy wykonawcze oraz odpowiadającym im element sterujący na pulpicie. Jako miłośnikowi platformy ARDUINO mój wybór jest oczywisty:
– do zarządzania pulpitem potrzebny będzie Arduino MEGA.
– do zarządzania segmentami makiety użyjemy Arduino NANO;
Wybór ten podyktowany jest, oczywiście, ilością wejść/wyjść na tych płytkach, a nie ich możliwościami, do których nawet nie zaczniemy się zbliżać. Arduino jest bardzo popularną platformą wśród amatorów elektroniki, konstruktorów robotów i wszelakich domowych wynalazców i eksperymentatorów. Są to gotowe płytki a właściwie „zestawy uruchomieniowe”, w których pracują popularne mikrokontrolery AVR. Największymi ich zaletami jest duża dostępność, niska cena, darmowe oprogramowanie, brak jakiejkolwiek wyspecjalizowanej aparatury do obsługi (wystarczy każdy zwykły komputer) i wgrywania oprogramowania. Ponadto występuje duża liczba dodatków pozwalających w bardzo łatwy sposób na rozbudowę struktury każdego projektu.
Wielu z was zapewne już się zetknęło z tą platformą, choć zdaję sobie sprawę z tego, że dla znacznej części modelarzy może to być coś nowego. Zapewniam, jednak, że każdy, kto ma odrobinę cierpliwości (a każdy modelarz przecież ją ma!) i zapozna się z kilkoma przykładami bez problemu opanuje temat i będzie w stanie samodzielnie realizować ciekawe projekty.
Celem tego poradnika jest umożliwienie każdemu chętnemu zbudowanie zależnościowego systemu sterowania makietą małej stacji kolejowej.
Będą nam potrzebne następujące „elementy”:
– trochę cierpliwości (!)
– trochę wytrwałości (!)
– kilka prostych narzędzi w tym lutownica;
– Arduino MEGA;
– Arduino NANO;
– zasilacz;
– diody, oporniki, diody LED;
– przyciski do pulpitu;
– kable i złącza kablowe;
– serwomechanizmy do sterowania rozjazdami;
– przekaźniki do polaryzacji rozjazdów;
– płytki Terminal block.
Szczegółowa lista elementów zostanie podana przy opisie każdego z poszczególnych bloków układu. Oczywiście będzie także potrzebny komputer, który pozwoli na zaprogramowanie całego układu. Wystarczy zwykły komputer posiadający wyjście USB.
Wszystkie czynności związane z budową opiszę szczegółowo – krok po kroku, tak aby osoby nie mające na co dzień styczności z elektroniką czy też programowaniem były w stanie podołać wyzwaniu.
Ogólny schemat naszej makiety wygląda więc następująco.
Łatwo zauważyć, że pomiędzy poszczególnymi segmentami a pulpitem istnieją tylko 4 połączenia elektryczne („kablowe”). Są to: dwie linie zasilania – przewód +5V oraz przewód GND (czyli masa układu), a także dwie linie transmisji danych – Rx (read = odczyt danych) i Tx (transmit = transmisja danych). Jako, że będziemy korzystali z transmisji przez port szeregowy, to nie potrzebujemy żadnych dodatkowych urządzeń do transmisji naszego sygnału pomiędzy poszczególnymi segmentami makiety (dla porządku dodam, że port szeregowy komunikuje się na odległość do kilkudziesięciu metrów). Natomiast musimy zabezpieczyć wyjścia sygnału Tx w poszczególnych segmentach makiety za pomocą diod, gdyż dane wychodzące z portu Tx nie mogą trafiać do innego portu Tx (czyli transmisyjnego), a powinny trafić do portu Rx (czyli odbiorczego).
Zwróćcie uwagę, że sygnał wysłany z pulpitu z wyjścia Tx – czyli nadawania danych, trafia do wejść Rx w segmentach makiety (wszystkich) – czyli odbierania danych, natomiast poszczególne segmenty makiety wysyłają swoje dane przez porty Tx (i diodę) do poru odbiorczego w pulpicie Rx. Jeśli, zatem, nasz pulpit coś „mówi”, to „słyszą” to wszystkie segmenty. Natomiast jeśli któryś segment „odpowiada” pulpitowi, to taka informacja trafia tylko do pulpitu.
Dioda którą użyjemy do blokowania wyjść Tx przed „niewłaściwą kierunkowo” transmisją to najzwyklejsza dioda, którą znajdziemy w każdym sklepie z częściami elektronicznymi, a nawet może gdzieś w… szufladzie naszego biurka, przy jakimś nieeksploatowanym urządzeniu. Może to być na przykład dioda o symbolu BAV 17, BAV 18 … BAV 21 lub podobna. Nie ma tu żadnych wygórowanych potrzeb, gdyż napięcia na jakich będziemy pracować to zaledwie 5V, a częstotliwości nadawanych sygnałów wysyłanych przez nasze „urządzonka” nie są powalające.
Zasilanie całości proponuję zrealizować za pomocą zasilacza dającego napięcie 5V, bez możliwości jego regulacji (pamiętajmy, że Arduino pracuje z napięciem tylko 5V i wyższe go zniszczy). Prąd jaki popłynie podczas pracy serwomechanizmu przestawiającego zwrotnicę rozjazdu lub uruchamiającego wykolejnicę to ok. 0,5A. Pozostała infrastruktura każdego segmentu – taka jak diody LED, przekaźnik czy mikrokontroler potrzebują minimalnych prądów, zatem powinniśmy zastosować zasilacz o wydajności minimum 1A. Serwomechanizmy napędzające zwrotnice i wykolejnice nigdy nie będą działały równocześnie, więc nie ma sensu używania zasilacza o większym prądzie wyjściowym.
Dodatkowo zasilanie samego pulpitu również proponuję zrealizować jako oddzielne, ale o tym napiszę później.
Zasilanie wszystkich akcesoriów na segmentach makiety będzie realizowane przez płytki wykonawcze, czyli Arduino NANO.
Teraz kilka zdań o połączeniach elektrycznych pomiędzy segmentami. Należy je zrealizować przy pomocy złącz, które będą w stanie wytrzymać obciążenie przynajmniej 1A, zatem możemy użyć na przykład złącz MOLEX lub SUPERSEAL – w obu przypadkach tzw. 4–ro torowych. Złącza takie można nabyć jako już „osadzone” na kablach. Wystarczy, więc, tylko na końcach segmentów makiety zainstalować te złącza w sposób pozwalający na wygodne ich łączenie pod spodem makiety.
Podsumowując:
Mamy sytuację, w której w pulpicie znajduje się płytka z mikrokontrolerem – Arduino MEGA i pełni ona w naszym systemie funkcję „głównego mózgu”. To ten mikrokomputer będzie „rządził” systemem sterowania ruchem kolejowym naszej makiety, a więc wszystkimi zależnościami, przebiegami i wyświetlanymi sygnałami na semaforach. Oczywiście nie zrobi on niczego sam z siebie. Każde działanie systemu będzie zawsze skutkiem działania dyżurnego ruchu, czyli osoby obsługującej pulpit.
Elementami wykonawczymi tych działań będą odpowiednie urządzenia rozmieszczone na segmentach makiety, które będą zarządzane poprzez Arduino NANO.
Na koniec pierwszej części artykułu chciałbym jeszcze wspomnieć o najtrudniejszej czynności jaka nas będzie czekać podczas realizacji całego projektu – a więc o lutowaniu.
Nie mam tu na myśli przylutowania diody czy opornika do kabelka, bo to banał, ale o łączeniu tych kabelków z płytkami Arduino. To jest nieco poważniejsze wyzwanie.Na nasze szczęście są setki dodatków, a jednym z nich jest TERMINAL BLOCK. Jest to rozwiązanie pozwalające na podłączenie do naszych „serduszek” wszystkich kabelków oszczędzając sobie nieco lutowania, a zarazem ułatwiając sobie montaż i demontaż płytek Arduino.
Inna nazwa tego elementu to SCREW SCHIELD. Niestety jest pewien problem ze zdobyciem takiej płytki-gniazda dla płytek MEGA, dlatego polecam zakup płytki uniwersalnej do Arduino Mega z kompletem złącz śrubowych.
Tak czy owak – jednak bez lutowania się nie obejdzie.
Odradzam natomiast zdecydowanie bezpośrednie lutowanie czegokolwiek do płytek Arduino. Zawsze stosujmy dodatkowe płytki-gniazda, do których wkładamy nasze „mini mózgi”. Mamy wtedy możliwość szybkiej wymiany każdej płytki, a także minimalizujemy ryzyko uszkodzeń podczas lutowania. Operować przecież będziemy wysokotemperaturowym narzędziem, a mikroprocesory i inne delikatne elementy elektroniczne są na to bardzo wrażliwe. Dodatkowym atutem możliwości szybkiego wyjmowania płytek z gniazd jest to, że możemy wygodnie wgrywać oprogramowanie, łącząc płytkę z laptopem na stole, a nie leżąc z komputerem pod makietą. Przyda się to bardzo podczas tworzenia własnych projektów, gdy zajdzie potrzeba ich testowania i zapewne wielokrotnego aktualizowania oprogramowania.
Dla tych którzy nie mieli wcześniej styczności z lutownicą polecam zakup już zlutowanych płytek Arduino, lub wizytę u znajomego który posiada większe doświadczenie w lutowaniu.
To ważne, aby nie „przegrzać” mikrokontrolera lub jakiegoś innego układu znajdującego się na lutowanej płytce, gdyż taka sytuacja eliminuje taką płytkę.
To tyle w tej części artykułu. W kolejnej zajmę się szczegółowo każdym segmentem makiety oraz pulpitem. Uważam, że dalej będzie coraz ciekawiej.