Jste zde

Motory a jejich řízení s MCU - 3.část - řídící algoritmy a regulace s MCU

Zatímco v 1.díle seriálu "Motory a jejich řízení s MCU" byly uvedeny základní informace o hlavních provedeních motorů a v 2.díle způsob jejich připojení z pohledu řízení, poslední 3.díl se zaobírá řídícími algoritmy pro některé nejběžnější typy motorů, výběrem vhodného MCU pro potřeby řízení a nastiňuje praktickou realizaci regulace na MCU Stellaris.

Algoritmy pro řízení motorů

 

Kartáčové stejnosměrné motory

Jak již bylo napsáno v 1. díle seriálu o motorech (http://automatizace.hw.cz/motory-jejich-rizeni-s-mcu-1-cast-typy-motoru), princip je založen na periodickém střídavém přepínání polarity napájecího stejnosměrného proudu pomocí komutátoru po každém otočení rotoru o 180°. Rychlost otáčení se řídí napětím, nejjednodušeji jeho spínáním (PWM modulace napájecího napětí), kdy průměrná hodnota napájecího napětí je dána vzájemným poměrem četností stavů zapnuto / vypnuto.

V závislosti na tom, zda se používá zpětná vazba či nikoli, lze algoritmus řízení rozdělit na:

  • Pulsní PWM algoritmus v otevřené smyčce - pouze vytváří potřebnou úroveň napětí, které je úměrná rychlost otáčení a předpokládá se, že se motor točí. Tento způsob lze dobře použít při známé a konstantní mechanické zátěži. V opačném případě se riskuje zablokování motoru.

  • Pulsní PWM algotimus v uzavřené smyčce a jeho variace - buď jen jednoduchý PWM algoritmus, který pouze dle zpětné vazby řídí / nastavuje periodu, což je vhodné jen pro pomalu se měnící zatížení hřídele, nebo složitější, ale přesné řízení generování pulsů. Zde se pak řídí střída i frekvence podle požadavku na rychlost otáčení a výsledků zpětné vazby. V případě uzavřené smyčky lze tak vcelku přesně řídit rozběh i brždění stejnosměrného elektromotoru.
 

U kartáčových DC motorů se komutace provádí mechanickým komutátorem a PWM se řídí jen velikost DC napětí

 


 

Krokové motory

U krokových motorů, které se vyskytují v bipolárním provedení (obsahují dva páry vodičů) nebo unipolárním provedení (5 či 6 jednotlivých vodičů) se podle složitosti řídícího algoritmu a použití motoru využívá jedno z následujících časování:

  • 4 sekvence pro jeden plný krok - dvě vinutí jsou vždy napájená a provádí se "přetahování/strkání" pólů, což je vhodné pro nízké rychlosti, kde je potřebné přesně krokovat a udržet vysoký točivý moment

  • 4 sekvence pro vytvoření vlny - pouze jedno vinutí v jednom časovém okamžiku je napájené, které k sobě táhne pól. Tento způsob vykazuje hladší běh, než předchozí řízení, ale nízký točivý moment, je problémový při vysokých rychlostech, nízká spotřeba

  • 8 sekvencí pro půlkrok - nejdříve napájené jedno vinutí (1. půlkrok), následně obě dvě vinutí (2. půlkrok), pak opět jedno vinutí. A tak pořád dokola. Prakticky jde o spojení předchozích dvou principů. To vytváří klidnější chod při většině rychlostí, dobrý točivý moment.

  • 8 nebo více sekvencí na jeden mikrokrok - umožňuje vytvářet proměnný výkon v čase nebo dávkování výkonu na čas. Tento způsob vykazuje velmi klidní a tichý chod, ale ztráci na točivém momentu
 

 

4 sekvencové řízení krokového motoru (vlevo) je sice jednodušší na realizaci, ale vykazuje neklidný běh, narozdíl od dokonalejšího 8 sekvenčního půlkrokového řízení (vpravo) 

Samozřejmě sekvencování určuje vlastnosti krokového motoru, ale prakticky se realizuje opět puslním PWM řízením bez nebo častěji se zpětnou vazbou:

  • PWM řízení v otevřené smyčce - méně běžné - pouze se generují sekvence dle jednoho zvoleného režimu výše a tiše se předpokládá, že vše funguje. V tomto režimu má rotor tendenci zůstávat na pozici zubu, což při otáčení generuje hluk

  • Pulsní řízení v uzavřené smyčce - běžné - hodí se i pro větší rychlosti, konstantní nastavení

  • Zpětná vazba založená na PWM - přesné řízení s výbornou charakteristikou - systém akceleruje a pak nastavuje (provádí se nastavení na začátku každého kroku)

 

3fázový střídavé a BLDC elektromotory

  • Jednoduché sekvencování pulsů - pouze střídavé přivádění stejnosměrného napětí (pulsů / PWM signálů s konst. střídou a periodou) postupně na jednotlivá vinutí. Jednoduché na realizaci, ale je vhodné pouze pro malé BLDC motory a nízké rychlosti, ale běh je hlučný a generuje velké EMI rušení.

  • Lichoběžníkové prostorové vektorové řízení (Trapezoid Space vector) - využívá pilovitého nebo trojúhelníkového průběhu k regulaci period PWM, což zhruba simuluje průběh sinusového průběhu (ve velkých krocích) na příslušném vinutí v čase s +/- 30° fázovým posunem. Výsledkem je slušný točivý moment pro BLDC motory při vyšších rychlostech, ale mizerný při nízkých (často motor jakoby cvaká) a generuje vysoké EMI.

  • Sinusové prostorově vektorové řízení - generuje (simuluje) sinusový průběh napětí na dvou vinutích, což dává slušnou aproximaci sinusovky, dobrý točivý moment, čisté sekvencování při nízkých rychlostech, ale nefunguje při vyšších rychlostech. Vhodný i pro řízení 3fázových AC motorů. Vyžaduje však velmi přesnou zpětnou vazbu, aby to vůbec fungovalo.

  • FOC řízení - přesně vypočítává potřebný statorový proud vzhledem k pozici rotoru, vyznačuje se výbornou charakteristikou, která se dobře adaptuje, a dá se použít pro BLDC i střídavé AC motory. Vyžaduje však provádění mnoha výpočtů, které ale nejsou moc časově náročné. Pracuje dobře při každé rychlosti a dovoluje přesně řídit / dávkovat točivý moment.
 

 

Zatímco BLDC motory lze řídit i jednoduchým sekvencováním pulsů (vlevo), pro 3fázové AC motory, zvláště indukční s kotvou nakrátko (vpravo) je vhodnější vytvořit (nasimulovat) "pravé" točivé magnet. pole

Zatímco jednoduché sekvencování přivádí střídavě na 2 vinutí konstatní průběh PWM, výhodnější lichoběžníkové nebo sinusové vektorové řízení se již proměnným PWM snaží simulovat troúhelníkový, resp. sinusový průběh statorového napětí.

 

Regulace 3fázových AC motorů a BLDC motorů prostřednictvím sinusového prostorově-vektorového řízení (vlevo) a jednoduchého sekvencování (vpravo)

Field Oriented Control (FOC)

FOC je asi nejlepší způsob, jak řídit 3fázové a BLDC motory. Vyznačuje se však dost velkou složitostí a proto si zde uvedeme jen stručný popis o co vlastně jde. FOC se zaměřuje na průběh rotoru jako referenci. Používá se tzv. Clarkův převod ke konverzi statorového 3fázového průběhu na 2fázový a používá se Parkův převod ke konverzi statorového průběhu na rotorový. Převod provede kolaps průběhu do jedné D a Q komponenty, kde D je tzv. přímá složka (ve směru s rotorem a nemá žádný účinek) a proto je ji obvykle potřeba minimalizovat. Naopak složka Q je fázově posunutá (o 90° vzhledem k rotoru a tedy měla by mít maximální účinek) a je jí tedy potřeba maximalizovat. Definuje se z nich tak příslušný sinus a kosinus (cosinus je pouze o 90° posunutý sinus). S použitím inverzní Parkovi transformace je převede z rotorového průběhu na statorový a s použitím inverzní Clarkovi transformace na 3 složky fázově posunuté o 120°. Normálně se využívá nulová vstupní hodnota pro přímý prostorový vektor (chceme ho minimalizovat) a maximální hodnota vstupu pro kvadraturní prostorový vektor, nicméně je potřeba stáhnout. PWM průběh je tímto způsobem generovaný pro 2 statorová vinutí v kvadraturním q-prostorovém vektoru, přičemž mezi oběma vinutími se udržuje kolmý úhel (fázový rozdíl 90°).

Složitost praktické realizace FOC řízení, která klade i velké nároky na výpočetní výkon MCU, je dokladem toto blokové schéma

Vliv výběru MCU na kvalitu a bezpečnost řízení motoru

Kvalitní výběr MCU pro řízení motorů je klíčovým faktorem. K dispozici by měli mít blok multikanálových programovatelných PWM výstupů, nejlépe s možností generování (časování) vzájemně překrývajících se impulsů (obdélníků) pro potřeby snadnějšího řízení H-můstků, co nejrychlejší zápis do registrů, rychlý a minimálně 3kanálový A/D převodník pro realizaci řízení v uzavřené smyčce (se zpětnou vazbou) a nejlépe hardwarový kvadraturní enkodér (čítač) pro možnost přímého připojení inkrementálních snímačů otáček bez potřeby řešit celé snímání softwarově. To totiž bývá výrazně pomalejší, což při vysokých rychlostech otáčení motoru může docházet ke ztrácení impulsů ze snímače. To nejen způsobuje méně přesné řízení natočení, ale může vést k nekontrolovatelnému zvyšování otáček rotoru a tedy k vážným problémům. Nemluvě o významném zatížení jádra (procesoru). Také A/D převodník by měl mít dobu převodu výrazně kratší než je perioda motor řídících PWM signálů a dobrý přístup k procesoru, protože zpožděné získání a vyhodnocení výsledků zpětné vazby může nakonec způsobit více problémů a chyb než užitku.

MCU a obecně procesory nespecializované na řízení motorů, i když velmi výkonné, nejsou vhodné z pohledu příliš pomalé reakce a obsluhy na vygenerovaného přerušení od některé periferie. Zvýšený nadhled (sledování) běhu nebo zpracovávání řízení motoru na popředí pak významně "žere" čas a výkon procesoru na úkor třeba datové komunikace, zvláště při generování rychlého sledu událostí při rychlém otáčení motoru nebo přesném řízení.

Pro řízení motorů jsou velmi vhodná MCU na jádrech ARM Cortex-M3, které se proto dobře hodí díky velmi rychlé reakci na přerušení od zpětné vazby, což dovoluje rychlou prioritizaci současně vykonávaných úloh. To je v případě motorů velmi důležité, protože když se rotor otáčí, může každá zpožděná reakce způsobit tragédii. Rychlé řízení podporuje i rychlé zpracování a vykonávání matematických rovnic a funkcí, dosahované například násobením MUL v jednom hod. cyklu nebo dělení DIV ve 3 až 12 cyklech. Mimo počítání v plovoucí řádové čárce je také možné použít tu pevnou, kdy je to potřeba. Toho se dosahuje funkcemi USAT a SSAT.

 

Praktická ukázka řízení BLDC motoru specializovanými MCU Stellaris

Jako praktickou ukázku a shrnutí poznatků uvedených v tomto nebo předchozích dílech o řízení motorů jsem vybral pěkný příklad z "dílny" společnosti Luminary Micro, výrobce specializovaných MCU řady Stellaris pro řízení motorů (více informací najdete například v článku Mikrokontroléry Stellaris s jádrem ARM Cortex-M3 pro řízení motorů na serveru automatizace.HW.cz).

Jde o řízení 3fázového bezkartáčového stejnosměrného motoru (BLDC) se 3 vinutími A, B a C typicky zapojené do hvězdy (viz obrázek), tj. se společným středem. Motor je buzen přiložením napájecího stejnosměrného napětí Vcc na jednu fázi (vinutí) a zem (GND) na vedlejší, což způsobí tok proudu skrz jedno vinutí motoru dovnitř a skrze další opět ven. Správným střídáním fází, tj. toku proudu přes vinutí, (sekvencováním) se rotor otáčí. BLDC motor je provedením synchronní motor a tak když je správně řízen, je rychlost otáčení motoru je přímo závislá na rychlosti sekvencování. Aby byla udržena synchronizace rychlosti a točivého momentu v celém rozsahu je nutné pohyb rotoru sledovat zpětnou vazbou (řízení v uzavřené smyčce). Použít lze Hallovy senzory nebo optoelektrické inkrementální snímače (enkodéry). Na následujícím obrázku je typické blokové schéma připojení pro regulaci BLDC motoru. Často se však používá jen jeden typ zpětné vazby. Dále bude uvažováno použití Hallovinkremých senzorů a inkrentálního snímače otáčení (enkodéru). Pro buzení 3 polovičních H-můstků se využívá 6 individuálních PWM signálů. Střída PWM udává stupeň řízení proudu vinutími a jejich sekvencování způsobuje a reguluje otáčení rotoru.

 

3 vinutí BLDC motoru označené jako A, B a C

V tomto příkladu jsou vždy současně aktivní jen pouze 2 ze 6 PWM signálů, které však musí být ve fázi. Velká péče pak musí být věnována zajištění, aby horní a spodní spínací tranzistory v polovočním H-můstku nebyly sepnuty současně, což by způsobilo zkrat a tzv. proražení tranzistorů. Aby se to nestalo, zajištuje komuntační sekvence (sekvence, která způsobí vznik točivého magnet. pole). V motoru zabudované Hallovy senzory připojené na 3 univerzální vstupy MCU a obsluhované žádostí o přerušení, poskytují 3 digitální signály indikující natočení (pozici) rotoru o 30° (může se lišit u různých motorů). Toho se využívá pro "taktování" komutační sekvence a kdy cyklus projde sekvencí.

Ideální případ - blokové schéma řídící uzavřené smyčky MCU Stellaris, 3fázový budící můstek a BLDC motor. Řízení z MCU obstarává 6 PWM signálů a zpětnou vazbu tvoří Back EMF připojený na A/D převodník a signály z Hallových senzorů (Hall Effect Sensors) a optického snímače otáček/enkodéru připojené na GPIO

Následující obrázek ukazuje průběh komutační sekvence z Hallových senzorů, který určuje průběh PWM signálů (obdélníku) budící 3fázový můstek. Příklad je založen na elektromotor Pittman N2341S001, jiné BLDC motory jsou však buzeny podobně, ale možná s trošku odlišnými komutačními sekvencemi. Pro potřeby přesného určení rychlosti otáčení motoru se pak využívá optický inkrementální rotační enkodér, poskytující informaci o pozici a rychlosti ve vysokém rozlišení. Informací o rychlosti je "krmen" PID algoritmus k nastavení střídy PWM, jak je potřeba k zajištění konstantní požadované rychlosti. Naladění PD algoritmu určuje odezvu na změny nastavení rychlosti, změny mechanického zatížení atd. Mimo zjišťování natočení rotoru by také měl být měřen / kontrolován nadproud a přehřátí prostřednictvím snímání napětí na rezistoru, resp. termistoru, a komparátoru či A/D převodníku řídícího MCU.

Příklad komutační sekvence - průběhů signálů okolo řízení motoru: od shora signál z Hallových senzorů S1 až S3, zakódované jednotlivé stavy a očíslování kroků (Code/Step), průběh napěťových PWM signálů a posloupnost buzení stator. vinutí motoru.

 

Řídící program - část řízení otáčení motoru s funkcí GPIOIntHandler

Základní řízení otáčení motoru se tedy dosahuje zpětnou vazbou, která řídí elektronickou komutaci (otáčení), prakticky řečeno střídavé spínání horních a dolních tranzistorů polovičních H-můstků. Komutační sekvence pak určuje směr otáčení. V tomto příkladu Hallové senzory připojené na víceúčelové vstupy/výstupy (GPIO) nakonfigurované pro generování přerušení náběžnou i sestupnou hranou. Přerušení od některého z uvedených vstupů pak vyvolá spuštění funkce GPIOIntHandler(void), která je součástí zdrojáku bldc.c a využívá příkazů (funkcí) C knihovny DriverLib.zip pro MCU Luminary Micro Stellaris, kterou lze po zaregistrování stáhnout na stránkách společnosti Luminary Micro (například na www.luminarymicro.com/products/lm3s6965.html). Ta vykoná aktuální komutaci motoru.

Řídící program - část řízení rychlosti motoru s funkcí SpeedHandler a QEI

Pro precizní řízení motoru (zrychlování, zpomalování, start / stop) se využívá PID algoritmus, který mění střídu PWM v závislosti na rychlosti impulsů z optického enkodéru ve zpětné vazbě. Pokud použité MCU obsahuje hardwarový blok kvadraturního enkodéru QEI, resp. vstupy QEI, je vše jednodušší, protože ten sám z dodávané posloupnosti impulsů sám vypočítá rychlost a směr otáčení. Pokud není přítomen, je nutné ho realizovat softwarově.

Díky softwarovému PID regulátoru je základní rychlost motoru řízena snadno pouze změnou střídy PWM průběhu. To ve zdrojáku bldc.c realizuje funkce SpeedHandler(unsigned long ulValue), která je volána při požadavku změny rychlosti z ovládacího rozhraní.

Při softwarové realizaci QEI je nutné použít GPIO vstupy nastavené pro zachytávání náběžné hrany a počítat jejich počet z výstupu optického inkrementálního snímače z kanálu A, přičemž vnitřní čítač zvýší svůj stav o 1 vždy po vygenerování přerušení od vstupu. To ve zdrojáku bldc.c realizuje funkce EdgeIntHandler. Pak v periodických intervalech generovaných časovačem je nasčítaný obsah použit jako počet specifických časových úseků. Ty jsou převedeny na rychlost motoru a použity k řízení rychlosti motoru. To ve zdrojáku bldc.c realizuje funkce QEIIntHandler.

V případě použití například mikrokontrolérů Stellaris M3S601 nebo LM3S801, lze využít hardwarovou realizaci QEI místo zmíněné softwarové. Odpadá tak úplně funkce EdgeIntHandler, kterou realizuje přímo QEI blok a vytváří přerušení při naměření periody, která se pak opět převedeny na rychlost motoru a použije k řízení rychlosti motoru (resp. střídy PWM signálu). To ve zdrojáku bldc.c realizuje funkce QEIIntHandler.

Toto jsou tedy základní potřebné části programu pro řízení BLDC motoru. Bližší informace a souvislosti naleznte ve zde několikrát zmíněném souboru bldc.c, který je vyjmutý z projektu společnosti Luminary Micro sw01238-461.zip.

Závěr

Cílem na serveru automatizace.hw.cz uvedených 3 dílů seriálu o elektromotorech a jejich řízení nebyl od počátku vyčerpávající popis celé problematiky, protože ta je velmi rozsáhlá a složitá, ale byl vytvořen s cílem přiblížit méně znalým technikům současné možnosti v této oblasti. Zde uvedené informace je tak nutné vždy konfrontovat s paramtery a konstrukcí motorů i mikrokontrolérů vámi zvolených výrobců.

Antonín Vojáček

Download & Odkazy

Hodnocení článku: