V súčasnosti sa na riadenie a automatizáciu procesov vo veľkej ­miere využívajú programovateľné riadiace automaty (PLC), ktorých výhodou je, že sú modulárne a univerzálne. Projektant si môže podľa potreby zvoliť množstvo vstupov, výstupov, komunikačných a iných modulov tak, aby bol riadiaci systém čo najviac využitý. Základom každého PLC je mikropočítač s ošetrenými vstupmi a výstupmi tak, aby dokázal spracovať informácie z okolia a po ich spracovaní vhodne pôsobil na riadený systém. Tieto vlastnosti má aj mikrokontrolér Arduino – je modulárnym, má ošetrené vstupy a výstupy a dokáže komunikovať s inými zariadenia toho istého, ale aj iného typu.

Na automatizáciu malých systémov je Arduino vhodný najmä pre široké spektrum modulov (shields), ktoré sa dajú k základnému modulu Arduina jednoducho pripojiť. Projekt Arduina vznikol v roku 2005 v meste Ivrea v Taliansku. Jeho cieľom bolo vytvoriť jednoduchú prototypovaciu platformu pre študentov, ktorá by umožnila rýchly vývoj a jednoduché ­používanie. Množstvo doteraz realizovaných aplikácií v oblasti malej ­automatizácie dokazuje životaschopnosť projektu a vhodnosť systému na jeho využitie v praxi a priemysle.

Opis systému Arduino

Arduino je opensource mikrokontrolér, ktorého základom je ­mikroprocesor ATMega od firmy Atmel [1], [2]. Procesor je osadený na doske, ktorá sa programuje priamo z počítača cez USB rozhranie bez použitia externého programátora. Na doske Arduina beží boot loader, ktorý nahraný program prekopíruje do operačnej pamäte a následne ho spustí. Boot loader zabezpečuje sériovú komunikáciu a programovanie procesora. Práve použitie boot loadera nám dovoľuje vyhnúť sa používaniu externého programátora. Na doske Arduina sa nachádzajú digitálne a analógové vstupy a ­výstupy, ktoré sú prístupné cez precízne pätice, na ktoré sa dajú pripojiť ďalšie ­obvody, nazývané shields (moduly). Na doske sa ­ďalej nachádza resetovacie tlačidlo, konektor na ICSP programovanie, napájací konektor a ­obvod sprostredkovávajúci komunikáciu po USB; k dispozícii je aj softvérovo riadený PWM výstup na riadenie motorov.

Mikrokontrolér je pripojený k počítaču cez USB konektor, avšak programovanie prebieha na počítači cez simulované sériové rozhranie. Na pripojenie prídavných modulov (shields) sa využívajú ­vstupnovýstupné piny na základnej doske. Zobrazenie Arduina s prídavnými modulmi je uvedené na obr. 1, kde základ tvorí modul Arduino Uno, na ktorom je SD shield a ethernetový shield. Arduino Uno obsahuje 14 digitálnych a šesť analógových pinov; jadrom je procesor ATMega328 s 32 kB flash pamäte, pričom 0,5 kB je ­vyhradených pre boot loader. Každý pin pracuje s 5 V a dokáže ­dodať prúd maximálne 40 mA. Na ošetrenie vstupov a výstupov obsahuje každý pin vnútorný pull-up rezistor, pričom niektoré piny majú svoju špecifické funkcie (PWM, SPI, vonkajšie prerušenie atď.).

Príklad niektorých pinov so špecifickými vlastnosťami (podrobný prehľad je uvedený v [2]):

  • Sériová komunikácia: pin 0 (RX) a pin 1 (TX) môžeme použiť na príjem alebo vysielanie sériových dát. Tieto piny sú priamo prepojene s odpovedajúcimi pinmi na procesore.
  • Externé prerušenie: pin 2 a pin 3. Tieto piny môžu byť nastavené ako prerušenie programu pri preklopení na logickú jednotkunulu. Prerušenie je v programe volané príkazom attachInterrupt().
  • Výstup s PWM: piny 3, 5, 6, 9, 10 a 11 poskytujú 8-bitové rozlíšenie výstupu. Na PWM moduláciu sa využíva príkaz analogWrite().
  • LED: 13. Na doske je na pozícii 13 zabudovaná LED, ktorú možno využiť ako výstup.

Arduino Uno má šesť analógových výstupov, pričom každý má rozlíšenie 10 bitov. Maximálne vstupné napätie je v rozsahu od 0 do 5 V, ktoré zodpovedá v programe rozsahu od 0 do 1 024. Nevýhodou Arduina môže byť zníženie počtu vstupov a výstupov pri pripojení iného shieldu. Podľa obr. 1 vidno, že na Arduino Uno sú pripojené ďalšie dva shieldy, to však neznamená, že sme ­prišli o všetky vstupyvýstupy. Každý shield využíva na komunikáciu s Arduinom niekoľko pinov (ethernet shield – štyri piny, SD shield – jeden pin) a zvyšné piny sú prístupné na najvyššie pripojenom shielde. Ak by predsa len počet vstupov a výstupov nestačil, táto nevýhoda sa dá ošetriť použitím iného typu Arduina.

