Analógové vstupy čipu PICAXE a univerzálne dosky pre tento mikrokontrolér

Mikrokontroléry PICAXE sú veľmi obľúbené, pretože aj začiatočník ich vie použiť priamo, bez vývojovej dosky, takže sa hodia do miniatúrnych konštrukcií, modelov, robotov a podobne. Dajú sa jednoducho programovať v jazyku BASIC a program sa z PC do čipu prenáša pomocou sériového rozhrania cez jednoduchý káblik zo sériového portu, alebo portu USB cez prevodník.

Príklady sú vo videu

Aj pre čipy PICAXE sú k dispozícii univerzálne dosky umožňujúce priame pripojenie senzorov, či servomotorov, prípadne špeciálne dosky na ovládanie krokových, či jednosmerných motorov a podobne. Skôr, než sa začneme venovať spracovaniu analógových veličín ako inšpiráciu predstavíme niekoľko jednoduchých dosiek, s týmto čipom, ktoré sú k dispozícii na e-shope a budeme ich používať aj v ďalších dieloch seriálu.

Všetky dosky majú stabilizátor napätia 5V, takže sa dajú napájať jednosmerným napätím +8 až +15 V. Pripomíname, že rozsah napájacieho napätia pre PICAXE je 1,8 – 5 V. Ak napájate PICAXE napätím 3,3 V je zlučiteľný s 3,3 V logikou. Pri napájacom napätí 5 V je zasa kompatibilný z TTL logikou a to je aj prípad dosiek predstavených v tomto článku.

Napájací zdroj je chránený vratnou nadprúdovou poistkou a ochrannou diódou proti preťaženiu a opačnej polarite vstupného napätia. Ak je napájacie napätie v poriadku, rozsvieti sa po jeho pripojení zelená indikačná LED. Ochrana proti prepólovaniu napájacieho napätia je totiž v prípade PICAXE veľmi dôležitá. Mikrokontroléry PICAXE sú vlastne čipy PIC vyrábané firmou Microchip, do ktorých bol vložený špeciálny softvér umožňujúci zaviesť váš program do mikrokontroléra a podpora funkcií súvisiacich s hardvérom. Tento softvér nesmiete prepísať, inak by ste z PICAXE mali obyčajný PIC čip. Tento špeciálny softvér sa vymaže aj v prípade ak prekročíte hornú hranicu maximálneho napájacieho napätie približne 5.5 V alebo napájacie napätie prepólujete. Začneme univerzálnymi doskami:

AXEboard08

Univerzálna doska AXEboard08 je určená pre čip PICAXE 08M2. Doska má vyvedené všetky použiteľné piny nikrokontroléra a má aj konektor na káblik, ktorým sa PICAXE programuje cez sériové rozhranie. Na moderných počítačoch a notebookoch, ktoré nemajú sériové rozhranie je potrebné použiť dostupný a lacný prevodník z USB na sériový port.

