blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Časová kontrola vodárne - stavový automat - Arduino
pridal deadawp 29.7. 2020 o 23:26



Dnešný projekt sa zaujíma o časovú kontrolu behu domácej vodárne - Darlingu, ktorý je využívaný pre prečerpávanie vody zo studne do zásobníka. Programová implementácia spočíva vo využití stavového automatu, ktorý je vhodný pre podobné aplikácie. Stavový automat má konečný počet stavov, ktoré môžu v aplikácii nastať. V našom prípade každý stav odpovedá určitej fáze čerpadla a taktiež (ne)reaguje na určité vstupy systému v každom zo stavov.

Princíp funkčnosti, ktorý chceme dosiahnuť:

  • Po zopnutí tlakového spínača na vodárni je z jej spínacieho kontaktu privedený 5V signál na vývod Arduina, ktoré vzápätí zopne relé modul pripojený na stykač čerpadla (resp. je stykač nahradený spínaním napájania), rozsvieti sa zelená LED dióda, že beží čerpadlo.
  • Ak sa tlakový spínač rozpojí do určitého času (2 minúty), je všetko v poriadku, zelená LED zhasne, relé sa rozpojí, čerpadlo sa vypne a čaká sa na ďalšie zopnutie tlakového spínača.
  • V prípade, že by čerpadlo bežalo viac ako 2 minúty v kuse, relé sa vypne, rozsvieti sa červená (STOP) LED dióda a čerpadlo bez fyzického reštartu Arduina by už nebolo možné zapnúť - PORUCHA, ochrana pred preťažením a poškodením vodárne

Stavový automat vytvoríme pre Arduino vetvením - využitím prepínača switch, ktorý obsahuje všetky stavy - režimy, ktoré môžu v systéme nastať:

  • Režim 0 - čaká sa na impulz log 1 --> 5V na vstupe v nekonečnej slučke
  • Režim 1 - každú sekundu sa vykonáva meranie na vstupe, ak sa vykoná 120+ meraní log 1 za sebou, systém skočí do Režimu 2. Ak počas týchto 120 cyklov (120 sekúnd) nameria kedykoľvek log 0 --> skočí do Režimu 0
  • Režim 2 (Default v switch case) - Arduino v tomto režime čaká na hardvérový reset cez tlačidlo RESET na doske, nemožno z tohto režimu vyskočiť, je to akoby while(true), cyklus tam ostane navždy.

Hardvér pre projekt:

  • Mikrokontróler - Arduino Nano (Uno, AtMega328P)/ AtTiny85
  • 2x LED diódy (červená pre signalizáciu poruchy, zelená pre signalizáciu bežiacej vodárne)
  • 2x predradné rezistory 220 ohm až 1 kohm.
  • Elektromagnetické relé SRD-5VDC-SL-C - 10A pri 230V (2300W max) - spína v logickej 0

Programové riešenie jednotlivých režimov:

Režim 0 - režim načítava v loope funkciou digitalRead() hodnotu z digitálneho vývodu, na ktorý je pripojený kontakt z tlakového spínača Darlingu. V prípade zaznamenania hodnoty HIGH (3.3V+) na vývode, je program posunutý do ďalšieho stavu - režimu 1, uloží sa počet milisekúnd od štartu procesora z funkcie millis() do globálnej premennej, rozsvieti sa zelená LED dióda, čerpadlo beží.

Režim 1 - na základe získaného času z funkcie millis() je možné vykonávať časové operácie a to meranie digitálneho vývodu každých 1000ms. Každé pripočítavanie a zistenie hodnoty HIGH pripočítava aj inkrementátor, ktorý overuje počet vykonaných meraní. Nakoľko sme limitovaný behom čerpadla na maximálne 2 minúty, t.j. 120 sekúnd, počítadlo nám počíta tieto sekundy meraním logickej 1 na príslušnom vývode. 

V prípade, že je hodnota počítadla menšia ako 120 a stav digitálneho vývodu prejde do LOW (tlakový spínač sa uvolní), počítadlo sa vynuluje, relé rozopne, LED zhasne, režim sa nastaví na 0, na čo okamžite zareaguje automat a program pokračuje v režime 0. V prípade, že počítadlo (inkrementované každých 1000ms pri odmeraní hodnoty HIGH na digitálnom vstupe) presiahlo hodnotu 120, program prechádza na režim 2, rozsvieti sa červená LED dióda - PORUCHA, rozopne sa relé na stykač, zhasne zelená LED dióda.

Režim 2 - Nekonečná slučka (beží v loope, neobsahuje žiadny vykonávateľný kód), nereaguje na vstupy, výstupy, čaká sa na fyzický reštart Arduina tlačidlom.

Schéma zapojenia:

Program môže byť rozšírený o watchdog, ktorý v prípade zaseknutia Arduina vykoná jeho reštart. 
Viac projektov spojených s mikrokontrolérmi môžete nájsť na: http://arduino.clanweb.eu/. Existujúcu programovú implementáciu je možné v zjednodušenom zapojení nájsť aj v online simulátore TinkerCAD: https://www.tinkercad.com/things/9AVCZolXyw4. Zdrojový kód (.ino) pre Arduino dostupný samostatne aj na: https://gist.github.com/martinius96/37b9512934daa4591729e506307e3437



Prístupov 9324
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDUJETE
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
GTA IV fix spustenia na Windowse 10 N
[ 24.3.2024] (príspevkov 0)
RFID DOMINATOR licencia na predaj
[ 4.1.2024] (príspevkov 0)
ATtiny85 Digispark - programovanie, použ...
[ 28.12.2023] (príspevkov 0)
Prečo by som si už nekúpil ESPD-35 od La...
[ 26.12.2023] (príspevkov 0)
ATtiny85 - programovanie Arduino as ISP
[ 19.12.2023] (príspevkov 0)
MasterTherm - webscraper ESP32
[ 25.11.2023] (príspevkov 0)
RFID DOMINATOR 2.0 - rozdiely s 1.0
[ 15.11.2023] (príspevkov 0)
Rozšírená realita (AR) - IoT dashboard
[ 29.10.2023] (príspevkov 0)
Solárne napájanie ESP32 - WiFi / LoRaWAN
[ 15.9.2023] (príspevkov 0)
BLE Beacon na ESP32 - vysielanie vlastný...
[ 22.8.2023] (príspevkov 0)