Motor připojený k počítači a ovládaný Linuxem

Erik Yokotashi Hamera 16. 7. 2009

V Linuxu je možné většinou poměrně jednoduše spojit skriptovacími jazyky funkcionalitu různých programů a udělat si jednoduchou aplikaci na míru. Pojďme tento koncept rozšířit i do fyzického světa v nejbližším okolí našeho počítače. Dnes si připojíme k našemu linuxovému počítači krokový motor z tiskárny.

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.

Krokový motor

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.

Krokový motor

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

widgety

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.

Našli jste v článku chybu?
DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

Vitalia.cz: Antibakteriální mýdla nepomáhají, spíš škodí

Antibakteriální mýdla nepomáhají, spíš škodí

Vitalia.cz: 5 důvodů, proč jet na výlov rybníka

5 důvodů, proč jet na výlov rybníka

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

DigiZone.cz: Sat novinky: NASA Ultra HD (4K)

Sat novinky: NASA Ultra HD (4K)

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

Měšec.cz: „Ukradli“ jsme peníze z bezkontaktních karet

„Ukradli“ jsme peníze z bezkontaktních karet

Lupa.cz: Cimrman má hry na YouTube i vlastní doodle

Cimrman má hry na YouTube i vlastní doodle

DigiZone.cz: Budoucnost TV vysílání ve Visegrádu

Budoucnost TV vysílání ve Visegrádu

Lupa.cz: Adblock Plus začal prodávat reklamy

Adblock Plus začal prodávat reklamy