Vrátíme se k tématu trochu většího servopohonu z minulého článku a jeho ovládání například mikrokontrolérem PICAXE, tentokrát ve verzi, která využívá dvě relé a dovoluje mít napájecí ohruh serva galvanicky oddělený od řídících obvodů.
Servopohon je stejný, k ovládání použijeme jeden modul AXEBoard08 a dva moduly s relé. Nejprve budeme polohu serva ovládat ručně potenciometrem.
Releový modul ná tři vstupní piny: zem, napájecí napětí +5V a řídící signál. Relé sepne, když je řídící signál ve stavu L, odpadne ve stavu H, vinutí relé je spínáno přes tranzistor. Spotřeba jednoho modulu v sepnutém stavu je 60 – 70 mA. Napájení modulu indikuje červená LED, sepnutí zelená LED. Relé obsahuje jeden přepínací paket kontaktů dimenzovaných na zatížení proudem 10 A. Zapojení vývodů je popsáno na spodní straně desky modulu.
Program pro PICAXE 08M2 je následující:
rem maxiservo se dvema rele rem c.0 a C.4 rele aktivni v L (!) rem c.2 ADC ovladaci potenciometr rem c.1 ADC zpetnovazebni potenciometr #picaxe 08M2 #no_data do ;smycka programu readadc c.2,b0 ;cteni ovladaciho potenciometru readadc c.1,b1 ;cteni polohy serva if b0>b1 then ;pro jeden smer b2=b0-b1 ;zjisti odchylku if b2>1 then ;kdyz je vetsi nez 1 (pasmo necitlivosti) high c.0 ;zapni motor v jednom smeru low c.4 else ;kdyz ne high c.0,c.4 ;vypni motor endif endif if b0<b1 then ;pro druhy smer pohybu b2=b1-b0 ;zjisti odchylku if b2>1 then ;kdyz je vetsi nez 1 (pasmo necitlivosti) low c.0 ;zapni motor v duhem smeru high c.4 else ;kdyz ne high c.0,c.4 ;vypni motor endif endif pause 50 ;prodleva aby rele nekmitala loop ;konec smycky
Bude-li napájení ovládání a motoru serva skutečně oddělené, bude servo fungovat správně. Můžeme pochopitelně obojí napájet i z jednoho zdroje, ale potom velmi záleží na tom, aby by l zdroj dostatečně tvrdý. I když motor serva odebírá při ustáleném pohybu jen asi 0,5 A naprázdno a nejvýš 2 A při zatížení, při rozběhu je to jinak a projde proudový pulz několikanásobně většího odběru. Je-li zdroj měkký, může klesnout napětí do té míry, že PICAXE vypadne a resetuje se, to se může cyklicky opakovat. V takovém případě se servo trhaně rozjede v jednom směru a relé kmitají.
Pokud napájíme servo (i řízení) třeba z kvalitního olověného akumulátoru, problémy nehrozí, stejně tak při použití tříčlánku Li-pol. Jestliže k napájení použijeme síťový zdroj, pak tento zdroj musíme dimenzovat ne na 2 A, ale nejméně na 10 A, případně můžeme jeho výstup posílit elektrolytickými kondenzátory s kapacitou v řádu desítek až stovek mF, což je lepší. Při vypnutí relé indukčnost vodičů a motoru vygeneruje přepěťový pulz, který bez kondenzátoru může síťový zdroj ohrozit a může i „projít“ k mikrokontroléru a způsobit jeho „zakousnutí“.
Druhé zapojení používá k řízení standardní signál pro modelářská serva. Zapojení je obdobné, program také, vyhodnocuje se šířka pulzu.
rem maxiservo rizene servopulzy rem c.0 a C.4 rele aktivni v L (!) rem c.2 vstup servopulzu rem c.1 ADC zpetnovazebni potenciometr #picaxe 08M2 #no_data do ;smycka programu pulsin c.2,1,b0 ;cteni servopulzu if b0<100 then let b0=100 endif ;nekorektni pulzy if b0>200 then let b0=200 endif ;nekorektni pulzy b0=b0-90*2 ;konverze na interval 10-210 readadc c.1,b1 ;cteni polohy serva if b0>b1 then ;pro jeden smer b2=b0-b1 ;zjisti odchylku if b2>2 then ;kdyz je vetsi nez 2 (pasmo necitlivosti) high c.0 ;zapni motor v jednom smeru low c.4 else ;kdyz ne high c.0,c.4 ;vypni motor endif endif if b0<b1 then ;pro druhy smer pohybu b2=b1-b0 ;zjisti odchylku if b2>2 then ;kdyz je vetsi nez 2 (pasmo necitlivosti) low c.0 ;zapni motor v druhem smeru high c.4 else ;kdyz ne high c.0,c.4 ;vypni motor endif endif pause 100 ;prodleva aby rele tolik nekmitala loop ;konec smycky
Toto řízení je funkční, nicméně se zjednodušeným výpočtem na ukázku, nevyužívá celou mechanickou dráhu serva. Relé musí být kvalitní aby se jejich kontakty příliš neopalovaly a nezůstávaly „viset“.