IoT a robotika: Ovládanie jednosmerných motorčekov, príklady pre mikrokontrolér PICAXE

Mikrokontroléry
0

Jednosmerné motorčeky sa používajú v rôznych typoch robotických podvozkov a iných konštrukciách. Z hľadiska ovládania je potrebné meniť otáčky a smer otáčania. V tomto článku ukážeme možnosti ovládania a príklady pre mikrokontrolér PICAXE. Čip PICAXE je veľmi obľúbený u modelárov aj konštruktérov miniatúrnych zariadení a robotov, pretože je podstatne menší a ľahší ako klasické prototypové dosky typu Arduino, či Raspberry. 

Príklady sú vo videu



Motorčeky na jednosmerný prúd majú dva vodiče na pripojenie napájacieho napätia. . Ak sú tieto vodiče pripojené k napájaniu s dostatočne vysokým napätím, jednosmerný motor sa začne otáčať. Čím vyššie je napätie, tým sú vyššie aj otáčky. Veľa jednosmerných motorov pracuje pri vysokých otáčkach a preto sú vybavené prevodmi do pomala.  Smer otáčania jednosmerných motorov závisí od polarity privedeného napätia. Preto  stať o ovládaní klasických jednosmerných motorov začneme vysvetlením fungovania takzvaného H-mostíka. Pomocou štyroch spínačov, či už mechanických, alebo polovodičových spínacích prvkov je možné ovládať smer otáčania.  

Fungovanie H-mostíka

Funkciu, H-mostíka s elektronickými prepínačmi realizujú moderné integrované obvody určené na riadenie jednosmerné motory. Modul umožňuje ovládať nielen motory, ale aj elektromagnetické ventily a podobné zariadenia vyžadujúce ovládanie jednosmerného prúdu.

Regulácia zmenou napätia pomocou klasických regulátorov má veľké straty a zapojenie umožňujúce meniť napätie pri zachovaná vysokej účinnosti sú zas obvodovo zložitejšie. Preto sa v hobby konštrukciách a robotike sa otáčky jednosmerných motorov regulujú pomocou pulzne šírkovej modulácie – PWM. Napájenie privádzané do jednosmerného motora sa striedavo zapína a vypína pri pomerne vysokej frekvencii, takže pohyb motora je plynulý.  Rýchlosť motora je daná percentuálnym podielom času v stave zapnuté. Napríklad, ak je napájanie cyklovaný na 50%, čiže polovica každého pulzu je napájanie zapnuté a polovica vypnuté, potom sa motor točí na polovicu maximálnych otáčok. 

Ukážeme praktické príklady regulovania jednosmerného motora pomocou čipu PICAXE a v budúcom pokračovaní pomocou populárnej dosky Arduino. PICAXE sme ako prvú platformu vybrali kvôli tomu, že čip obsahuje všetko potrebné vrátana podporu programovania cez sériový kábel a programuje sa v jednoduchom jazyku odvodenom z programovacieho jazyka BASIC  

Samozrejme mohli by sme zapojenie na regulovanie motorov nabastliť na prepojovacom poli, alebo univerzálnom plošnom spoji. Použijeme elegentnejšie riešenie -  dosku AXEmotor ktorá je k dispozícii na e-shope www.hobbyrobot.cz Umožňuje ovládanie malého jednosmerného motora a využíva mikrokontrolér PICAXE 14M2, ktorý má 14 pinov. Na doske je stabilizátor napätia a výkonový H-mostík, ktorý umožňuje ovládanie smeru a rýchlosti otáčania jedného malého jednosmerného motorčeka. Prípadne tento obvod umožňuje regulovať prúd na princípe PWM modulácie pre iné zariadenia, napríklad elektromagnety a podobne. Doska je osadená obvodom SN754410, ktorý je pinovo kompatibilný s L293D. 

Doska má aj štyri konektory na ktoré sú vyvedené nepoužité piny mikrokontroléra

  • Na pin 1 každého z konektorov 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.

