Dnes vám predstavím v krátkosti hasičské stopky, respektíve časomieru, ktorú som vytváral ako fanúšik hasičského športu.
Súťažné hasičské družstvo má hádam každá dedina, či časť mesta.
Každý týždeň najmä letnom období sa konajú súťaže po dedinách a mužstvá si pripisujú cenné body, úspechy i neúspechy, o ktorých rozhodujú stotiny, či tisíciny sekundy.
Pre tento účel som vytvoril jednoduché stopky, ktoré mi do istej miery dovolili použiteľne merať čas, napríklad pri tréningoch domácich požiarnikov.
Pre celú logiku systému som využil som millis, čo je funkcia interného časovača Arduina, ktorá vracia počet milisekúnd od štartu procesora. Vieme teda merať čas na 3 desatinné miesta (1000 ms = 1 sekunda). Presnosť vieme teda určiť na 1 tisícinu (obrazne povedané
).
Prostredníctvom tejto funkcie vieme teda merať čas. Potrebujeme nejaký prvotný impulz - niečo, čím si odmeriame štartovací čas a spustíme celú logiku systému. Použil som teda fyzické tlačidlo, ktoré je nutné manuálne stlačiť. Tento čas sa uloží a časy sa začnú počítať od tohto momentu. Refresh-rate je nastavený na 10ms, i keď do displeja by bolo možné dáta posielať každú milisekundu, čo by znamenalo 1000Hz refreshrate, ale to by samozrejme displej nezvládol spracovať a text na ňom by pripomínal rozsypaný čaj. Arduino zvláda posielať dáta aj v milisekundovom intervale vďaka vysokorýchlostnej zbernici, ktorou je prepojené s LCD znakovým displejom. Sú to údaje o veľkosti len pár bajtov.
(Programové počítanie času):
V programe bežia 2 podprogramy, jeden pre ľavý, druhý pre pravý prúd, kde sa skúma, či bol čas zastavený a v premenných sa nachádzajú jednotlivé údaje (minúty, sekundy, desatiny, stotiny, tisíciny), tie sa odosielajú na displej.
(Odosielané dáta na displej do riadku - pre jeden z útokov)
Pre impulz spadnutého terča som využil kontakt, ktorý zopne terč pre spadnutí. Rovnako pre oba terče. Čas sa zastaví prakticky okamžite ( ak zanedbáme oneskorenie na vedení a pod.).
V prípade, že mužstvo zle odštartuje s neplatným pokusom, je možné stopky ihneď vynulovať druhým tlačidlom a ihneď ich pripraviť na štart. Funkčnosť je veľmi jednoduchá.
Čo teda po technickej (hardvérovej) stránke potrebujeme k projektu?Arduino, alebo samostatný AtMega čip
LCD displej 16x2 alebo 20x4 s I2C prevodníkom
Aby som minimalizoval použité elektrotechnické súčiastky, využil som interné pullup rezistory Arduina, prostredníctvom ktorých je možné spínať kontakt proti zemi a jednoducho zaznamenať zmenu, pin je v stave active-high. Pri zapojení s rezistorom sa používa 10kohm rezistor, ak sa kontakt spína proti 5V RAW pinu Arduina.
Prečo som na začiatku rozprával o obraznej presnosti na 1 tisícinu?Takmer každý, kto si plánuje kúpiť Arduino pozerá na cenu. Dať 30€ za originálne Arduino, alebo 3€ za čínsky klon, odpoveď je myslím jasná..
Čínske klony sú hardvérovo totožné s originálmi. Je to ale istý rozdiel a to v kvalite oscilátora, ktorý dáva Arduinu takt. V originálnych Arduinách sa využíva presný 16MHz oscilátor. Pri klonoch sa používa rovnaký, ale nie až taký presný, dá sa predstaviť ako 15.9998MHz.
Z toho vyplýva, že sa po určitom čase presnosť zmenšuje na tisícinách, pri dlhšom meraní i na stotinách, desatinách, sekundách. Ďalší útlm predstavuje aj vedenie, po ktorom signály prichádzajú.
Arduino stopky nikdy nenahradia certifikovanú časomieru, ktorá sa používa pre hasičské športy! Schéma zapojenia pre hasičské stopkyCelý systém je možné napájať i na batérie či powerbanku, jeho celkový odber je do 60mA pri 5V.
Viac o podobných projektoch môžete nájsť aj na mojich stránkach:
https://arduino.php5.sk/hasicske-stopky.php