Počítadlo otáčok so zastavením motora
![](https://392a561660.cbaul-cdnwnd.com/6b24fd06728cdbacb72a3228f095e765/200000389-11ec211ec5/otacky.png?ph=392a561660)
Nebudem v článku opisovať funkčnosť IR senzora prekážok KY-032, spôsob merania, či deboucing, nakoľko boli tieto pojmy a technické špecifikácie vysvetlené v pôvodnom článku pre IR otáčkomer (viz. prvý odkaz hore). Programová implementácia počíta s využitím spínacieho (nie rozpínacieho) tlačidla zapojeného v režime INPUT_PULLUP, teda pri stlačení je spínané proti zemi. Relé je ovládané cez GPIO v režime HIGH pre zapnutie motora a v režime LOW pre vypnutie motora. V prípade, že využívate relé s invertovanou logikou, t.j. active-LOW, je nutné v programe zameniť vo funkcii digitalWrite() HIGH za LOW a opačne pre ovládanie relé.
![](https://392a561660.cbaul-cdnwnd.com/6b24fd06728cdbacb72a3228f095e765/200000391-ae470ae473/otacky2.png?ph=392a561660)
IR senzor je pripojený k vývodu D2 Arduina, ktoré podporuje prerušenie (interrupt). Všetky premenné, ktoré bude obsluhovať interrupt rutina sú typu volatile, aby bolo garantované, že budú obslúžené. Využíva sa premenná int rev pre počet zaznamenaných otáčok (prechodov) a unsigned long cas_rutina, ktorá uchováva čas posledného pulzu. V podmienke, kde sa porovnáva millis() a cas_rutina sa využíva interval 15, čo je rozlíšenie 15 ms pri zázname následujúceho pulzu. Rutina prerušenia musí byť napísaná efektívne a dĺžkou čo najkratšia.
Pri debouncingu o veľkosti 15 ms môžeme detekovať otáčky spoľahlivo s minimálnou chybovosťou až do cca 4000/min. Pri využití aktuálneho programu s motorom s vyšším počtom otáčok by dochádzalo k nedetekcii otáčok (boli by ignorované). V prípade nižšieho debouncingu, napr 5 ms môžeme detegovať otáčky až do cca 12000/min.
![](https://392a561660.cbaul-cdnwnd.com/6b24fd06728cdbacb72a3228f095e765/200000393-3a9363a939/otacky3.png?ph=392a561660)
Debounce využíva aj samotné tlačidlo pre spustenie motora. Využíva sa debounce o dĺžke 50 ms. Pri fyzickom kontakte, ktoré tlačidlo využíva nastáva výraznejší zákmit v porovnaní s IR. Samotná logika stlačenia tlačidla reaguje na stlačenie a pustenie tlačidla pre spustenie motora cez relé.
Programová implementácia je dostupná na Pastebin: https://pastebin.com/XyTsjdqu