Obvod SN754410 obsahuje štyri výkonové spínacie členy, ktoré majú jeden logický vstup a jeden výkonový výstup, ktorý môže pracovať s vyšším napájacím napätím než zvyšok obvodu, až do 36V. Trvalý prúd je 1.1 A, špičkový prúd 2A.

Spínacie členy sú združené do dvoch dvojíc, každá z nich má svoj pomocný vstup EN (Enable), ktorým sa úrovňou H povoľuje činnosť členov. Ak je na tomto vstupe úroveň L, obidva výkonové členy sú v stave vysokej impedancie, čiže neaktívne.  Dve dvojice spínacích členov umožňujú obojsmerne riadiť dva jednosmerné motory zapojené medzi ich výstupmi. Ak budú mať výstupy súhlasnú logickú hodnotu, motor stojí, pri rozdielnej úrovni sa bude točiť a smer otáčania závisí na tom, ktorý z výstupov bude v stave H a ktorý v L. 

1A (pin2)
2A (pin7)
smer otáčania
0
0
Motor stojí
1
0
Forward
0
1
Backward
1
1
Motor stojí

Vstupy pre druhý motor sú na pinoch: 3A (pin10) a 4A(pin15) . Výstupy na pripojenie motora A sú na pinoch 1Y (pin3) a 2Y (pin6). Pre motor B je to 3Y (pin11) a 4Y (pin14). 

Rýchlosť otáčania sa reguluje signálom na vstupoch 1,2EN (pin1) a 3,4EN (pin9). Úroveň HIGH motor spustí a LOW motor zastaví. Pomocou PWM signálu na týchto vstupoch je možné regulovať rýchlosť motorov.

Na doske AXEmotor sú vstupy 1A a 4A prepojené a pripojené na pin C.0 PICAXE a vstupy 2A a 3A na pin B.2 obvodu PICAXE 14M2. Vstupy 1,2EN a 3,4EN sú pripojené na pin B.4

Na chladenie obvodu slúžia štyri vývody – po dva na každej strane 4,5,12,13), ktoré sú GND, čiže elektrickou zemou pre napájanie. Mali by byť na doske plošného spoja prispájkované na väčšie plochy medi. Na prepojovacom poli toto chladenie nefunguje, takže obvod je potrebné zaťažovať menším prúdom. Toto je zároveň aj hlavný dôvod prečo sme použili dosku AXE motor.

Skôr než ukážeme príklad regulácie jednosmerného motora, ukážeme možnosti programovania PWM, čiže pulzne šírkovej modulácie

Príkaz PWM je jednoduchý, avšak má jednu veľkú nevýhodu, že počas jeho vykonávania mikrokontrolér nemôže robiť nič iné Má tri parametre: pin, na ktorom sa generuje výstup, pomer šírky impulzu v rozsahu 0-255 a počet cyklov (nie pulzov, ale vnútorných cyklov), taktiež v rozsahu 0-255. Ďalšou zvláštnosťou je, že sa negenerujú pulzy z premenlivou šírkou, ale šírka pulzu je konštantná 29 μs, mení sa perióda ich opakovania v rozsahu 134 Hz – 17.1 kHz. Je to trochu neprehľadné, avšak hlavným obmedzením je, že generovanie PWM signálu týmto príkazom nebeží na pozadí. 

Príkaz PWMOUT beží na pozadí a využíva vnútorný časovač. Má tri parametre: pin, na ktorom sa generuje výstup, perióda pulzov v rozsahu 0-255 a faktor „plnenia“ pulzov, čiže akú časť periódy trvá pulz v rozsahu 0-1023. Perióda pulzov sa odvodí od zadaného parametra tak, že hodnota parametra +1 sa vynásobí dĺžkou periódy taktovacej frekvencie a konštantou 4.

Takže ak zadáte parameter 124, bude výpočet periódy pri implicitnej frekvencii 4 MHz, čo je 250 ns

(124 + 1) * 250 * 4 = 125 * 1 000 = 125 000 ns = 0,125 ms. 

