Řídící jednotka krokového motoru

Navržené zařízení bylo vyvinuto v rámci semestrální práce do předmětu Mikroprocesorová technika na VOŠ v Kutné Hoře.

Autoři: Tomáš Rumplík, Milan Stibor, Zdeněk Tvrdý

Zadání semestrální práce:
Postavte řídící jednotku krokových motorů řízenou jednočipovým mikropočítačem ATMEL. Jednotku navrhněte jako dva vzájemně propojené moduly. První modul bude obsahovat mikroprocesor s ovládacími a zobrazovacími prvky, druhý modul bude obsahovat výkonovou část pro daný typ krokového motoru.

Řídicí jednotka bude mít dva režimy činnosti:
Režim 1 v tomto režimu lze zadávat rychlost a směr otáčení motoru, volit čtyřtaktní a osmitaktní řízení. Zadané hodnoty budou vhodně zobrazovány na displeji.
Režim 2 v tomto režimu bude jednotka pracovat jako servopohon , na displeji se bude zadávat požadované natočení.
Navržené zařízení realizujte na desce plošných spojů, jako displej použijte HDSP-5621.

Návrh zařízení, popis řešení

Výkonová část
Krokový motor
Princip činnosti krokového motorku spočívá v tom, že jeho rotor, který tvoří permanentní magnet s vystupujícími póly, se vždy snaží zaujmout takovou polohu v magnetickém poli, které vytvářejí vinutí pólových nástavců po obvodu statoru, aby byli proti sobě nesouhlasně orientované magnetické póly. Existují 4 různé způsoby řízení, z toho 2 nesymetrické a 2 symetrické.
Dále budeme uvažovat motor s desetipólovým rotorem a osmipólovým statorem. Rotor i stator tedy tvoří dvě shodné části, obě části rotoru jsou vzájemně úhlově natočené o polovinu rozteče nástavců, tj. o 18 stupňů. Permanentní magnety rotoru svým syálým magnetickým tokem udržují rotor v nastavené poloze i po odpojení napětí na vinutích statoru. Na každém z pólových nástavců je budící vinutí, kterým prochází stejnosměrný proud. Když změníme polaritu proudu v jednom z vinutí, pootočí se výsledné magnetické pole statoru o úhel 45 stupňů a rotor se natočí do polohy odpovídající nejmenšímu výslednému magnetrickému odporu magnetického obvodu, tj. o úhel 9 stupňů. Aby se mohl krokový motor otáčet, je nutné postupně přepínat proud a jeho směr do jednotlivých vinutí. Rychlost tohoto přepínání určují otáčky motoru. Vzhledem k indukčnosti vinutí a k setrvačným silám rototru je ale tato rychlost omezena, neboť začne docházet ke ztrátě kroků a přesnosti polohy.
Krokový motorek (v našem případě s typovým označením SMR 300 - 100, výrobce býv. MEZ Náchod) jsme připojili přes budící obvody níže popsané k mikroprocesoru ATMEL. Když z řídícího systému (ATMEL AT89C2051) vyšleme jeden impuls přes příslušné řídící a přizpůsobovací obvody, hřídel krokového motorku se pootočí o příslušný úhel . V našem případě se hřídel motorku pootočí o 4,5° (případně o 9°). Toto už napovídá, že motor bude mít dva možné způsoby řízení, a to 4-taktní a 8-taktní. Při správném navrhnutí mechanické části je zaručeno, že po vyslání příslušného počtu impulsů se hřídel motorku pootočí o přesně definovaný úhel. Z toho vyplývá, že krokový motorek se dá docela dobře použít, tam kde se klade důraz na přesnost, např. u souřadnicového zapisovače,tiskárny,čtecího zařízení atd. Výkonnější krokové motory lze použít i jako polohovací mechanizmy číslicově řízených obráběcích strojů, robotů a manipulátorů.

Technické parametry:

Krokový motor SMR 300 - 100 RI/24
Parametr Čtyřtaktní řízení Osmitaktní řízení
Počet kroků na otáčku 40 80
Maximální rozběhová frekvence 280 Hz 560 Hz
Maximální provozní frekvence 800 Hz 1700 Hz
Úhel natočení za jeden krok 9 stupňů 4,5 stupně
Přídržný moment 28 mN.m 22 mN.m
Odpor vinutí fáze 30W
Jmenovitý proud fáze 0,25A
Napájení 24 V ss, motorek čtyřfázový s permanentním magnetem v rotoru a se statorem s vyniklými póly

