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

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