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.
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