Vnitřní zapojení motoru:
Vnitřní zapojení motoru Barevné označení vývodů motorku:
b - bílý
m - modrý
ž - žlutý
č - červený
f - fialový

Rp - předřadný odpor 62W/6W
Obr. 1  Vnitřní zapojení motorku SMR300-100

Způsoby řízení:

Při symetrickém způsobu řízení můžeme současně snímat jen jedno vinutí, a to v pořadí L1, L2, L3, L4, L1… nebo v pořadí opačném L1, L4, L3, L2, L1…pro opačný smysl otáčení nebo dvě vinutí L1 + L2, L2 + L3, L3 + L4, L4 + L1… V prvním i druhém případě se hřídel motorku pootočí vždy po přepnutí o 9 stupňů, ale navzájem se tyto dva způsoby liší výslednou orientací rotoru vůči statorovým vinutím a různou zatížitelností hřídele.
Při nesymetrickém způsobu řízení se střídají navzájem jedno a dvě spínané vinutí. Například: L1, L1 + L2, L2, L2 + L3, L3, L3 + L4, L4,L4 + L1… V tomto případě se hřídel motorku bude pootáčet o 4,5 stupně, takže velikost kroku je proti předcházejícímu typu řízení poloviční.

Symetrické řízení v daném případě můžeme nazvat - čtyřtaktní, nesymetrické osmitaktní.

Nesymetrické řízení (tedy osmitaktní):
Na níže uvedeném obr. 2a jsou uvedeny časové diagramy určující postupnost komutace (připojení k napájecímu napětí )jednotlivých vinutí v jednotlivých fázích. Tento časový diagram pro osmitaktní řízení nám určuje posloupnost v jaké budeme spínat jednotlivá vinutí. V prvním kroku přivedeme napětí na cívku L1 (pozn.vodič je modré barvy), v druhé kroku na L1 a L2 (pozn. vodič je červené barvy), v třetím kroku budíme opět jedno vinutí L2 atd. Z toho vyplývá, že se jedná o nesymetrický způsob řízení (střídavé přivádění napětí na jedno a dvě vinutí). Na již zmíněném časovém diagramu jsou také naznačeny cívky vinutí a je z něj patrné proč má motorek až 6 vodičů (4 cívky, z kterých jsou 2 a 2 spojené).Ve spodní části obr., jsou vypsána hexadecimální čísla Z, odpovídající jednotlivým krokům motorku,(tzn. jakým způsobem interpretujeme jednotlivé časové závislosti ve smyslu bitů čtyřbitového čísla). To vše však za předpokladu, že bit odpovídající časovému průběhu cívky L1, má nejnižší váhu, bit pro cívku L4 má nejvyšší váhu. A jsou tu také vypsány negované hodnoty čísel Z. Postupnost spínání se v průmyslových aplikacích zabezpečuje tzv. rozdělovačem impulsů. Na jeden jeho vstup se přivede informace o směru chodu a příchod impulsu na jeho druhý vstup způsobí přechod výstupů daného kroku na další. Rozdělovač impulsů obsahuje logickou část, na kterou navazují tranzistory, schopné spínat jen malé proudy. V případě použití výkonových motorků se tyto připájejí na desce rozdělovače přes desku výkonových vstupů. Málo výkonné motorky (jako v našem případě), je možné připojit přímo na desce rozdělovače. V našem případě však rozdělovač používat nebudeme a postupnost spínání bude řízena softwarově z řídícího mikroprocesoru.

Obr. 2a  Průběhy proudů ve vinutích motorku - osmitaktní řízení

Střídavě napájeno jedno a v další fázi dvě řídící vinutí motorku.
Oproti čtyřtaktnímu řízení je zde poloviční úhel kroku.

Symetrické řízení (tedy čtyřtaktní):
Toto řízení motoru je velmi jednoduché, ale má své nevýhody - např. nemůže pracovat narozdíl od nesymetrického řízení ve vyšších frekvencích a není tak přesný (úhel pootočení 9 stupňů).(obr. 2b)

Obr. 2b  Průběhy proudů ve vinutích motorku - čtyřtaktní řízení

Současně napájena dvě řídící vinutí motorku (kód 2-2).
Nejoptimálnější způsob řízení.

