Princip krokového motoru
Krokový motor je stroj zpravidla nevelkého výkonu (má špatný poměr hmotnosti a výkonu), který má několik preferovaných poloh rotoru oproti statoru. Po přivedení proudu na řídící cívky skončí motor v některé z preferovaných poloh. V těchto polohách je nejmenší energie magnetického pole (nejvyšší magnetická vodivost mezi rotorem a statorem pro aktuálně buzené pole).
Použijeme dvoufázový krokový motor, ten má dvě ovládací cívky (fáze) a ovládá se tak, že se přivede proud do jedné cívky, pak do druhé, pak do první, ale v opačném směru a nakonec do druhé v opačném směru (+1, +2, –1, –2). Celý cyklus se opakuje. Pro opačný chod se pouze otočí pořadí čtveřice (-2, –1, +2, +1). Číslo je číslo cívky, znaménko směr proudu.
Toto je základní řízení, které jsem použil na inkubátor pavoučího kokonu. Motor pochází z devítijehličkové tiskárny ALPS P2000G, pracuje na 3,9 V a má 1,8 úhlového stupně na krok. Takže udělá celou otočku za 100 kroku (25 čtveřic). Ve velkém množství tiskáren, kopírek, faxu a podobných zařízení bývá jeden, nebo dva krokové motory.
Bez odporu do země šlo krokovat prstem (připojením báze tranzistorů na napájecí napětí přes odpor těla) a obával jsem se, že tranzistory budou spínat i špičky z napájecího napětí a další rušení. Jsou to darlingtony a mají zesílení větší než 750. Pokud si z minulého dílu vzpomínáte na zpětné diody zapojené paralelně s cívkou, vzpomínáte si správně. Ale použité tranzistory mají dostatečné kolektorové napětí a energie cívky může odtéct do výkonových odporů, takže nevznikne vysoká napěťová špička.
Zapojení je energeticky neefektivní, protože po sepnutí jednoho tranzistoru jím protéká proud cívkou krokového motoru a také (zbytečně) proud jeho odporu v kolektoru. Nicméně to příliš nevadí, protože stačí méně než 1 ms dlouhé sepnutí (záleží na setrvačnosti a mechanickém odporu zátěže, nutno vyzkoušet v konkrétní aplikaci a s konkrétním motorem). Tranzistory jsou bez chladičů, ale ani při kontinuálním běhu pomalou rychlostí (10 kroků za sekundu) se nezahřejí a odpory také ne. Podstatnou výhodou oproti běžnému můstkovému zapojení (místo odporu v kolektorech další čtveřice tranzistorů) je, že chyba softwaru nezpůsobí zkrat napájecího zdroje a zničení zařízení (což jde samozřejmě zařídit i jinak). Navíc není třeba ovládat tranzistory v kladné větvi.
Tento skript pak otáčí motorem na jednu stranu
while true; do for a in 1 2 4 8; do par_out "$a" par_out 0 sleep 0.1 done done
a po otočení čísel (8 4 2 1) nazpět.
Mezikrok
Pokud by počet kroků nestačil, dá se motor provozovat s dvojnásobným počtem kroků, ale tam už lze silně doporučit můstkové zapojení, protože motorem v polovině kroku protéká proud oběma cívkami. Zatímco u minulého zapojení šlo krokovat (+1, 0, +2, 0, –1, 0, –2, 0), kde je motor většinu času ve stavu 0 (žádnou cívkou neteče proud), u tohoto řízení se krokuje (+1, +1+2, +2, +2–1, –1, –1–2, –2, –2+1). Po dosažení stavu, kdy protéká proud jen jednou cívkou, je samozřejmě možné zařadit stav 0 (vše vypnout), ale ve stavu, kdy protéká proud oběma cívkami, je nutné tyto proudy nechat zapnuté. Odběr energie je výrazně vyšší, než u jednoduchého řízení.
Můstek
Princip můstku je jednoduchý. Zapojíme dva tranzistory nad sebe (často se používá komplementární pár – dva stejné tranzistory, jeden PNP a druhý NPN), jeden do kladné a jeden do záporné větve (u komplementárního páru spojíme kolektory, emitor NPN připojíme na zem a emitor PNP na plus napájecího napětí). Druhý vývod cívky zapojíme na druhou dvojici tranzistorů. Na jedné straně sepneme tranzistor na zem, na druhé na plus a a cívkou protéká proud v jednom směru.
Zapnutím druhé dvojice tranzistorů dostaneme opačný směr proudu. Ke každému tranzistoru je třeba paralelně připojit zpětnou diodu, která vede v opačném směru než tranzistor. Tranzistorové budiče s polomůstkem (párem tranzistorů) nebo více polomůstky se běžné prodávají s bipolárními tranzistory i s FETy. Je rozumné vytvořit ovládací signál kombinačními obvody tak, aby z portu šel pro každý můstek směr a enable. Pak není možné odpálit celé zařízení softwarovou chybou Pro více informací navštivte Wikipedii.
Jemnější řízení
Nejsem si jist, zda je toto možné udělat se všemi krokovými motory (nemám s tím praktickou zkušenost, ale třeba se najde někdo v diskusi), ale obě cívky lze také napájet analogově dvěma sinusovými průběhy signálů posunutými o 90 stupňů, které lze (pro větší energetickou efektivitu) vytvořit PWM modulaci. Pak je počet mezikroků neomezený (a spotřeba energie ještě vyšší, než u řízení s mezikrokem).
Přesnost řízení v Linuxu
Pokud je třeba motor řídit s přesným časováním, je lepší použít nějaký mikroprocesor a Linuxem mu pouze posílat co má udělat. Pokud třeba Firefox spotřebuje všechnu paměť a systém začne swapovat, je možné, že se krok zpozdí třeba i o několik sekund. S trochou smůly bude celou dobu zapnutá jedna z fází motoru. Z tohoto důvodu bych určitě dal tranzistory na chladič (já jsem inkubátor řídil procesorem Atmega8 se zakázanými interrupty).
Rozhodně doporučuji nepoužívat řídící počítač k žádným náročným úlohám (měl by mít tak 90 % idle), ale ani to nezaručuje nic (jen výrazně snižuje pravděpodobnost). Pokud by nedodržení časování znamenalo problém a řešení s extra procesorem by bylo nevhodné, volil bych RT Linux.