envelope redakcja@polskiinstalator.com.pl home ul. Wąski Jar 9
02-786 Warszawa

Advertisement











Któż z nas nie spotkał s39ię w swojej pracy z problemem braku odpowiedniego regulatora do układu grzewczego? – Dziś problem ten można jednak stosunkowo łatwo pokonać. Pojawienie się mikrokontrolerów, a potem ich masowa produkcja – bo trzeba wiedzieć, że udział mikrokontrolerów na rynku półprzewodników obecnie kilkukrotnie przekracza udział mikroprocesorów – oraz niska cena sprawiły, że zbudowanie własnego regulatora jest na wyciągnięcie ręki dla wszystkich zainteresowanych. Może więc warto rozpocząć własną przygodę z mikrokontrolerami?

Na rynku dostępnych jest wiele platform, na bazie których możemy zbudować regulator realizujący program, jakiego nie ma żaden dostępny gotowy regulator na świecie! Najbardziej popularne obecnie platformy to Arduino i Raspberry Pi. W dalszej części artykułu zajmiemy się projektem na platformie Arduino, ponieważ jest to prawdopodobnie najłatwiejsza i najtańsza metoda rozpoczęcia przygody z mikrokontrolerami w celu wykreowania rozwiązań w zakresie automatyki grzewczej dopasowanych do indywidualnych potrzeb.

Czym jest Arduino, czyli nasz pakiet startowy?
Arduino to projekt Open Hardware, dzięki czemu każdy, łącznie z firmami, ma dostęp do specyfikacji technicznych i sam może stworzyć na tej bazie klona lub własną odmianę projektu. To właśnie dzięki temu na rynku dostępne są tanie klony oryginalnego układu. Oryginalna płytka kosztuje powyżej 80 zł, koszt klonu zwykle sięga kilkunastu złotych. Standardowa płytka Arduino Uno zawiera 8-bitowy mikrokontroler z rodziny Atmel AVR, np. typu Atmega 8, Atmega 168 czy Atmega 328. Poza tym istnieje kilkanaście rodzajów płytek Arduino w zależności od zastosowanych modułów dodatkowych, np. do komunikacji bezprzewodowej zgodnie z protokołem Bluetooth lub WLAN i ostatecznego przeznaczenia.
Większość układów zawiera także regulator napięcia 5 V lub 3,3 V. Jest to o tyle ważne, że napięcie pracy płyty definiuje również napięcie logiki, z jaką pracuje dany układ. Mówi się zatem, że dana płytka pracuje odpowiednio z logiką 5 V lub 3,3 V. Trzeba pamiętać, że w ramach konstruowanego przez nas regulatora wszystkie połączone płytki z dodatkowymi modułami (np. przekaźniki) powinny pracować na tym samym napięciu logiki.
Jeżeli zdarzy się nam, że zastosowane w projekcie płytki mają różne napięcia logiki, wtedy musimy stosować specjalne układy dopasowujące. Koszt takiego doposażenia jest nieznaczny. Na rynku dostępne są bowiem tanie, gotowe układy dopasowujące, tzw. konwertery poziomów logicznych. Z jednej strony taki układ ma jedno lub kilka wejść/wyjść 5 V, a z drugiej 3,3 V.

