Wielokrotnie zachodzi potrzeba zautomatyzowania jakiegoś mniej lub bardziej skomplikowanego procesu. W przemyśle przeważnie stosuje się dość kosztowne sterowniki PLC. W przypadku dużych firm jest to zrozumiałe, gdyż dla nich nie jest to duży koszt oraz zwykle posiadają osobę doświadczoną w tym temacie. Przy małych projektach często okazuje się, że wystarczające są tzw. przekaźniki programowalne, które są tańszymi sterownikami, jednak bardziej ograniczonymi. Nieskomplikowane zadania można (i nawet trzeba) realizować za pomocą przekaźników, styczników lub prostych modułów, np. czasowych.
Załóżmy, że potrzebujemy sterownik mający cztery wejścia i dwa wyjścia analogowe 4-20 mA, trzy cyfrowe wyjścia oraz sześć cyfrowych wejść np. na przyciski. Sama jednostka centralna PLC to koszt rzędu kilka-kilkanaście tysięcy złotych. Przekaźnik programowalny to zaledwie kilka stówek, ale… Sama jednostka popularnego modelu przekaźnika programowalnego ma 8 wejść cyfrowych i 4 wyjścia przekaźnikowe. Jeśli wyjścia mają pracować maksymalnie szybko i bardzo często to wyjścia przekaźnikowe odpadają i trzeba dodać moduł wyjść tranzystorowych.
Cztery wejścia analogowe to aż dwa moduły z dwoma wejściami. Dwa wyjścia analogowe to kolejny moduł. Razem z jednostką centralną, mamy pięć modułów. Do zaprogramowania trzeba jeszcze zakupić licencję na oprogramowanie, które oczywiście wymaga posiadania komputera często z płatnym systemem operacyjnym. Moduły z licencją wyjdą łącznie nieco ponad dwa i pół tysiąca złotych netto. Do kosztu trzeba jeszcze doliczyć licencję na system operacyjny i czas potrzebny na naukę egzotycznego obrazkowego języka programowania.
Ktoś tu może rzucić słowo: Arduino. Moja odpowiedź brzmi: i tak i nie. Wiele osób próbowało użyć płytki prototypowej z tej rodziny i po udanym starcie, przyszło rozczarowanie w postaci częstych awarii powodujących straty wielokrotnie przekraczające koszt PLC czy przekaźnika programowalnego.
Płytki prototypowe Arduino to nic innego jak płytka PCB z jakimś mikrokontrolerem, gniazdami i paroma elementami na krzyż. Pierwotnie miało to służyć do obniżenia kosztów nauki programowania mikrokontrolerów i ułatwienia wejścia w tą drogę. Jednak wiele osób wręcz zaczęło to uważać za budulec wszelakiej elektroniki i z braku wiedzy oraz jakiejkolwiek chęci do nauki, używać to do celów, w których zwykły przekaźnik lub nawet pojedynczy tranzystor zrobi dokładnie to samo, ale lepiej, taniej i bardziej bezawaryjnie.
Nie znaczy to jednak iż to nie jest kompletnie przydatne w automatyce. Oczywiście awaryjność i znacznie utrudniony montaż niemal całkowicie wykreśla to z zastosowań w automatyce, ale nazwa płytka prototypowa chyba jasno wskazuje iż służy to do prototypowania.
Najpopularniejsze płytki Arduino zawierają w sobie mikrokontroler z rodziny ATmega, który może w większości modeli nie należy do bestii wydajności czy możliwości, ale niski koszt, mały rozmiar i bezawaryjność samego mikrokontrolera, powoduje, że jest w masowej produkcji wiele urządzeń korzystających z niego.
Dla przypomnienia, mikrokontroler (μC) to układ scalony zawierający w jednej małej obudowie procesor, pamięć RAM, pamięć programu, układ wejścia-wyjścia i często pamięć flash na dane nieulotne. Wiele z nich do działania wymaga paru drobnych elementów, np. rezystor i kondensator do zresetowania po włączeniu. Niektóre nawet nie potrzebują kompletnie nic – no może tylko zasilanie.
Docelowy sterownik można wykonać na samodzielnie zaprojektowanej i nawet samodzielnie wykonanej PCB, a przy odrobinie wprawy można nieco uprościć stosując płytkę uniwersalną.
Wejścia analogowe 4-20 mA nie są wielkim problemem. Rezystorem „zamieniamy” prąd na napięcie i pozbywamy się zakłóceń kondensatorem. Popularna ATmega328P ma sześć wejść przetwornika ADC który ma rozdzielczość 10 bit, co w wielu wypadkach jest nadto wystarczające. Zawsze można się pokusić o optoizolację lub o lepsze wykorzystanie rozdzielczości przetwornika za pomocą wzmacniacza operacyjnego, poprzez offset tych 4 mA.
Gdyby ilość wyprowadzeń (z wejściami analogowymi na czele) nie byłaby wystarczająca, to oprócz układów na magistrali I2C, można wykorzystać innym mikrokontroler, np. ATmega32A, ATmega2560 lub coś z rodziny STM 32 – zwłaszcza jeśli potrzebujemy coś szybszego. W każdym razie oczywiście trzeba zbuforować wyjścia oraz wejścia – nawet jeśli nie potrzebujemy 24 V, gdyż wyładowanie elektrostatyczne oraz napięcia indukowane podczas pobliskich przepięć, mogą skutecznie uśmiercić strukturę krzemową. Lepiej wymienić groszowy scalak w podstawce, niżeli mikrokontroler montowany powierzchniowo i jeszcze ponownie go programować.
Z wyjściem analogowym w atmegach nie jest aż tak prosto, gdyż nie ma wbudowanego przetwornika DAC. Najprościej można wykorzystać wyjścia PWM i zamienić PWM na sygnał analogowy za pomocą dwóch filtrów RC na każde wyjście.
Sygnał PWM wymaga odfiltrowania i oferuje zaledwie 8-bitową rozdzielczość. Jeśli to nie jest wystarczające, do wyboru jest dużo niedrogich przetworników DAC, jak na przykład 12-bitowy MCP3204.
Jako obudowę takiego sterownika, można wykorzystać obudowę uniwersalną do montażu na szynie TH35, albo obudowę jakiegoś bardzo starego lub zepsutego sterownika. W drugim przypadku będzie więcej miejsca na „wysokość”, dzięki czemu bez problemu umiejscowimy wewnątrz wyświetlacz LCD, np. 4×20 znaków na bazie popularnego sterownika HD44780.
Klawiaturę można wykonać na wiele sposobów. Tanią, trwałą i zarazem efektowną klawiaturę membranową można zaprojektować i zamówić lub zamówić wraz z zaprojektowaniem, co wbrew pozorom nie jest ani skomplikowane ani drogie.
Jak czas lub koszt bardzo gra rolę, to można przylutować zwykłe microswitche do płytki uniwersalnej oraz przewiercić otwory na przyciski. Warto wtedy skorzystać z drukarki etykiet lub zwykłej drukarki, nożyczek i kleju, gdyż prędzej czy później zapomni się co jest co.
Mikrokontroler oczywiście trzeba zaprogramować. Do popularnych rodzin μC istnieje pełno oprogramowania oraz programatory, które obecnie są okrutnie tanie. Złącza JTAG, USB czy ISP nie są żadnym problemem. W przypadku ISP można pisać zarówno w klasycznym C i ulubionym edytorze albo w razie braku czasu skorzystać z Arduino, zawierającego dość dużo bibliotek do obsługi peryferiów.
Użytkownicy systemów Linuksowych, oprócz bardzo bogatego oprogramowania, mogą wykorzystać jakikolwiek edytor oraz oskryptować kompilację wraz z programowaniem – często to są aż trzy etapy, gdyż kod często kompilowany jest do postaci szesnastkowej, co trzeba skonwertować do binarki, a następnie z tego pliku uruchomić proces flashowania.
Programowanie wykonywane przez człowieka, tak jak każda inna czynność, narażona jest na błędy, więc bardzo pomocne mogą być diody LED sygnalizujące stan wyjść czy nawet wejść.
Koszt całego przedsięwzięcia to między pięćdziesiąt a kilkaset złotych oraz kilka godzin pracy. W porównaniu do przekaźnika programowalnego jest nieco taniej i dzięki temu mamy możliwość wykorzystania „normalnego” języka programowania, zamiast obrazkowego – którego trzeba się nauczyć, zapłacić za oprogramowanie i liczyć na to, że będzie spełniać nasze potrzeby.
Oczywiście wiele fabrycznych sterowników PLC umożliwia zaprogramowanie ich w C, ale trzeba dopisać co najmniej jedno zero do faktury. Nie wspominając o własnościowym oprogramowaniu, często wymagającym posiadania konkretnej wersji Windowsa. Obecnie każdy mikrokontroler można bez najmniejszego problemu zaprogramować w systemach *nix (FreeBSD, OpenBSD, Linux, OSX), nie martwiąc się o brak kompatybilności oprogramowania czy konieczności posiadania wydzielonego osobnego starego komputera, który zepsuje się szybciej niż PLC.
Przy większych projektach, może być potrzebna magistrala CAN lub sieć Ethernet. Przy Atmegach na bardzo upartego można dodać transceiver CAN i ewentualnie drugi mikrokontroler do jego osobnej obsługi. Lepszym pomysłem wydaje się być ESP32 który posiada między innymi CAN oraz WiFi. Niektóre modele z rodziny STM32 posiadają Ethernet oraz jedną-dwie CAN z niewielkim buforem.
Przy projektach z siecią Ethernet popularny jest Raspberry Pi, ale jego koszt i niska dostępność mogą być zniechęcające. Z racji iż to jest wydajny komputer z zewnętrzną pamięcią DDR, to zaprojektowanie własnej płytki nie jest ani proste ani szybkie. W jego miejsce można wykorzystać podobne mikrokomputery z takimi samymi wyprowadzeniami GPIO – obecnie chyba najpopularniejsze to Orange Pi, Banana Pi oraz Radxa.
Dla niektórych mogą wydawać się kuszące płytki z procesorem x86, jak w większości komputerów biurkowych i laptopów, jednak często są dość drogie, wymagają większego chłodzenia oraz większego i droższego zasilacza. No może nie dotyczy to Intel Atom, ale kosztem ułamka wydajności nieco archaicznego RK3399.