Všeobecně
Na několika stránkách této publikace byly uvedeny čelní panely
přístrojů, které se zobrazují na PC nebo hodnoty přístrojů, které
se zobrazují na webu, kam je posílá server domácí měřící ústředny.
Několik hamů, čtenářů mých článků mi poslalo hezký mail, s
přáníčkem, zda bych nepopsal alespoň jeden jednoduchý ADC
převodník, který používám. To dělám s radostí tímto článkem.
Cíle a vlastnosti zařízení
1. Vymyslet, navrhnout a simulací vyzkoušet takové zařízení cestou
z Prahy do Českých Budějovic (tj. za maximálně 2 hodiny)
2. Odladit program v simulátoru na notebooku.
3. Použít levný čip, nikoliv Raspberry nebo Arduino. To by se
samozřejmě dalo použít také.
Použité principy
1. V zařízení bude čip, který bude připojený k sériovému portu, na
kterém bude naslouchat, až přijde pokyn (zvolil jsem tři po sobě
jdoucí bajty pro jeho adresu).
2. Program v čipu bude očumovat sériový port a čekat, až přijdou
ty tři bajty.
3. Jakmile budou ty tři bajty po sobě odpovídat hlavičce
(preambuli) zapsané v čipu (použil jsem 254, 086, 086,
hexadecimálně FE, 56, 56), bude program pokračovat tak, že přečte
na dvou vstupech dvou analogově digitálních převodníků ADC dvě
hodnoty připojeného napětí. Každá hodnota je vyjádřená jedním
bajtem (použil jsem b0 a b1).
4. Tyto bajty budou odeslány jako data po sériovém portu zařízení
Elfin, které je předá přes WiFi do PC.
Program nepotřebuje dalšího komentáře a jeho fungování je zjevné z
komentovaného výpisu v basicu. Hlavní smyčka běží mezi řádky č. 5
až 19. Na řádku č. 6 program očumuje, až přijde za sebou kombinace
bajtů 254, 086, 086. Jakmile taková kombinace přijde, program
vyčte hodnoty ADC a uloží je do proměnných b0 a b1 (řádky 13 a14).
Na řádku 15 je instrukce odešle do PC přes seriovou linku po WiFi
(zařízení Elfin, popsáno jinde na mém webu). Pro zpracování
používám před bajty stejnou preambuli 254, 086, 086, aby program
na PC poznal, který ADC mu data poslal.

Hardware
Použil jsem nejlacinější z rodiny čipů PICAXE, typ 08M2.
Důvody:
1. Čip stojí v ČR asi 60 Kč
2. K programování nepotřebuji žádný programátor.
3. Vývojové prostředí (PICAXE Editor 6) je zadarmo.
4. Čip se dá naprogramovat z vývojového prostředí přes sériový port.
5. Vývojové prostředí má simulátor, ve kterém si lze právě napsaný
program vyzkoušet cestou ve vlaku.
6. Jednoduché programování PICAXE se za okamžit naučí jak děti
školou povinné, tak senioři 60+++. Jedná se o jednoduché, výrobcem
čipů pedagogicky dobře zvládnuté metody.
Použité piny

Použil jsem všechny piny, protože jsem nepotřeboval všechny tři
ADC převodníky, stačily mi dva, protože adresuji více čipů, které
jsou levné. Tímto použitím jsem schopen měřit mnoho hodnot s více
čipy. Piny na programování lze vyvést na samostatný konektor
(nepoužívám) nebo čip programovat v zařízení s paticí, převodníkem
USB na RS232 a 2 rezistory (mám takový bastl a už jsem ho popsal).
Piny pro komunikaci jsou uvedené na obrázku vpravo dole:
 |
 |
Vyzkoušení programu
Ve vláčku lze program vyzkoušet na simulátoru, který je
součástí vývojového prostředí PICAXE Editor 6. Vlevo dole na
obrazovce jsou špičky (piny) čipu. Když klikneme pravým
tlačítkem na vstupy ADC, zobrazí se nám "potenciometr", kterým
nastavíme napětí na vstupu a hodnota je ukazovaná jako
dekádické číslo 0-255 - vpravo. Nastavil jsem si na špičkách
C.1 a C.2 hodnoty 166 a 167, abych si je poznal.
Po napsání programu můžeme provést kontrolu
syntaxe. Občas se může vloudit chyba nebo nepochopíme
instrukci správně. Například, že se odesílané bajty píšou do
závorky.
|
 |
|
Program spustíme v simulátoru takto - viz obrázek vpravo.
Postup
1. Program uložíme.
2. Přepneme na záložku Simulate.
3. Klikneme na tlačítko "Run".
Program se rozběhne. Nejdřív vykoná skok do procedury
"piny_na_low". V této pproceduře se nastaví pin C.3 na low a
též, jako výstupní. Potom se program dostane k hlavní smyčce
(řádek 5, návěští main:) a začne se vykonávat. To znamená, že
se zastaví na řádku číslo 6 a začne vyčkávat, až přijde po
sériovém portu sekvence tří bajtů, v mém případě 254,086,086.
Na simulátoru musíme tuto sekvenci poslat z vestavěného
terminálu takto - viz obrázek dole.
Abyste viděli to, co já, nastavte si terminál takto:

Tj. aby ukazoval přijatá data dekadicky (as deciaml).
|
 |

Data odešleme kliknutím na "Send" a vidíme toto:

Program odeslal a terminál přijal tři bajty
preambule, podle které poznám, který čip odpověděl a dva bajty
dat, zde b0 = 166 a b1 = 167.
|
Závěr
Nemám co dodat. Program je jednoduchý, funkční a napsaný
způsobem polopaticky popsaným pro seniory a radioamatéry,
kteří potřebují zařízení rychle vyvinout, ale nemají už čas nebo
náladu učit se složitým věcem, byť z principu správným.
Vymyšlení a naprogramování je zvládnutelné
mnohem dříve, než za ty dvě plánované hodiny.
Můžeme ještě zkoušet,
napsat komentáře atd.
Zastavím se u dovednosti v přepočtu dekadických hodnot na
bajty. Ani já ji nemám a používám jednoduchý program z dob,
kdy jsem se učil programovat - vpravo. Ten funguje na
notebooku, i když nejde ve vlaku Internet. Vidíte, že
dekadické hodnotě 166 odpovídá hexadekadická A6. |
 |
Poznámky
1. Čip PICAXE 08 M2 převádí pomocé instrukce readadc
hodnotu napětí na pinu ADC na číslo. Hodnota musí být v
rozmezí od 0V do + Vcc (napájecí napětí čipu na špičce 1,
označené též +V).
2. Komu by nestačil 8 bitový převod (nabývá jen 256 hodnot),
může použít převod 10 bitový (rozsah převodníku). Pak se
nevystačí pro přenos dat s jedním bajtem, ale s jedním slovem
(doporučuji nahlédnout do manuálu).
3. Různé
detektory s logaritmickým zesilovačem (používané k měření
výkonů, příklad zde) pracují s výstupem, který lze přímo
připojit na ADC. Takto jednoduché zařízení přenese data do PC,
kde je snadno zpracujeme matematicky (přičtení offsetů,
vynásobení konstantou, provedením korekce podle kalibrační
tabulky, atd.). Takové věci uděláme v programu pro PC velmi
snadno, ale hlavně rychle. Na mikropočítači by nám to sežralo
mnohem víc času.
4. Program na sériové lince neotravuje posíláním dat. Tato
odešle na vyžádání z řídícího počítače. Jak to funguje, jsme
si popsali. |
|