Od výrobcu je k dispozícii napr. Arduino Mega, ktorý disponuje až 54 pinmi (pričom 14 z nich možno použiť ako PWM výstupy) s digitálnymi vstupmivýstupmi a 16 analógovými vstupno-výstupnými pinmi, pričom naň možno pripojiť akýkoľvek shield. Pritom ešte ostáva k dispozícii ­minimálne 30 digitálnych a 10 analógových pinov. Doska Arduino Mega s pripojeným eternetovým shieldom je zobrazená na obr. 2. Jadrom je procesor ATmega2560 s 256 kB flash pamäte, pričom 8 kB je vyhradených pre boot loader. Obr. 2 Arduino Mega Systém Arduino sa programuje prostredníctvom jednoduchého ­vývojového prostredia, kde sa zdrojový kód píše v jazyku C doplnenom o množstvo knižníc a príkazov na programovanie prídavných modulov (shields).

Príkazy a knižnice zabezpečujú omnoho jednoduchší spôsob riadenia vstupov a výstupov (one wire, LCD display, PWM výstup, a i.) a iných modulov (ethernet shield, ­touch display). Z vývojového prostredia dokážeme komunikovať s počítačom cez ­sériovú linku, čo sa často používa pri odlaďovaní programu. USB rozhranie na doske je osadené prúdovou ochranou počítača pripojeného k Arduinu. Ak by prúd na USB rozhraní prekročil 500 mA, ochrana automaticky preruší spojenie s PC.

Opis programovania a knižníc

Systém Arduino vykonáva nahraný program cyklicky. Dĺžka jedného cyklu závisí od veľkosti programu a od typu použitých príkazov. Pred nahratím programu treba program skompilovať. Pri kompilácii program hľadá možné chyby a hlási, či bola kompilácia programu úspešná ak by nebola, tak vo výslednej správe program zahlási počet chýb a miesto ich výskytu. Na obr. 3 je zobrazené programovacie prostredie. Zobrazený program slúži na ovládanie výstupov a spracovanie vstupov pre Arduino Uno. V ďalšom texte uvedieme často používané knižnice a ich stručný opis.

Knižnica na prácu s displejom LCD (LiquidCrystal.h) umožňuje použitie LCD založeného na chipsete Hitachi HD44780. Príkazmi ako write(), print(),clear(), setCursor() dokážeme ľahko zapisovať na displeji a pracovať s ním. Na zobrazenie bitmapového obrázku na LCD máme k dispozícii inštrukciu LCDBitmap.h. Okrem klasického LCD displeja možno použiť aj shield s LCD touch displejom. Takýto shield väčšinou obsahuje aj slot na SD kartu. Použitie takéhoto shieldu vyžaduje špeciálnu knižnicu Utft.h. Knižnica na komunikáciu po one wire zbernici – OneWire.h – umožňuje použitie zariadení, ako sú snímače teploty, niektoré typy LCD, počítadlá alebo chip na rozšírenie digitálnych výstupov (DS2408).

Pritom na jednu zbernicu môže byť napojených aj niekoľko zariadení naraz. Najpopulárnejšími zariadeniami komunikujúcimi po one wire zbernici sa stali snímače teploty typu DS1820. Použitím tejto zbernice sa informácia prenáša po jednom vedení. Samozrejme, treba ešte zabezpečiť napájanie zariadenia. Na pripojenie k internetu slúži knižnica Ethernet.h a potrebujeme na to ešte aj ethernet shield, ktorý môžeme jednoducho riadiť ­pomocou príkazov z tejto knižnice. Shield sa pripája do internetovej siete cez konektor RJ45. Na doske sa nachádza aj slot na SD kartu, kde môžeme uložiť dáta určené na zdieľanie po sieti. Ethernet shield je kompatibilný s Arduinom Uno a Mega.

Na prácu s SD kartou je potrebná SD library. Shield je navrhnutý tak, že dokáže odoberať napájacie napätie z ethernetového kábla, čo dovoľuje využiť napájacie napätie na pripojenie iného shieldu. Napr. ak na dosku Arduino Uno pripojíme ethernet shield tak, ako je to na obr. 1 alebo 2, potom možno na ethernet shield pripojiť ešte ďalší modul. Arduino využíva na komunikáciu s ethernet shieldom piny č. 4, 10, 11, 12 a 13. Znamená to, že ešte stále ostávajú voľné piny na pripojenie vstupovvýstupov. Knižnica na prácu s PID regulátorom je označená PID.h. Existuje mnoho možností, ako napísať algoritmus PID regulátora. Použitím tejto knižnice však možno ušetriť množstvo času tým, že využijeme vopred naprogramovaný algoritmus, ktorý si nastavímeprispôsobíme podľa potreby.