Uvedieme aj schému zapojenia, no informácie, ktoré potrebujete vedieť sa dajú zhrnúť do niekoľkých odrážok

  • Na pin 1 každého z konektorov C.0 až C.5 je vyvedená elektrická zem (GND
  • Na pin 2 je vyvedené stabilizované napätie +5 V, určené pre napájanie vonkajších zariadení. Prúd, odoberaný z tohto pinu nesmie presiahnuť 50 mA.
  • Na pin 3 je cez rezistor 220 ohmov vyvedená vstupne / výstupný port mikrokontroléru.

Rezistory 220 ohmov chránia piny mikrokontroléru pred poškodením skratom alebo privedeným vonkajším napätím. Skratovacia spojka JP1 (PGM / RUN) umožňuje odpojiť pin C.5 od programovacieho obvodu a používať ho ako bežný I/O pin. V tomto prípade ale vždy na začiatku vášho programu použite príkaz DISCONNECT

AXEboard20

Až na počet konektorov je identická s doskou AXEboard08. Má päticu na mikrokontrolér  PICAXE 20M2, prípadne 20X2 a na konektory je vyvedených 17 pinov. Vedľa programovacieho konektora je konektor A.0 a pozdĺž dlhších stran sú na jednej strane konektory C.0 – C.7 a na druhej strane B.0 – B.7. 

Analógové vstupy, AD prevodníky 

Načítanie analógových hodnôt je dôležité hlavne čo sa týka údajov z analógových senzorov, prípadne merania napätia batérií a akumulátorov v rôznych zariadeniach. Taktiež sa hodí pri ovládaní rôznych funkcií pomocou otočných, alebo posuvných potenciometrov. Stačí zapojiť potenciometer ako delič napätia a podľa hodnoty nameranej na bežci sa dá určiť poloha natočenia medzi krajnými polohami minimum a maximum. Tento princíp budeme používať aj na ovládanie otáčok motora, takže preto najskôr preberieme funkcie jazyka BASIC na mikrokontroléroch PICAXE na načítanie analógových hodnôt.

Mikrokontrolér PICAXE 08M2 má tri A/D prevodníky na vstupoch C.1, C.2 a C.4. Prevodníky môžu pracovať s presnosťou 8 bitov, čiže v rozsahu hodnôt 0 – 255 a vtedy sa výsledok dá uložiť do premennej s veľkosťou bajt, prípadne s presnosťou 10 bitov v rozsahu hodnôt 0 – 1023 a vtedy sa výsledok ukladá do premennej typu word, čiže do dvoch bajtov. Rozsah napätia na vstupoch môže byť daný napájacím napätím, ktoré je najčastejšie 5V, alebo pre presnejšie merania niektorým z vnútorných referenčných napätí 1.024 V, 2.048V, alebo 4.096 V

Analógová hodnota napätia sa číta pomocou príkazov READADC, alebo READADC10. Prvým parametrom je pin a druhým parametrom premenná, do ktorej sa uloží načítaná hodnota. Pre READADC sa výsledok ukladá do premennej typu byte a pre READADC10 do premennej typu word.

V prvom príklade budeme posielať nameranú hodnotu do počítača cez sériové rozhranie.  Príkaz SERTXD pošle údaje v parametroch cez rovnaké sériové rozhranie, ako sa mikrokontrolér programuje do počítača, Prenosové parametre sú rýchlosť 4800 Bd, bez parity (N), 8 bitov a  1 stop bit. Ak chcete poslať hodnotu premennej, treba pred jej označenie dať znak #, napríklad #b0.

symbol ADvstup = C.1 ' analogový vstup
symbol ADCval = b0   ' premenná na načítanie hodnotu

do
  readadc ADvstup, ADCval ' načítanie hodnoty
  pause 500
  sertxd (#ADCval,cr,lf) ' sériový prenos
  pause 500
loop

Výpis môžeme trochu poľudštiť a napätie vypísať ako desatinné číslo

Ak predpokladáme napájacie napätie 5V tak platí

NameraneNapätie / 5 = HodnotaAD / 255

Po úprave

NameraneNapätie  = 5*( HodnotaAD / 255)

NameraneNapätie  =  HodnotaAD / 51

Takže vzorec bude

Vin = ADCval * 100 / 51

Program:

symbol ADvstup = C.1 ' analogový vstup
symbol ADCval = b5   ' premenná na načítanie hodnoty
symbol Hodnota = w3

do
  readadc ADvstup, ADCval ' načítanie hodnoty
  pause 500
  Hodnota = ADCval * 100 / 51
  bintoascii Hodnota, b4, b3, b2, b1, b0
  sertxd (b2,".", b1, b0," volt",cr,lf)
  pause 500
loop

Spôsob pripojenia referenčného napätia určuje príkaz ADCCONFIG. Parametrom je jeden bajt, z ktorého sa použijú len tri bity. Bity 1 a 0 určujú aký typ referenčného napätia sa použije. Implicitná hodnota je 00.

Bity 1 a 0 referenčné napätie
00 napájacie napätie procesora
01 nepovolená hodnota
10 externý vstup
11 vnútorný zdroj nastavený cez FVRSETUP

Pomocou príkazu FVRSETUP sa nastavuje pripojenie k vnútornému referenčnému zdroju. Parametre sú FVR1024, FVR 2048 a FVR 4096.

Analógové výstupy, D/A prevodník

Najmenší obvod PICAXE 08M2 má jeden D/A prevodník, ktorý je na pine 0, takže ak ho chcete použiť, treba odpojiť programovací kábel. Prevodník má bohužiaľ len 32 úrovní napätia.

Výstupná úroveň napätia sa nastavuje príkazom DACLEVEL s jedným parametrom, ktorý môže mať  hodnotu v intervale 0 – 31.  Príkazom DACSETUP sa nastavuje fungovanie D/A prevodníka. Význam jednotlivých bitov parametra:

Bit 0 1
0 vzťažná úroveň je GND vzťažná úroveň je externý vstup

 

Bity 00 01 10
2 a 3 napájacie napätie externý vstup interný zdroj  nastavený cez FVRSETUP

V príklade budeme v cykle postupne zvyšovať  napätie na výstupe. Po prejdení celého cyklu sa výstupné napätie vráti na nulovú hodnotu, takže v konečnom dôsledku budeme generovať pílový signál, ktorého nábežná hrana nebude spojitá, ale bude vytvorená z 32 napäťových úrovní

dacsetup %10100000

main:
for b0=0 to 31
  daclevel b0
  pause 10
next b0
goto main

Na regulovanie výkonu je lepšie použiť PWM, čiže pulzne šírkovú moduláciu. To si ukážeme v ďalšom dieli venovanom ovládaniu jednosmerných motorov.