SAMSUNG_082020 SAMSUNG_082020 SAMSUNG_082020 Advertisement

IoT prakticky: využitie čipov PICAXE na generovanie a meranie impulzov

Mikrokontroléry
0

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

main:
  high C.2 pause 1000
  low C.2  pause 1000
  goto main

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ť

setfreq m4 ; implicitná taktovacia frekvencia 4 MHz
main:
  high C.2 pause 1000
  low C.2  pause 1000
  goto main

Teraz skúsime zmeniť taktovaciu frekvenciu na 32 MHz, čiže 8x vyššiu. LED dióda bude blikať 8x rýchlejšie

setfreq m32 ; taktovacia frekvencia 32 MHz
main:
  high C.2 pause 1000
  low C.2  pause 1000
  goto main

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

setfreq m4     ; implicitná taktovacia frekvencia 4 MHz
main: 
  pulsout 1,1000  ; v jednotkách 10 μs
  pause 100 
  goto main

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

setfreq m4  ; implicitná taktovacia frekvencia 4 MHz
main: 
   pulsin 1,1,w5 
   debug goto main

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 

setfreq m4     ; implicitná taktovacia frekvencia 4 MHz
main: 
   count 1,1000,w5
   debug 
   goto main

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

https://www.pcrevue.sk/a/IoT-prakticky--prve-pokusy-s-cipom-PICAXE-jednoducho-programovatelnym-v-jazyku-BASIC

Video ukazuje ako si vyrobiť kábel na programovanie PICAXE aj pripojenie alfanumerického displeja



Zobrazit Galériu

Luboslav Lacko

Všetky autorove články
PICAXE čítač generátor impulzov robotika programovanie

Pridať komentár