Budič vinutí krokového motorku:
Na obr.3 je schéma jednoho budiče vinutí krokového motorku, v konečném zapojení jsou celkem čtyři budiče - jeden budič pro každou fázi.
Tranzistorový budič
Obr. 3  Zapojení budiče vinutí

Jako budiče jsme použili univerzální tranzistory BC337 (lze použít také BC639), které jsou rychlé a levné. Pokud bychom chtěli použít výkonnější motorek, je nutné použít výkonové tranzistory, např. BD135 (do 1,5A) nebo BD243(do 6A,nutný chladič,pomalejší). Použití relátek pro jejich nízkou spínací rychlost není vhodné.

Funkce budícího obvodu:
Dioda D1, která překlenuje vinutí motorku (jednu fázi), chrání spínací tranzistor před napěťovými špičkami, které mohou na vinutí vzniknout vlivem přechodových dějů. Přivedeme-li na vstup obvodu log. 0, bude v tomto případě tranzistor T1 zavřený, na jeho kolektoru bude napětí, které otevře tranzistor T2 - vinutím motorku začne procházet proud nastavený odporem R5. Přivedeme-li na vstup obvodu log. 1, bude v tomto případě tranzistor T1 otevřený, na jeho kolektoru bude jen malé napětí, které nechá tranzistor T2 zavřený - vinutím motorku neprochází žádný proud. Odběr proudu jedné fáze v klidovém stavu (fáze nesepnutá) je zhruba 2mA. Toto zvolené řešení není ideální z pohledu bezpečnosti, poněvadž při náhodném rozpojení vodiče mezi 8051 a budičem dojde k sepnutí fáze. Stejně tak v situaci, kdyby vypadlo napájení logické části s 8051 a bylo zapnuté napájení silové části 24V, došlo by k sepnutí všech fází! Proto Vám doporučuji, pokud se rozhodnete ke konstrukci budiče, provést úpravu zapojení.

Úprava obvodu pro 24V napájení:
Abychom převedli tepelnou výkonovou ztrátu z motorku, je nutné před jednotlivé fáze (cívky L1, L2, L3 a L4) zapojit předřadný odpor Rp, jehož hodnota doporučená výrobcem činí 62W/6W. Použití odporů pro větší zatížení ("s větší vatáží") je nezbytné, bohužel jejich velikost může negativně ovlivnit návrh plošného spoje. Pro jmenovitou hodnotu proudu fáze (250mA) nám vyhoví odpor 68W/5W, pokud nám bude stačit proud 100mA, můžeme použít odpor 210W/2W.
Jak je vidět z průběhů spínání fází pro 4 i 8-taktní řízení (obr.2a,2b), vždy je v jeden okamžik sepnuta jen jedna ze dvou sousedních fází(vždy buď L1 nebo L2 a L3 nebo L4). Z toho vyplývá, že by nám stačily pouze dva předřadné odpory - po jednom pro dvojici fází, tak jak je to zakresleno na obr.1. My jsme ale použili pro každou fázi jeden samostatný odpor, tak nějak pro jistotu. Napájení jsme připojili obráceně, tzn. kladné napětí jsme spínaly na samostatně vyvedené konce všech vinutí (b,m,ž,č vodič) a na vývody společné pro 2 vinutí (2 x fialový vodič) jsme připojili zem. Použité čtyři odpory ale můžete klidně zredukovat na dva, záleží na vás; napájení je pak shodné s obr.1.
Dále je důležité v závislosti na vzdálenosti budiče od zařízení s řídícím mikroprocesorem oddělit vstupní signály buď hradly nebo lépe optočleny (optron), který nám zajistí i galvanické oddělení výstupů mikroprocesoru od budiče.

Řídící část:
Návrh řídící části vycházel kromě zajištění samotného řízení také z potřeby zobrazovat data na displeji. Proto jsme zvolili dva dvoumístné sedmisegmentové displeje spojené za sebou (dohromady tedy 4 digity). Po zvážení možných způsobů řízení displeje se nám jevilo jako nejlepší sériové ovládání (tedy pouze dvěma vodiči) za použití integrovaného řadiče M5450 firmy SGS-THOMSON.
Pro volbu funkcí jsme použili jednoduché přepínače, mj. i z důvodu přehlednosti, kdy je na první pohled jednoznačně vidět, v jaké poloze jsou a tedy jaký režim je navolen. Jako funkční klávesy (nastavení rychlosti/natočení a směru otáčení) jsme použili barevně odlišná tlačítka, rovněž kvůli přehlednosti.

