Arduino przejmuje kontrolę

Pojazd, gdy nie jest nawet intensywnie użytkowany i tak się starzeje, i powinien przejść nie tylko okresowy przegląd ale czasem nawet poważniejszą modernizację. Poprzedni wpis był wstępem do opisu toczących się zmian. Kolumna nastawników jaką udało mi się pozyskać wymagała innego podejścia do sterowania, a w związku z tym pojawił się pomysł przejścia na rozwojową platformę Arduino. W zasadzie dotychczas stosowany PoKeys dawał sobie radę ze wszystkim co było potrzebne i mogłoby tak pozostać, jednak chęć dodania obsługi wspomnianych nastawników z bezpośrednim odczytem wszystkich pozycji wymuszała zastosowanie dodatkowego mikrokontrolera. Mogłem w zasadzie użyć najprostszej wersji np. UNO, czy Nano jednak przy okazji chciałem zrobić trochę porządku i wyeliminować pewne dotychczasowe rozwiązania. Ze względu na ograniczenia PoKeys jak i samego symulatora musiałem stosować dodatkowe układy sterujące miernikami NN oraz Haslerem. Ten pierwszy został zastąpiony przez fragment kodu programu i możliwość wykorzystania dodatkowych wyjść PWM w Arduino. W drugim przypadku mogłem podłączyć falownik bezpośrednio do dodatkowych złącz RX/TX. Te rzeczy były najłatwiejsze do zrealizowania przy zastosowaniu Arduino MEGA lub DUE, które mają dużo pinów oraz kilka interfejsów UART. Nie chciałem mieszać napięciami dlatego wybrałem wersję MEGA i teraz wszystkie elementy działają na logice 5V. Ważna była również niższa cena tej platformy w porównaniu do PoKeys. Teraz w przypadku awarii mikrokontrolera wymiana będzie mniej bolesna i szybsza, choć wolałbym tego niegdy nie ćwiczyć.

Płytka interfejsu panelu dolnego (I2CIPD)

Gdy już zdecydowałem się na zmianę sterowania, co zostało potwierdzone testami na biurku, a później po podłączeniu nastawników, to pojawił się pomysł zrobienia porządku z przewodami upchniętymi na szybko pod powierzchnią pulpitu. Niestety pierwsza konstrukcja nie była planowana w szczegółach, stąd niesforna pajęczyna przewodów widoczna na wielu moich zdjęciach. Wtedy cieszyło mnie, że coś kolejnego zadziałało i można chwilę pojeździć. Z czasem ta plątanina mogła prowadzić do poważnego problemu gdy, szczególnie podczas transportu, coś przestanie kontaktować i trzeba będzie szybko znaleźć przyczynę. Aby okiełznać ten bałagan, poza Arduino MEGA pojawiły się dodatkowe płytki. Pierwszą z nich był interfejs nastawników zamontowany bezpośrednio w ich obudowie. Wygodna magistrala I2C pozwoliła elegancko podłączyć się z głównym kontrolerem przy użyciu tylko czterech przewodów. Druga płytka miała wyeliminować ciągnięcie wiązki z dolnego panelu hebelków, przycisków i lampek do Arduino i stąd powstał interfejs panelu dolnego (I2CIPD) również wykorzystujący magistralę I2C. Obie płytki interfejsów wykorzystują ekspandery pinów cyfrowych nie ze względu na ich brak w Arduino MEGA, a tylko po to aby można było je połączyć z użyciem minimalnej liczby przewodów.

Arduino MEGA podlączone do płytki ACB

Bezpośrednie połączenie z mikrokontrolerem pozostało dla mierników wykorzystujących piny PWM oraz kilka dodatkowych elementów znajdujących się bliżej. Tę płytkę nazwałem ACB (Arduino Connection Board) bo nie zawiera żadnej istotnej elektroniki, a wyłącznie uporządkowane złącza sterowanych elementów. Za pośrednictwem tej płytki następuje również komunikacja z falownikiem poprzez UART. Płytka ta przymocowana bezpośrednio przy Arduino umożliwi jego łatwą wymianę w razie awarii, a stosowane złącza goldpin nie będą tak narażone na uszkodzenie i niekontakty. Nadal czekam na dostawę dedykowanej płytki-nakładki Arduino Screw Shiel, która miała w zamyśle zapewnić jeszcze łatwiejsze i pewniejsze połączenie pozostałych płytek z Arduino. Niestety przesyłka jest nadal (od kilku miesięcy) w podróży i nie wiadomo czy kiedykolwiek do mnie trafi. Cóż, Chiny daleki kraj.

