
IoT prakticky: využitie čipov PICAXE na generovanie a meranie impulzov
Vo voľnom pokračovaní článku o mikrokontroléri PICAXE https://www.pcrevue.sk/a/IoT-prakticky--prve-pokusy-s-cipom-PICAXE-jednoducho-programovatelnym-v-jazyku-BASIC ukážeme zaujímavé funkcie PICAXE, ktoré sa často používajú v rôznych zariadeniach. Sú to funkcie založené na časovačoch a čítačoch mikrokontroléra, ktoré sú užitočné na generovanie impulzov, meranie dĺžky impulzov a meranie počtu pulzov, čiže v podstate meranie frekvencie
Príklady sú vo videu
Krátke opakovanie
Zo stránky http://www.picaxe.com/Software si stiahnite vývojové prostredie PICAXE Editor 6, ktoré umožňuje programovanie v jazyku podobnom populárnemu programovaciemu jazyku BASIC.
Zapojenie kábla na programovanie
Zopakujeme príkazy, ktoré sme použili v predchádzajúcej časti.
Príkazy HIGH a LOW nastavujú úroveň výstupov. Môžete použiť číslovanie pinov v tvare PIN 2, alebo C.2 Príkaz PAUSE znamená oneskorenie o počet milisekúnd zadaných v parametri. Komentár môže začínať príkazom REM, stredníkom (;), alebo apostrofom (‘). Príkaz GOTO realizuje skok na príslušné návestie
Zaujímavé a pritom jednoduché je aj označovanie premenných. PICAXE 08M2 má k dispozícii 28 jedno bajtových premenných označených b0 – b27. Bajtové premenné môžu ukladať celé čísla v intervale hodnôt 0 a 255. Nemôžu používať záporné čísla alebo zlomky a ak prekročíte hraničné hodnoty 0 alebo 255, „pretečú“ bez varovania (napr. 254 + 3 = 1) (2 - 3 = 255)
Pre väčšie hodnoty môžete kombinovať bajtové premenné do dvojíc, takže vznikne 16 bitová premenná s rozsahom hodnôt 0 – 65 535. Tieto premenné sú označené w0, w1, w2... a sú kombináciou bajtových premenných
w0 =b1+b0 w1 =b3+b2 w2 =b5+b4 w3 =b7+b6
w4 =b9+b8 w5 =b11+b10 ...
Bajtové premenné b0 a b1 (tvoriace 16 bitové slovo w0) je možné používať aj po jednotlivých bitoch označených takto:
b0 = bit7: bit6: bit5: bit4: bit3: bit2: bit1: bit0
b1 = bit15: bit14: bit13: bit12: bit11: bit10: bit9: bit8
Novšie čipy od M2 umožňujú takto použiť aj bajtové premenné b2 a b3 (tvoriace 16 bitové slovo w1) a bity sú označené bit16 – bit31.
Po resete programu majú všetky premenné hodnotu 0
Piny PICAXE 08M2
Pretaktovanie čipu
Najskôr vysvetlíme možnosti zmeny taktovacej frekvencie, čiže pretaktovanie a podtaktovanie. Implicitne nastavená taktovacia frekvencia je 4 MHz, Od tejto frekvencie sa odvíja nielen rýchlosť vykonávania inštrukcií, ale aj funkcie časovačov a komunikačných rozhraní. Pomocou príkazu SETFREQ môžete u čipu PICAXE 08M2 zvýšiť taktovaciu frekvenciu na 8, 16, alebo 32 MHz, alebo znížiť až na 31 kHz. Pre obvod PICAXE 08M2 môžete použiť príkaz SETFREQ s parametrami: k31, k250, k500, m1, m2, m4, m8, m16 a m32. Nastavíte tak interné taktovacie frekvencie 3I kHz, 250 kHz, 500 kHz, 1 MHz, 2 MHz, 4 MHz, 8 MHZ, 16 MHz a 32 MHz. V nasledujúcom príklade sa využíva implicitne nastavená frekvencia 4 MHz. Príkaz PAUSE bude fungovať tak ako má, pauza medzi blikaním bude 1000 ms, čiže 1 sekundu. Pre istotu frekvenciu nastavíme, keďže v nasledujúcich príkladoch sa bude meniť
Teraz skúsime zmeniť taktovaciu frekvenciu na 32 MHz, čiže 8x vyššiu. LED dióda bude blikať 8x rýchlejšie
Zdalo by sa že pre väčšinu aplikácií bude výhodné nastaviť čo najvyššiu taktovaciu frekvenciu, napríklad už spomínaných 32 MHz. Platí však jednoduché pravidlo: čím je vyššia taktovacia frekvencia, tým vyšší je prúdový odber. Na porovnanie pri 32 MHz samotný čip bez pripojených zariadení odoberá 2.2 mA. Pri 31 kHz je to takmer 20 x menej – 0.13 mA
Generovanie pulzov
Príkaz PULSOUT umožňuje jednoducho generovať pulzy. Má dva parametre: číslo pinu na ktorom sa generujú pulzy a dĺžku trvania pulzu v jednotkách 10 μs. Táto hodnota platí pri implicitnej frekvencii 4 MHz. Pri maximálnej frekvencii 32 MHz je jednotka v ktorej sa nastavuje dĺžka trvania pulzov logicky 8 x kratšia, čiže 1,25 μs. Generovaný pulz je opačný oproti počiatočnému stavu na príslušnom pine. Príklad generuje najkratšie možné pulzy s pauzou 100 ms
Meranie dĺžky pulzov
Príkaz PULSIN meria dĺžku pulzu na pine určenom prvým parametrom. Druhý parameter určuje či sa bude pulz merať od nábežnej hrany (1) alebo zostupnej hrany (0) signálu. Tretí parameter je premenná, do ktorej sa dĺžka pulzov uloží. Môže to byť premenná typu byte začínajúca na b, alebo premenná typu word začínajúca na w. Jednotky sú rovnaké ako pri funkcii PULSOUT, čiže pri implicitnej taktovacej frekvencie 4 MHz je to 10 μs. Príkaz pulsin 2,1,w5 zmeria dĺžku pulzu na PIN 2 počínajúc nábežnou hranou a hodnotu v desiatkach mikrosekúnd uloží do premennej W5
Meranie dĺžky pulzov je veľmi užitočné napríklad pri analýze signálov. Typickým príkladom je PWM signál pre servomotor, kde sa uhol natočenia určuje šírkou pulzu. Možno sa pýtate načo je to dobré, veď keď takýto signál privediete na servomotor, ten urobí čo treba. Ale čo ak potrebujete napríklad z dôvodu dosiahnutia vyššieho krútiaceho momentu, alebo vyššej presnosti nahradiť servo krokovým motorom. Vtedy môžete nechať riadiaci algoritmus bezo zmeny a v podprograme na ovládanie motora stačí len prepočítať zmeranú dĺžku pulzov na počet krokov, ktorý musí motor vykonať, aby sa jeho hriadeľ natočil o požadovaný uhol.
Počítanie impulzov
Príkaz COUNT umožňuje počítať pulzy počas určeného časového intervalu. Prvý parameter je číslo pinu, druhý čas v milisekundách počas ktorého sa budú počítať pulzy a tretí parameter je premenná, kam sa počet pulzov uloží. Odporúčame premennú typu word. Príkaz count 2,1000,w5 meria počet pulzov počas 1 sekundy, čiže vlastne meria frekvenciu v Hz. Pri taktovacej frekvencii 4 MHz by mali pulzy mať dĺžku minimálne 40 μs a presne odmeriate frekvencie zhruba do 10 kHz. Ak zvýšite taktovaciu frekvenciu 32 MHz môžete merať zhruba do 50 kHz. Ak chcete zisťovať hodnotu frekvencie cez debug použijete konštrukciu
V budúcej časti už budeme používať PICAXE v rôznych prototypových doskách
Príklad na generovanie pulzov
Predchádzajúce časti
Prvé pokusy s čipom PICAXE jednoducho programovateľným v jazyku BASIC
Video ukazuje ako si vyrobiť kábel na programovanie PICAXE aj pripojenie alfanumerického displeja
Zobrazit Galériu