Perióde 0.125 ms zodpovedá frekvencia 8 kHz. Najkratšia možná perióda pri zadaní parametra 1 je 250 * 4 * (1+1) 2000 ns = 2 μs, čo zodpovedá frekvencii 500 kHz.

Aj s tretím parametrom – faktorom plnenia treba realizovať jednoduchý výpočet – násobenie dĺžkou periódy oscilátora, čo je pri 4 MHz 250 ns. Takže ak zadáte tretí parameter 512, dĺžka pulzu bude 

512 * 250 = 128 000 ns = 128  μs

K dispozícii je aj jednoduchší príkaz PWMDUTY, pri ktorom nie je potrebné počítať. Príkaz má dva parametre. Prvý udáva pin a druhý udáva striedu pulzov a môže byť v rozsahu 0-1023

Pripomenieme priradenie pinov obvodu 75440 na porty PICAXE 14M2 

Port PICAXE
pin 75440
význam
C.0
1A, 4A
smer otáčania
B.2
2A, 3A
smer otáčania
B.4
1-2EN, 3-43N
ENABLE, PWM spínanie

Smer otáčania

1A 
2A 
smer otáčania
0
0
Motor stojí
1
0
Forward
0
1
Backward
1
1
Motor stojí

V prvom príklade budeme len meniť smer, vstup ENABLE bude pri otáčaní motora v stave HIGH. 

#picaxe 14M2
symbol mot1 = C.0
symbol mot2 = B.2
symbol enable = B.4
output mot1
output mot2
 
high enable  ;ENABLE povolené
main:
  low mot1     ;motor stojí
  low mot2 
  pause 1000
 
  high mot1     ;motor jedným smerom
  low mot2 
  pause 1000
 
  low mot1     ;motor stojí
  low mot2 
  pause 1000
 
  low mot1     ;motor druhým smerom
  high mot2 
  pause 1000
goto main

 V ďalšom príklade budeme pomocou príkazu PWMOUT meniť šírku impulzov PWM na vstupe ENABLE, aby motor postupne zrýchľoval

#picaxe 14M2
symbol mot1 = C.0
symbol mot2 = B.2
symbol enable = B.4
output mot1
output mot2
 
high mot1     ;motor jedným smerom
low mot2 
pause 200
 
for w1 = 400 to 1020 step 20  ;cyklus parametrov pre PWM, postupná akcelerácia
   PWMOUT enable, 249,w1
   pause 200
   debug
next w1
 
low mot1     ;motor stojí
low mot2 
pause 500

V ďalšom príklade budeme ovládať smer a rýchlosť otáčania motora potenciometrom pripojenom na analógovom porte C.4

#picaxe 14M2
#no_data
symbol mot1 = C.0
symbol mot2 = B.2
symbol fwdmin = 492
symbol revmin = 532
symbol analogport = C.4
symbol pwmport = B.4
symbol analogvalue = w0
symbol pwmonper = w1
output mot1
output mot2
 
;hlavná slučka
do 
   readadc10 analogport, analogvalue
   if analogvalue <= fwdmin then
      gosub gofwd     ;smer otáčania dopredu 
   elseif analogvalue >= revmin then
      gosub gorev    ;smer otáčania dozadu 
   
   else
      low mot1
      low mot2
   endif
loop
 
;podprogramy 
 
gofwd:   ;smer otáčania dopredu
 
   low mot1
   high mot2
   pwmonper = fwdmin - analogvalue * 21 / 10 MAX 1023
   pwmout pwmdiv16, pwmport, 124, pwmonper
return
 
gorev:   ;smer otáčania dozadu
   high mot1
   low mot2
   pwmonper = analogvalue - revmin * 21 / 10 MAX 1023
   pwmout pwmdiv16, pwmport, 124, pwmonper
return

Predchádzajúce časti 

Prvé pokusy s čipom PICAXE jednoducho programovateľným v jazyku BASIC

Využitie čipov PICAXE na generovanie a meranie impulzov

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

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,

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
DC motor mikrokontrolér PICAXE jeynosmerný motor

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať