česky english Vítejte, dnes je čtvrtek 28. březen 2024

Studie možností řízení elektromotoru pod RT Linuxem

DPS 4/2012 | Články
Autor: Ing. Karel Znamenáček, Ing. Tomáš Navrátil, Ryston Electronics

V oddělení vývoje firmy Ryston Electronics jsme provedli studii možností řízení malých elektromotorů různých typů řadičem na bázi procesoru ARM9, pod real-time operačním systémem typu Linux. Řídicí systém jsme pojali obecněji a použili procesorový modul Combi G20 a základní desku Base- Board1, popsané v předchozích číslech tohoto časopisu. Vzhledem ke složitosti řízení je nejjednodušším typem DC motor, z hlediska jednoduchosti řídicí elektroniky je to zase krokový/synchronní motor. S malými úpravami lze řídit i další typy motorů.

Popis DC motoru

Elektromotor je obecně stroj transformující elektrickou energii na mechanickou (při opačném toku energie mluvíme o generátoru). Stejnosměrný motor (DC motor) je zpravidla konstruován při malých rozměrech s permanentními magnety ve statoru a komutátorem, anebo jako bezkomutátorový (Brushless, BLDC), kdy stator se otáčí a pevný rotor vytváří točivé pole, komutované elektronicky. BLDC motory mají zpravidla řídicí elektroniku integrovanou a jsou pomaluběžné (např. pohon diskety).

Při řízení DC motoru lze použít jeho zjednodušený model, kdy uvažujeme pouze stejnosměrný odpor jeho vinutí Rs, otáčky w a elektromotorické napětí Ue, jehož je motor zdrojem a které je přímo úměrné otáčkám. Po přivedení napětí Ur ze zdroje na jeho svorky vinutí začne vinutím téct proud I. Proud je v tomto modelu dán vzorcem

I = (Ur − Ue)/Rs.

Jelikož je proud I přímo úměrný kroutícímu momentu M, můžeme pro úplnost vyjádřit jeho mechanický výkon vzorcem P = M × w nebo P = k × I × w .

Řízení DC motoru

Ve většině aplikací se využívá motor jako zdroj mechanické práce a je žádoucí řídit jeho otáčky (rychlost), popřípadě polohu (zde se užívá pojem servopohon). K řízení máme k dispozici pouze veličinu Ur (ostatní veličiny jsou dány modelem, včetně mechanické zátěže). Velikostí napětí Ur můžeme řídit proud a s ním spojený mechanický moment, který uděluje pohyblivému systému zrychlení.

Zvyšováním otáček se však zvyšuje elektromotorické napětí Ue generované motorem, a pokud dosáhne velikosti řídicího napětí Ur, klesne moment M na nulu a nelze již motorem točit rychleji. Maximální velikost řídicího napětí tak omezuje maximální rychlost, při které je možné motor použít jako pohon připojené mechanické zátěže.

Pokud je motor použit v „brzdném režimu“ jako generátor, je napětí Ur vždy menší než napětí Ue a brzdná síla je úměrná jejich rozdílu.

Pro pohon motoru je většinou k dispozici zdroj stejnosměrného napětí Vbus o konstantní velikosti. Řídicí proměnlivé napětí Ur z něj lze vyrobit mnoha technikami. Hojně se využívá PWM modulace s jedním spínacím prvkem, kdy je na vinutí motoru pravidelně připojováno a odpojováno napětí zdroje Vbus (viz obr. 1). V době, kdy je spínač rozepnut, běží motor naprázdno (neteče jím proud) a na jeho svorkách je Ue .

Daleko univerzálnější řešení je použití 4 spínacích prvků v zapojení plného mostu (full-bridge), kdy lze ovládat motor i v generátorovém režimu (viz obr. 2).

Obr. 1 a Obr. 2

Pro realizaci výkonové části byla zvolena čtveřice tranzistorů N–MOSFET řízená dvojicí dvojnásobných budičů IR2110. Na rozdíl od jednospínačového zapojení je zde ke každému spínači antiparalelně připojena dioda (interní v FET).

Zapojení obsahuje blok nadproudové ochrany pro případ poruchy spínacích prvků a nebo jejich chybného řízení nebo pro případ zkratu ve vinutí motoru.

K urychlení vývoje řídicího algoritmu byl použit Modul Combi, disponující výkonným hradlovým polem (FPGA), ve kterém je pomocí jazyka VHDL realizován PWM generátor s několika řídicími registry a výstupy propojenými se vstupy navazujících budičů IR2110. Dále je zde realizován registr obousměrného čítače polohy, který z optického senzoru připevněného k hřídeli motoru zpracovává signály o relativní změně polohy.

CPU a FPGA jsou propojeny 32bitovou datovou sběrnicí s podpůrnými signály, takže se registry jeví procesoru namapovány v jeho adresním prostoru. Nastavení registrů určuje spínací frekvenci, střídu a tzv. dead-time (dobu nečinnosti mezi sepnutím tranzistorů v jedné větvi plnéhomostu), čímž se zamezí současnému sepnutí obou tranzistorů ve větvi a jejich destrukci.

Registry jsou tedy viditelné v lineárním adresním prostoru procesoru AT91SAM92G20, který je novějším klonem populárního RISCového procesoru AT91SAM9260.

Aktualizaci těchto registrů zajišťuje „regulační smyčka“ v podobě real-time aplikace, která funguje v součinnosti s operačním systémem Linux opatřeným tzv. RT-rozšířením. Aplikace periodicky čte registr určující relativní polohu hřídele motoru, z ní vyvozuje rychlost a vypočítá regulační zásah, který zpětně zapíše do registru PWM bloku v hradlovém poli.

Zpětnovazebním řízením se tak dá dosáhnout plynulého náběhu a doběhu ovládaného motoru včetně precizního řízení otáček a polohy. Tepelná ochrana motoru byla řešena teplotním čidlem DS18B20 připojeným k Modulu Combi. Hodnota čidla vstupuje jako další veličina řídicího algoritmu.

Frekvence opakování řídicího algoritmu – „smyčky“, neboli vzorkovací perioda, a její časová nestálost (jitter) jsou dány možnostmi RT Linuxu a nastavením priorit dalších běžících aplikací. Důležitá je nejen celková stabilita systému proti padání, ale ostatní aplikace musejí mít také příležitost dostat svůj strojový čas. V našem případě se podařilo dosáhnout při vzorkovací periodě 1 ms jitteru hodně pod 50 μs, ale na úkor některých jiných funkcí.

Velmi důležitý je rozdíl mezi řízením na žádanou hodnotu rychlosti nebo polohy. I když je elektronika v obou případech stejná, modely jsou různé, a proto jsou také rozdílné algoritmy řízení. Obtížnější je řízení na konstantní polohu (např. kvůli stabilitě a aperiodicitě pohybu) a často obsahuje fázi pozvolného rozjezdu a brždění. Teoreticky, s použitím algebraické teorie řízení, je možné dosáhnout cílového stavu v konečném malém počtu kroků řízení, ale praktické aspekty (tření, nelinearity, omezení řídicího napětí) umožňují dosahovat jen suboptimálních výsledků.

Operační systém Linux obsahuje TCP/IP zásobník a použitý procesor disponuje rozhraním Ethernet a nabízí tak prostředky pro jednoduchou realizaci řízení a odečítání aktuálních provozních hodnot motoru, např. pomocí www stránky nebo jiné formy vzdáleného přístupu.

Dalším možným rozšířením, které nebylo realizováno, je snímání napětí na svorkách DC motoru během doby, kdy jsou všechny 4 tranzistory nesepnuty, kdy napětí tedy odpovídá elektromotorickému napětí motoru. Toto napětí je možné použít ve zpětnovazební smyčce místo optického senzoru polohy, který nemusí být vždy realizovatelný. Dále je možné pomocí AD převodníku měřit napětí Vbus a proud I a zpětnovazební řízení mechanického výkonu motoru.

Řízení krokového motoru

Naše vývojová deska Baseboard1 umožňuje i jednoduché řízení krokového motoru. Ten je možno si představit jako dvě či více vinutí, generující točivé magnetické pole, a rotor tvořený magnety se natáčí ve směru tohoto pole. Zpravidla má krokový motor spojeny středy vinutí v jeden vývod a vyvedeny konce vinutí, takže má například pět vývodů.

Proto je možno použít například čtyři výkonové spínače typu „sink“ proti výkonovému napájecímu napětí +12/24 V, podle typu motoru. Střed se připojí na plus pól, konce vinutí na spínače.

Pohyb motoru se provádí po časových elementech tak, že do výstupního portu se sekvenčně zapisují kombinace jedniček a nul, odpovídající proudům tekoucím díly vinutí. Je možno proudy spínat tak, aby se fáze překrývaly, což (díky dvojnásobnému proudu) zvyšuje sílu motoru a dá se „kouzlit“ s časováním pro rozjezd a brždění při dlouhých pohybech.

Jelikož na desce Baseboard1 je celkem 12 těchto spínačů, je možno řídit až tři krokové motory běžného typu, což umožňuje například konstrukci experimentální 3D tiskárny, jak bylo ověřeno.

Uvedené zapojení bylo použito pro jen demonstraci a jsme si vědomi celé řady jeho nedostatků: jelikož je řízeno výstupními porty připojenými na sběrnici SPI, která obsluhuje i další periferie, řízení fází krokového motoru vyžaduje intenzivní činnost jádra operačního systému a jiné procesy musejí čekat. V důsledku toho není možno dosáhnout tak vysoké frekvence krokování, jakou by snesl samotný motor, a proto pohyby jsou pomalé. Napájecí zdroj na desce má omezený výkon. Na druhou stranu je možno velmi snadno adaptovat software na různý počet fází a posloupností jejich spínání (např. půlkroky), aby motor při rozjezdu měl lepší záběr. Rovněž jsou využity „free-wheeling“ diody ve spínačích při buzení induktivní zátěže.

Obr. 3

Další možnosti použití řadiče v FPGA

Použitý modul Combi však umožňuje jinou možnost pro řízení motorů, pokud přidáme výkonový H-můstek: použitím obvodu FPGA pro vytvoření PWM modulátoru pro můstek, a jeho řízení procesorem na vyšší úrovni pomocí registrů vytvořených v adresovém prostoru procesoru. Díky 32-bitovému datovému propojení mezi CPU a FPGA je možno procesorem zapisovat v reálném čase do registrů v FPGA, a tak například vytvářet několikafázovou sinusovou regulaci střídy s periodou nad 50 Hz, a současně provádět kontrolní funkce jako třeba měření proudu jako prevenci přetížení při rozběhu, a současně provozovat všechny systémové funkce jádra OS.

Tak je například možno zkonstruovat vylepšený řídicí systém krokového motoru se sinusovým mikrokrokováním pro přesný pohyb a rychlý rozjezd a pro dosažení maximální rychlosti pojezdu v ustáleném režimu, nebo časově koordinovat pohyb více os pro dosažení žádané trajektorie pohybu.

FPGA regulátor se zdá být zvláště vhodný pro řízení DC motoru (nebo jejich soustavy). Je možno respektovat i nedokonalosti mechanické části pohonu jako vůle, nelineární tření, rozběh do zátěže aj. V obvodu FPGA je rovněž možno vytvořit obousměrný čítač polohy a enkodér z dvojice optických snímačů na pohonu.

Nastavení řídicích registrů řadiče DC motoru v obvodu FPGA umožňuje spínat protilehlé tranzistory například rychlostí 50 Hz s PWM modulací a po připojení filtru před motor je možné realizovat jednoduchý invertor s obdélníkovým nebo trapézoidním průběhem výstupního napětí.

Úpravou VHDL kódu je možné generovat i sinusový průběh napětí pomocí PWM modulace, ale v hardwarové části je potřeba upravit výstupní napětí zařazením vhodného filtru. Lze tak realizovat jednoduchý frekvenční měnič pro frekvenční řízení střídavých motorů.

Závěr

Studie, nedávno provedená ve firmě Ryston Electronics, poskytla přehled možností řízení různých typů motorů, použitelných pro perspektivní mechatronické aplikace.

Bylo ověřeno, že s modulem Combi pod RT Linuxem a základními deskami s výkonovými výstupy a přidaným mostem je možno dobře řídit motory stejnosměrné nebo krokové, při zachování dalších funkcí operačního systému reálného času, ale je potřeba dodržovat jistá pravidla návrhu softwaru pro RT aplikace.