Príkazom PID(&Input,&Output, &Setpoint, Kp, Ki, Kd, Direction) možno vytvoriť regulátor s nadefinovaným ­vstupomvýstupom a s nastavenými parametrami pre P, I a D zložku. Knižnica na riadenie krokových motorov CustomStepper.h obsahuje súbor jednoduchých príkazov na riadenie motora. Krokovému ­motoru môžeme zadať požadované otáčky, počet otočení, čas otáčania, prípadne uhol, o ktorý sa má otočiť rotor motora. Okrem uvedených knižníc existujú ešte ďalšie, ktoré sú voľné ­dostupné na stránke www.arduino.cc. Knižnicu si môže používateľ vytvoriť aj sám, ale to už vyžaduje zručnosti vyššieho programovania a podrobné znalosti systému Arduino.

Simulačný softvér

Pri programovaní Arduina nemožno nahraný program krokovať; ­napísaný program sa po kompilácii nahrá do procesora a až tak možno zistiť, či pracuje správne. Pri odlaďovaní programu je jediná spätná väzba prostredníctvom displeja alebo cez sériovú komunikáciu s PC, v programovacom prostredí možno sledovať správy prichádzajúce po sériovej linke. K dispozícii je aj simulačný ­softvér Simulator for Arduino, kde nahraný program možno krokovať, ­nastavovať vstupy a sledovať výstupy; ak použijeme knižnicu pre LCD displej, program dokáže simulovať aj plochu displeja. Príklad vzhľadu simulačného softvéru na obrazovke je na obr. 4. Využitie systému Arduino v praxi

Systém Arduino môžeme použiť všade tam, kde potrebujeme riadiť nejaký proces s malým počtom vstupov a výstupov. S dostupnými shieldmi a knižnicami možno zvládnuť naprogramovať akýkoľvek zložitý algoritmus a riadiť takmer akýkoľvek zložitý (ale nie rozsiahly) proces. Systém Arduino je na rozdiel od modulárneho PLC ­obmedzený počtom vstupov a výstupov. Arduino však nemôžeme použiť na riadenie a komunikáciu s výkonovými polovodičovými meničmi (napr. na riadenie pohonov), a to hlavne z dôvodu, že ­nepodporuje komunikáciu po zbernici typu PROFIBUS. Systém Arduino je vhodný na riadenie jednoúčelových výrobných liniek v priemysle, ako sú plničky fliaš, podávače, dopravníky atď.

Využitím wifi shieldu alebo 433 MHz komunikačných modulov ­môžeme diaľkovo ovládať ľubovoľné zariadenie, napr. brány, alarmy, bezdrôtové vypínače, bezdrôtový termostat. Zaujímavou aplikáciou riadenia je použitie mobilného telefónu, prípadne iného ­zariadenia so systémom Android na komunikáciu s Arduinom s wifi shieldom, napríklad pri ovládaní vstupnej brány do domu. Obvykle sa na ­ovládanie brány používa diaľkový ovládač, ak však máme v ­jednom dome (prípadne v jednom komplexe) viacero takýchto brán, použitie telefónu namiesto viacerých diaľkových ovládaní zjednoduší ovládanie a ušetrí čas.

Záver

Projekt Arduino bol už od začiatku voľne dostupný (open-source) všetkým používateľom, ktorí potrebujú rýchlo realizovať nenáročné projekty malej automatizácie. Dokumentácia a referenčná príručka jazyka a externých knižníc sa väčšinou vydáva pod licenciou Creative Comons, vďaka čomu sú k dispozícii všetky zdrojové súbory a dodržiava sa určitá kompatibilita, ktorá zaisťuje, že pre systém sú voľne dostupné ovládače na väčšinu platforiem. Arduino je cenovo dostupný a možno si ho zakúpiť s akýmkoľvek shieldom v internetovom obchode. Pre svoje univerzálne uplatnenie je Arduino vyhľadávaným systémom, nakoľko možnosti jeho využitia sú rozsiahle. Podrobné informácie o systéme Arduino možno získať z webovej stránky produktu [2], kde postupne pribúdajú aj príspevky kde sa riešia problémy používateľov, respektíve [3].

Poďakovanie

Táto práca bola podporená Kultúrnou a edukačnou grantovou agentúrou Ministerstva školstva, vedy, výskumu a športu Slovenskej ­republiky projektom č. 042TUKE-42012 Inovácia výučby riadenia mechatronických systémov.

Literatúra

[1] Arduino, http://en.wikipedia.org/wiki/Arduino
[2] Webová stránka systému Aduino, http://www.Arduino.cc
[3] Stránka s knižnicami pre shield-y, http://www.henningkarlsen.com/electronics/projects.php
[4] Artuino Community, http://arduino.org/

 

Ing. Daniel Magura

doc. Ing. Viliam Fedák, PhD.

Technická univerzita v Košiciach
Fakulta elektrotechniky a informatiky
Katedra elektrotechniky a mechatroniky
daniel.magura@tuke.sk
viliam.fedak@tuke.sk