Využití kalkulačky nebo cyklocomputeru jako displeje

Někdy se vyskytne potřeba postupně načítat impulzy pomalu generované mikrokontrolérem a zobrazit výsledek na displeji nebo měřit nízkou frekvenci generovaných pulzů. V takovém případě lze využít i jednoduché kalkulačky či cyklokomputeru místo displeje a dokonce stačí i jediný propojovací signálový vodič.

Naprosto stačí kalkulačka, která umí základní numerické operace, dokonce se bude upravovat snadněji, má menší pole tlačítek. Nejprve vyzkoušíme, jak daná kalkulačka pracuje. Zadáme „0+1=“ a když se objeví výsledek, znovu „= = =“. Pokud se číslo na displeji postupně zvyšovat o 1, máme vyhráno. Můžeme zkusit i zadat jen „1+++++“, to také někdy funguje. Když známe tlačítko, jehož opakovaným stiskem docílíme přičítání jedničky, upravíme ho, aby ho místo nás „stisknul“ mikrokontrolér.

DSCN5574b

Otevřeme kalkulačku a vyvedeme dva vodiče od příslušného tlačítka ven. Ve většině případů lze ke spínání tlačítka použít tranzistor nebo lépe optický spojovací člen, ale je nutné předem zjistit, který vývod je kladný, a který záporný. Kalkulačka má vždy samostatné napájení. Sázkou na jistotu je spínat tlačítko jazýčkovým relé (jazýčkovým kontaktem), nejlépe v DIL provedení, to funguje velmi rychle (spíná i rozpíná v rádu jednotek ms) a zcela izoluje kalkulačku od obvodů s mikrokontrolérem.

DSCN5584b

Sepnutí tlačítka musí trvat určitou dobu, kalkulačky jsou pomalé a nereagují hned. Každé by měl stačit stisk po dobu 0,1s, pak můžeme postupně čas zkracovat, až najdeme mez. Posíláme-li na příslušný výstup pulzy, kalkulačka je průběžně sčítá a výsledek zobrazuje. Odstartování nového cyklu počítání vyžaduje ručně přes klávesnici vynulovat displej (tlačítko „C“) a zadat jedničku (nebo 0+1).

kalkulacka

Výhodou je, že můžeme vlastně zadat jakékoli číslo, které se následně přičítá, takže třeba 0,015625 (tj. 1/64) pro jednosměrný krokový motor, který má 64 poloh na otáčku, údaj pak odpovídá reálnému počtu otáček. Způsob lze i vylepšit a vyzkoušet, zda opakovaný stisk tlačítka „-“ odečítá zadanou konstantu, pak ovládáním dalšího tlačítka získáme možnost údaj zvyšovat i snižovat. Nevýhodou je, že kalkulačka reaguje jen omezenou rychlostí, a tak přicházející pulzy nesmí být příliš rychlé, jinak jí „utečou“.

IMGP5020b

Cyklocomputer se hodí v jiném případě. Jako rychloměr v principu měří frekvenci přicházejících pulzů (fakticky spíš periodu) a může průběžně zobrazovat analogovou hodnotu. Obvykle zvládne rozsah nejméně do 100 km/h a zobrazuje s rozlišením na 0,1 km/h. Současně ale také počítá ujetou dráhu, v podstatě načítá přicházející pulzy. Kromě toho dělá i další využitelné věci, měří čas jízdy (doby, kdy přicházejí pulzy) a průměrnou rychlost. Dá se toto využít? Záleží na aplikaci.

Největší problém využití cyklocomputeru je mechanický, udělat k němu redukci (stojánek), která dovolí napojit se na jeho kontakty, ty jsou obvykle na spodní straně a odpružené. Chceme-li použít cyklocomputer včetně originálního uchycení, je situace jednodušší, přerušíme vodič k sondě a napojíme se na něj. Sonda není nic jiného než magnetický jazýčkový kontakt spínaný magnetem upevněným na kole. Změříme na přívodu od cyklocomputeru napětí, kladné napětí budeme považovat za signál, to druhé (často oplet vodiče) prohlásíme za zem. Tyto dva vodiče budeme spínat tranzistorem, to je vše z hlediska propojení.

cyklo