H40ardware – wyposażenie platformy
To, jak wygląda płytka Arduino Uno przedstawia rys. 1. Prześledźmy zatem, z jakich funkcjonalnych elementów się składa (odpowiednio do widocznych na rys. oznaczeń liczbowych od 1 do 18) oraz jakie są/mogą być ich funkcje.

  • Złącze USB (1) – wykorzystywane do zasilania, programowania oraz komunikacji z komputerem. Posłuży do wgrania programu sterującego oraz do zasilania, kiedy kontroler będzie podłączony do komputera.
  • Złącze zasilania (2) (optymalnie 7-12 V) – tym złączem moduł jest zasilany podczas jego normalnej pracy. Ważne jest, by moduł nie był zasilany jednocześnie z gniazda USB (1) i gniazda zasilającego (2), ponieważ grozi to uszkodzeniem płytki Arduino i samego portu USB. Podczas programowania modułu, w ferworze walki, miałem okazję przetestować ten wariant ze wspomnianym skutkiem. Warto więc zakupić za jednym razem kilka płytek Arduino.
  • Stabilizator napięcia (3) – obniża napięcie wejściowe ze złącza zasilania (2) do 5 V. Dzięki temu możemy stosować zasilacze o napięciu 7-12 V. W przypadku płytek z logiką 3,3 V (będzie to opisane w specyfikacji płytki) stosuje się stabilizator 3,3 V.
  • Przycisk resetu (4) – resetuje płytkę Arduino. Używamy go, jeśli zajdzie taka potrzeba, np. gdy chcemy ponownie sprawdzić zachowanie naszego regulatora po uruchomieniu. Wgranie nowego oprogramowania do Arduino powoduje jego automatyczny reset i start nowego programu.
  • Mikrokontroler portu USB (5) – służy do komunikacji z komputerem (wgranie programu oraz wysyłanie komunikatów do terminala) poprzez złącze USB.
  • Złącze programowania do mikrokontrolera (6). Złącze to na etapie początkowym nie jest nam potrzebne. Gdybyśmy jednak mieli uszkodzony mikrokontroler portu USB, komunikacja nadal będzie możliwa właśnie poprzez to złącze. Wymaga to jednak użycia odpowiedniej płytki programatora.
  • Złącza sygnałowe (7), (8) – to tutaj podłączamy nasze układy peryferyjne. Grupy tych złącz służą do wprowadzania i wyprowadzania sygnałów w postaci zera logicznego (~ 0 V) lub jedynki logicznej (~ 5 V). Dodatkowo na pinach oznaczonych znakiem tyldy „~” możemy wyprowadzać sygnał PWM o napięciu 5 V i częstotliwości 490 lub 980 Hz (tylko piny 4 i 13).
  • Dioda LED (9) – sygnalizuje podłączenie napięcia do Arduino.
  • Wyjście programatora dla głównego mikrokontrolera (10) – złącze to umożliwia komunikację z głównym mikrokontrolerem ATMEGA 328 (13). Na poziomie dla początkujących 42ten element nie jest nam potrzebny.
  • Złącze sygnałowe (11) – to tutaj podłączamy nasze układy peryferyjne. Grupa tych złącz może spełniać te same funkcje wejścia/wyjścia jak złącza (7) i (8). Jednak służyć one mogą również jako wejścia analogowe, umożliwiając pomiar napięcia od 0 do 5 V, co możemy wykorzystać do ustawiania odpowiednich wartości za pomocą potencjometru. Warto wspomnieć, że piny A4 i A5 na tym złączu umożliwiają komunikację po magistrali I2C, którą mają niektóre wyświetlacze i czujniki.
  • Złącze zasilania (12) – umożliwia wyprowadzenie napięć zasilających dla naszych urządzeń peryferyjnych. Tutaj też możemy resetować płytkę za pomocą pinu „Reset”.
  • Główny mikrokontroler AVR ATmega328 (13) – serce Arduino.
  • Diody LED (14), (15) – diody (14) sygnalizują transmisję do/z komputera, natomiast dioda (15) jest do dyspozycji użytkownika. Diody sygnalizujące komunikację z komputerem (14) będą mrugały podczas wgrywania naszego programu do płytki. Dioda (15) połączona jest równolegle z pinem 13 grupy złącz sygnałowych (7) i kiedy na tym styku pojawia się napięcie (tzw. stan wysoki), to ta dioda zapala się. Dużo programów dla początkujących napisanych jest tak, by za pomocą tej diody (15) pokazać działanie jakiegoś programu (np. poprzez jej mruganie).
  • Rezonator ceramiczny (16) – taktuje mikrokontroler (13) z częstotliwością 16 MHz.
  • Zworka (17) – jej przecięcie wyłącza automatyczne resetowanie Arduino (złącze rzadko używane).
  • Pola lutownicze (18) – z wyprowadzonymi sygnałami mikrokontrolera portu USB (5). Są używane bardzo rzadko – na razie niepotrzebne.