Pro řízení a ovládání naší úlohy jsme použili mikroprocesor ATMEL AT89C2051. Tento typ nám plně dostačoval co do počtu I/O portů, tak co do velikosti paměti programu.

Funkce jednotlivých pinů I/O portů:
Rozmístění jednotlivých pinů AT89C2051:
Pouzdro AT89C2051 Vcc - napájení
GND - zem
XTAL1,XTAL2 - připojení obvodu "krystalu"
RST - připojeni nulovacího (RESET) obvodu


Pro připomenutí uvádíme základní vlastnosti AT89C2051:
2-místný LED displej HEWLETT PACKARD HDSP-5621:
Jde o 2-místný sedmisegmentový LED zobrazovač, barva znaků zelená, výška znaků 14 mm, společná anoda, úhel viditelnosti ± 50°, vynikající kontrast, dobrá viditelnost až do vzdálenosti 7m.
Pracovní teplota displeje je v od -40°C do +100°C.
Displej HDSP 5621 Podrobné informace o HDSP 5621 najdete zde  Formát PDF.

Obr.č.2   Označení segmentů a přiřazení vývodů
Nákres displeje HDSP-5621

Na vstupu 13 jsou připojeny všechny anody segmentů levého digitu, na vstupu 14 jsou připojeny všechny anody segmentů pravého digitu. Ostatní vstupy se podle potřeby (kombinace segmentů pro určitý zobrazovaný znak) uzemňují a tím i rozsvěcují.
Při napájecím napětí 5V jsou doporučeny předřadné odpory 220W, tato hodnota je zvolena s ohledem na životnost displeje.
Jelikož jsme pro řízení našeho 4-místného displeje (2 x HDSP-5621) použili IO M5450, nemuseli jsme tyto odpory zařazovat, protože tento obvod má proudové výstupy, velikost proudu (=jas displeje) do jednotlivých segmentů lze nastavit trimrem 10kW. Naše zapojení se obešlo bez připojení vstupu 4 a 9 (představující desetinou tečku) , pouze displej, představující nižší řády , měl vstup 4 připojen přes odpor 220W na výstup portu P3.7.

Sériový budič LED - IO M5450
Tento obvod jsme použili, protože nám bylo u zadání úlohy doporučeno řízení displejů pomocí sériové komunikace a tento obvod je zkonstruován pro tyto účely. Později jsme ocenily jeho vlastnosti, kterými jsou : - statické řízení jednotlivých segmentů - možnost asynchronního taktování (frekvence hodinového signálu) v rozmezí 5Hz až 500kHz - blokování všech výstupů (DATA HOLD) - podržení postupně přijatých dat a následné vypuštění všech najednou (posuvný registr+KO) - proudové výstupy (0 až 25mA, typ. 15mA) - řízení jasu displeje pomocí trimru - napájecí napětí 4,75 až 13V

Obvod M5450 funguje zjednodušeně takto (viz obr. 4):
Řízení obvodů M54xx odpovídá sériové sběrnici Microwire definované firmou National Semiconductor. Protože mikroprocesory ATMEL tuto sběrnici přímo nepodporují, museli jsme její jednoduchý komunikační protokol realizovat programově.
První vyslaný bit je START bit (log.1), za ním následuje 35 datových bitů - spínané segmenty. Pro umožňění funkce obvodu je nutné aktivovat (log.0) povolovací vstup ENABLE DATA, jinak nebudou data přijata. Po přijetí 35.datového bitu (náběžná hrana 36.hodinového impulzu) se přijatá data (35 bitů) přenesou z posuvného registru do 35 KO (vnitřní signál LOAD). Při sestupné hraně 36.hodinového impulzu se obsah posuv.registru vynuluje (vnitřní signál RESET) a připraví na nová data. Přijatá data uschovaná v KO se přenesou přes výstupní registr na výstup (s respektováním nastaveného proudu segmentů=jasu displeje). Stavy výstupů se mění pouze tehdy, jsou přijatá data odlišná od dat přijatých v předchozím intervalu - to zajišťuje velice stabilní zobrazení znaků (není nutné tak časté "překreslování" při pomalých změnách znaků). Vstup ENABLE DATA lze použít jako funkci DATA HOLD - pokud na vstup přivedeme log.1, vstupní data nejsou akceptována a výstupní segmenty jsou blokovány (zůstávají v předchozím stavu, dokud se opět nepovolí příjem dat vstupem ENABLE DATA). Povolovací (výběrový) vstup ENABLE DATA také umožňuje řídit několik obvodů M54xx společnými vodiči DATA a CLOCK. Svítící segment představuje log.1, nesvítící log.0.