Doba sepnutí může být dost krátká, stačí kolem 5 ms, musí se vyzkoušet pro konkrétní výrobek. Cyklocomputer má nastavitelnou převodní konstantu, která jej přizpůsobí různému průměru kola. Buď k seřízení použijeme tuto konstantu, nebo upravíme rozsah programem. Můžeme vyjít třeba z toho, že zobrazení rychlosti 100,0 km/h má odpovídat frekvenci 10 Hz. 100 km/h = 27,777 m/s, takže nastavíme délku obvodu kola na 2777 mm. Chce-li cyklocomputer průměr kola a ne jeho obvod, spočteme ho: 2777,77 / Π = 884,2 mm.

Nyní musíme dostat na výstup mikrokontroléru pulzy v rozsahu 0 až 10 Hz (zobrazení čísla 0 až 100). V praxi cyklocomputer nebude měřit velmi malé rychlosti, menší než asi 1 km/h (pulzy 0,1 Hz) nevezme žádný a některé neberou ani pulzy pod 0,5 Hz (5 km/h). Při generování programem se bude uplatňovat i doba chodu programu a vzniknou mírné nelinearity. Když to nevadí, o to to bude jednodušší.

Ukážeme si jako příklad kompenzace zobrazení hodnoty z paměti B0 pomocí PICAXE 08M2, výstup je na pinu 2.

REM výstup proměnné b0 na cyklocomputer (pin2)
b0=40   ;zadání hodnoty proměnné (6 až 100)
high ;výchozí úroveň
do
select b0
case 50 to 100 w1=10000/b0*100720 setfreq m4 pulsout 2,w1   setfreq m32
case 25 to 49 w1=10000/b0* 50380  setfreq m2 pulsout 2,w1   setfreq m32
case 12 to 24 w1=10000/b0* 25250  setfreq m1 pulsout 2,w1   setfreq m32
case  6 to 11 w1=10416/b0* 12150  setfreq k500 pulsout 2,w1 setfreq m32
endselect
pause 30 ;prodloužení pulzu pro cyklocomputer
loop

Způsob generování pulzů si vyžaduje vysvětlení. Zadáváme rychlost, tedy frekvenci, ale pulzy musíme generovat jako časový úsek, proto je třeba vytvořit převrácenou hodnotu respektive dělit. Potřebně přesné dělení nemáme k dispozici. Abychom dosáhli dobrého rozlišení, pomůžeme si trikem. Rozdělíme interval na více intervalů, sousední mají poměr velikosti přibližně 1:2. V rámci intervalu se hodnota pro generování prodlevy mění zhruba od 20000 do 10000, to udrží přijatelnou přesnost. Do výpočtu je nakonec zahrnuta korekce (odečítané číslo), která zkracuje periodu právě o takový čas, jaký trvá běh programu mimo příkaz pulsout. Pro intervaly, v nichž se zpracovává menší číslo, je pak použita změna hodinového kmitočtu pro příkaz pulsout, tím se zpomalí.

Je jasné, že podobný systém je dost složitý a použitelný jen když běh vlastního výkonného programu je velmi krátký, drtivá většina času se spotřebuje na odměření periody výstupního signálu. Nabízí se generovat pulzy na pozadí obsluhou PWM.

U PICAXE je potíž v tom, že při základním kmitočtu hodin (4 MHz) je nejpomalejší perioda PWM daná vzorcem (255+1)*4*0,25 [μs] = 256 [μs], to odpovídá 3900Hz, skoro 400x víc, než co cyklocomputer zvládne. Nepomůže ani snížení hodinové frekvence na 31kHz (dostaneme asi 31 Hz), takové zpomalení by stejně mikrokontrolér prakticky vyřadilo. Jedinou možnou cestou je výstupní signál PWM vydělit vnější děličkou 512 a následně aktivní pulz monostabilním klopným obvodem. To už ale naprosto ztrácí půvab jednoduchosti.

Využití cyklocomputeru má smysl pouze ve velmi speciálních případech spolu s využitím jeho doplňkových funkcí, i tak ale zůstává spíš vhodné pro konstrukce bez mikrokontroléru, v nichž je měřená veličina přímo (lineárně) převáděna na nízký kmitočet jednotek Hz (měřiče průtoku a množství proteklé kapaliny, měření proudu a výpočet náboje respektive kapacity, náhrada registračních hodin doby chodu přístroje a podobně).