Co to jest sygnał PWM?
Omawiając wyposażenie płytki Arduino Uno, wymieniłem złącza sygnałowe (7), (8), które umożliwiają wyprowadzanie sygnału PWM. Przyjrzyjmy się bliżej, jak rzecz się przedstawia.
Sygnał PWM to sygnał prostokątny o zmiennym wypełnieniu. Działanie sygnału PWM możemy sprawdzić intuicyjnie, podłączając diody LED do wyjść PWM i uruchamiając prosty program do sterowania PWM. Kiedy wypełnienie jest małe, np. 40%, wtedy ilość energii dostarczanej do diod będzie mała i diody będą się paliły słabo, a kiedy wypełnienie osiągnie wartość 100%, diody będą paliły się normalnie. Charakterystykę sygnałów o różnym wypełnieniu ilustruje rys. 2
Podłączając diodę LED, nie zapomnijmy o rezystorze! Diody o różnych kolorach mają różne napięcia pracy: od ~ 1,5 do 3,5 V. Na wyjściach płytka Arduino, w zależności od rodzaju, oferuje napięcie 3,3 lub 5 V i trzeba je zazwyczaj obniżyć. Sposób doboru rezystora do diody łatwo znajdziemy w internecie, choćby na stronie forbot.pl, która dodatkowo oferuje świetny, darmowy kurs Arduino oraz elektroniki.
Sygnał PWM stosowany jest często do sterowania wydajnością pomp obiegowych. Pompa sterowana sygnałem PWM ma co najmniej dwa złącza: zasilanie i wejście sygnału PWM. Trzeba pamiętać, że tutaj występują dwie logiki odczytywania stopnia modulacji:

  • pierwsza, podobnie jak wspomniana dioda LED – im większe wypełnienie, tym większa modulacja, tzn. 0% wypełnienia – modulacja 0%, a 100% wypełnienia – modulacja 100%;
  • druga, odwrotna do pierwszej – im mniejsze wypełnienie, tym większa modulacja, tzn. 0% wypełnienia – modulacja 100%, 100% wypełnienia – modulacja 0%.

Ten drugi sposób modulacji jest bardziej odporny na uszkodzenia, ponieważ przerwanie połączenia PWM powoduje, że pompa zacznie pracować z wydajnością 100% zamiast stanąć. W eksploatacji takie rozwiązanie jest lepsze, ponieważ może i nie będą dotrzymane dokładne parametry pracy zestawu: źródło ciepła z pompą obiegową, ale układ jako całość będzie pracował.

Podłączenie do płytki Arduino dodatkowych akcesoriów
Oprócz odpowiedniego oprogramowania płytki z mikrokontrolerem mamy możliwość podłączenia do niej wielu akcesoriów. Poniżej omówię krótko dwa z nich.
Cyfrowy czujnik temperatury typu DS18B20. Warto zapamiętać ten symbol! Czujnik ten jest dla nas interesujący, ponieważ każdy z czujników ma swój własny, unikatowy adres MAC, dzięki czemu kilka czujników możemy równolegle podłączyć do jednego wejścia. Rozpoznawanie, z jakiego czujnika pochodzi temperatura, odbywa się właśnie na podstawie adresu MAC. Przykłady czujnika cyfrowego DS18B20 oraz jego podłączenie do płytki Arduino Uno przedstawiają rys. 3 i 4.43a
Przekaźniki. Innym dodatkowym akcesorium, jakie mamy do dyspozycji, jest przekaźnik, którym będziemy włączać i wyłączać nasze pompy i zawory. Dostępne są dwa rodzaje takich przekaźników: tradycyjny z cewką oraz półprzewodnikowy. Przekaźniki tradycyjne mają styki zwierno- rozwierne i w zależności od tego, czy do pinów sterujących jest przyłożone napięcie, zwierana jest jedna lub druga para styków. Z kolei przekaźniki półprzewodnikowe zwykle mają jedną parę styków i w zależności od przyłożenia lub braku napięcia, jest ona zwarta lub rozwarta albo odwrotnie: rozwarta i zwarta, adekwatnie do logiki sterowania zastosowanej w danym przekaźniku (przeczytamy to w specyfikacji technicznej).46