Teraz pozostaje tylko żmudna zmiana okablowania. Sukcesywnie wypinam stare przewody łączone prowizorycznie z elementami pulpitu i zastępuję je wersjami zaopatrzonymi w stosowne końcówki. Mam nadzieję, że da to pewniejszy kontakt i poprawi przejrzystość połączeń.

Lampki kontrolne sterowane z Arduino

Opisywana tu modernizacja musi niestety potrwać jakiś czas ale mam nadzieję, że zakończy się sukcesem. Dla zapewnienia podstawowego poziomu entucjazmu staram się po podłączeniu kilku elementów uruchomić symulator, przynajmniej na testowej scenerii i potwierdzić, że wszystko idzie we właściwym kierunku. Na zdjęciu wszystkiego nie da się pokazać ale przynajmniej pochwalę się działającymi lampkami. Te podłączyć było stosunkowo łatwo bo wykorzystałem dotychczasowy sterownik SZK przełączając jedynie wejścia transoptorów pod nowy kontroler.

Przygotowany projekt migracji zakłada możliwość podłączenia wszytkiego co pracowało dotychczas z PoKeys, a nawet kilka przyszłościowych zastosowań (np. rysiki Haslera), jednak może się okazać, że kalibracja mierników WN oraz manometrów, a może i kranów hamulcowych będzie łatwiejsza i bardziej precyzyjna poprzez PoKeys niż w Arduino. Kto wie, może docelowo oba mikrokontrolery pozostaną na pokładzie. Czas pokaże.

Po wykonaniu dodatkowych wiązek przewodów i przygotowaniu możliwości szybkiego przepięcia się między PoKeys i Arduino przyszedł czas na ogarnięcie kranów hamulcowych. Udało się to nadspodziewanie dobrze. Przy okazji poprawiłem stabilność współpracy mechanizmu z potencjometrem. Niestety w przypadku hamulców nie da się pogodzić równoległej pracy obu kontrolerów. Aby sygnał docierał do symulatora trzeba przestawić informacje zwrotne na COM. To trochę krzyżowało plany w przypadku problemów z integracją mierników. Z nimi jednak takiego problemu nie było i mogą działać równolegle z oboma kontrolerami. Jednak do czasu podłączenia wszystkich mierników i manometrów krany hamulca muszą pozostać podpięte do PoKeys.

Na koniec przyszedł czas na mierniki. Mierniki niskiego napięcia przetestowałem już wcześniej poza pulpitem więc nie obawiałem się zbytnio przejścia i dość gładko wyeliminowałem sterownik SMNN. Dzięki temu zrobiło się trochę miejsca na zamontowanie płytki I2CIPD. Trochę obawiałem się reakcji mierników wysokiego napięcia, czy będą wystarczająco liniowe ale na szczęście tu też poszło dość gładko. Niestety z mechanizmami manometrów już tak łatwo nie jest i wymagają korekcji wskazań. Ich charakterystyka jest dość mocno nieliniowa więc byłem zmuszony wprowadzić stosowną funkcję korekcyjną do kodu programu. Jest to trochę trudniejsze niż korekta współczynnikami dodawanymi bezpośrednio w eu07.ini w przypadku PoKeys ale mam nadzieję, że i ta przeszkoda zostanie pokonana.

Wszystko co się dało zostało podpięte pod Arduino. a PoKeys odchodzi na spoczynek

No i stało się, około północy z 25 na 26 maja 2019 roku ostatnie elementy pulpitu zostały przełączone na Arduino, a tym samym konwersja sterowania została w istotnej mierze zakończona powodzeniem. Wszystko poszło nadspodziewanie dobrze i mam nadzieję, że również w taki sposób będzie funkcjonować dalej. PoKeys dzielnie spełniał swoje zadania przez ponad 6 lat i bez niego uruchomienie mojego pulpitu nie byłoby możliwe. Wszystko się jednak zmienia, oprogramowanie symulatora wzbogaciło się o możliwość komunikacji poprzez port szeregowy, a ja nabrałem przez te kilka lat troszkę doświadczeń z Arduino. To wszystko plus nieoceniona pomoc kolegów z MaSzynowego forum (miko22 i maciek001), którym po raz kolejny należą się wielkie podziękowania, spowodowało, że ta zmiana stała się faktem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Kod antyspamowy * Ważność kodu antyspamowego wygasła. Podaj kod ponownie.

This site uses Akismet to reduce spam. Learn how your comment data is processed.