Obr. 4   Blokové vnitřní schéma obvodu M5450
Blokové schéma obvodu M5450

Obr. 5  Průběhy signálů DATA a CLOCK
Průběhy signálů DATAIN a CLOCK

POZN.: Dospěli jsme k názoru, že klasické dynamické řízení - postupné přepínání digitů spínacími tranzistory - je vhodné pro řízení 2 nebo 3 digitů (navíc je potřeba vyšší špičkový proud jednotlivými segmenty, je zde vyšší úroveň rušení), pro 4 a více digitů je výhodnější použít integrovaný sériový budič M54xx.

Pro informaci uvádíme vlastnosti vyráběných sériových budičů LED displejů M54xx
(pouzdra DIL)
Typ Segmentů Vývodů
M5450 34 40
M5451 35 40
M5480 23 28
M5481 14 20

Data se do budiče předávají po jednom vodiči za doprovodu hodinových impulsů na druhém vodiči. Všechny typu budičů obsahují totožný čip, rozdíl je pouze v počtu ovladatelných segmentů a tím i počtu vývodů pouzdra. Pět vývodů je vždy stejných: dva pro napájení, dva pro data (DATA) a hodiny (CLOCK), jeden pro nastavení jasu (u M5450 ještě jeden vývod jako povolovací vstup). Zbylý počet vývodů je použit pro řízení segmentů.

My jsme vstup ENABLE DATA v našem zapojení uzemnili, tím jsme trvale povolili příjem dat a neumožnili blokování výstupů.
Pokud by byl požadavek na řízení více než 5-místného displeje, bylo by možné použít duplexní vysílání výstupů až na 8 míst (digitů) displeje. Takovéto zapojení lze nalézt v katalogovém listu obvodu M5450. Dva výstupy nepoužité pro řízení segmentů se použijí pro otevírání spínacích tranzistorů, které připojí vždy jen jednu polovinu displeje (4 místa) na kladný pól napájení - vždy musí být jeden tranzistor otevřen, druhý uzavřen. Např. přijmou se data, otevře se tranzistor ovládající levé 4 místa, změní se výstupy, přijmou se další data, první tranzistor se uzavře (odpojí levou část displeje) a otevře se sruhý tranzistor ovládající pravé 4 místa, změní se výstupy a tak pořád dokola. Tímto způsobem se nepatrně sníží stabilita zobrazení ("viditelnější blikání")- jde o kombinaci přímého a dynamického řízení displeje.

Obr. 6   Zapojení vývodů obvodu M5450
Zapojení vývodů M5450

Nejprve jsme chtěli pro sériovou komunikaci mezi procesorem a M5450 využít sériový kanál v módu 0 (RxD - data, TxD - hodiny). Ale tento způsob se ukázal jako nevyhovující - při 12MHz krystalu by byla příliš velká přenosová rychlost, kterou by obvod M5450 nezvládl, musel by se použít krystal o frekvenci 6MHz a nižší. Proto jsme si hodiny pro M5450 vytvořili sami programově a v nulové hodnotě CLK posílali DATA do M5450.

Celkové schéma zapojení
Zvlášť je nakresleno schéma řídící(logické) části a schéma výkonové části, je to pouze z toho důvodu, že jsme realizovali odděleně desku ploš.spojů řídící části a desku ploš.spojů výkonové části; mezi sebou byli propojené krátkým kablíkem.

kliknutím na obrázek získáte schéma řídící části v plné velikosti
Náhled schématu řídící části

kliknutím na obrázek získáte schéma výkonové části v plné velikosti, ve schématu nejsou zakresleny ochranné diody D1 až D4 (viz popis budiče výše)
Náhled schématu výkonové části
Program ASM  Výpis programu pro mikrokontroler AT89C2051

Upravil a doplnil Michal Fuksa

Zpět na hlavní stránku