Software, czyli programowanie płytki
Mamy już płytkę i dodatkowe akcesoria, ale bez wgranego programu nasza płytka nie będzie miała „duszy” i nie będzie działać. Aby ją zaprogramować, potrzebujemy jeszcze zintegrowanego środowiska programistycznego Arduino IDE. To program, który możemy pobrać z oficjalnej strony projektu Arduino: https://www.arduino.cc/en/software. W ustawieniach można wybrać język polski.
Instalując środowisko Arduino IDE, zyskujemy dostęp (z poziomu programu) do wielu przykładowych programów, które obsługują różne dostępne akcesoria. Naszym zadaniem jest tylko (czasami „aż”) zrozumienie takiego programu i dostosowanie go do swoich potrzeb. Arduino programujemy w języku C dostosowanym do możliwości platformy. Przykład najprostszego programu, który będzie zapalał i gasił diodę, przedstawia tabela 1. Jak widać, program jest prosty, chodzi w końcu tylko o zapalanie jednej diody LED na płytce Arduino Uno. Obsługa cyfrowych czujników temperatury i jej odczyt wymaga podania adresów MAC czujników i związana jest z większą liczbą linijek kodu. Jednak niczego nie musimy robić od początku. Zarówno w internecie, jak i w naszym programie Arduino IDE możemy znaleźć przykładowe programy do wykorzystania i ewentualnej przeróbki.

Praktyka czyni mis45trza, a więc do dzieła!
Już nawet za około 100 zł możemy zakupić płytkę z mikrokontrolerem, potrzebne czujniki temperatury, płytkę przekaźników, zasilacz. Ja radzę zakupić jakiś zestaw startowy zawierający dodatkowo czujniki temperatury, rezystory, diody LED, płytkę stykową i wiele innych przydatnych elementów. A jeśli chodzi o dalsze wskazówki, to w internecie dostępnych jest dużo takich informacji, w tym kursy w języku polskim, które pozwalają rozpocząć przygodę z programowaniem mikrokontrolerów.
Podczas pisania artykułu korzystałem z informacji podanych na stronie forbot.pl. Strona jest mi dobrze znana, ponieważ korzystałem z niej budując pierwszy regulator obsługujący pompę za wymiennikiem ciepła między kotłem gazowym a otwartą instalacją. Nie mogłem wykorzystać zwykłego termostatu, bo w układzie otwartym wpięty był kocioł węglowy i to on miał priorytet pracy. Oczywiście, można było wykorzystać kilka termostatów i przekaźników – i tak wyglądał mój pierwszy regulator w tej instalacji. Jednak plątanina przewodów w środku regulatora, sprawiła, że po roku absolutnie zapomniałem, które połączenia, za co są odpowiedzialne. Regulator oparty na mikrokontrolerze jest bardziej przejrzysty, a dodatkowe możliwości – jak chociażby wyświetlanie informacji na wyświetlaczu, możliwość komunikacji Bluetooth lub WLAN czy wysyłanie danych do arkuszy Googla – skłaniają do wykonania swojego regulatora na platformie Arduino.

Artykuł stanowi kontynuację cyklu o automatyce kotłowej. Poprzednie artykuły opublikowaliśmy w „PI” 1-2/2021 i 3/2021.


 

pi