Lekce 18
Krokový motor

Úvod

Občas, jako jsme kupříkladu viděli u serva, se může stát, že nám princip ovládání připojeného zařízení zůstane skryt díky vyžití ovládací knihovny. U připojeného zařízení tak nemusíme řešit, zda je ovládáno digitálními výstupy nebo třeba pomocí PWM signálu. Zkrátka jen načítáme nebo nastavujeme požadované hodnoty pomocí předem připravených programových bloků. Následující kapitola je právě věnována připojování takových zařízení ze sady Arduino MAXI Starter kit, kde již nebudeme řešit konkrétní ovládání pinů, ale využijeme sofistikovanější řízení pomocí knihoven. První takovou periférií modulu Arduino bude krokový motor.

Krokové motory, díky své zvláštní konstrukci, mohou být ovládány s vysokou přesností a bez jakýchkoli mechanismů zpětné vazby. Motor je tvořen několika elektromagnetickými cívkami, které jsou v určitém pořadí zapínány sérií elektrických impulsů a tím dokáží velmi přesně a v definovaných „krocích“ otáčet rotorem s hřídelí ve zvoleném směru. Existují dva typy krokových motorů – unipolární a bipolární. Je velmi důležité, abychom věděli, s jakým typem pracujeme. V následujícím experimentu použijeme krokový motor unipolární.

Modul Arduino nebo podobné kontroléry nemohou přímo řídit krokové motory. Na to je požadovaný proud pro ovládací cívky příliš veliký. Je tedy nezbytné připojit řídicí obvod (tzv. řadič nebo též driver), který proud do cívek posílí z externího zdroje. I v tomto experimentu tedy kromě krokového motoru budeme používat i modul řadiče krokového motoru.

Použité komponenty

  • modul Arduino
  • USB kabel
  • potenciometr 50 kΩ
  • krokový motor
  • modul řadiče krokového motoru
  • nepájivé pole
  • vodiče pro nepájivé pole + vodiče „samec-samice“

Princip

Námi použitý krokový motor je čtyřfázový a používá stejnosměrné napájecí napětí. Při postupném napájení jednotlivých cívek motoru (dle příslušného pořadí) se začne motor otáčet krok za krokem. Schematický diagram čtyřfázového krokového motoru je znázorněn na obrázku níže.

princip krokoveho motoru

Uprostřed motoru je rotor vytvořený z permanentního magnetu ve tvaru ozubeného kola (např. 6 zubů, označíme je 0–5). Okolo rotoru je více magnetických pólů (zde např. 8). Každé dva protilehlé póly jsou vytvořené spojenými cívkami. Takže tento stator motoru tvoří čtyři páry cívek – označme je od A do D. Tyto cívky se nazývají fáze a mají čtyři vodiče připojené ke spínačům SA, SB, SC a SD. Na začátku je spínač SB zapnutý, spínače SA, SC a SD jsou vypnuty a magnetické póly ve fázi B jsou srovnány s ozubením 0 a 3 rotoru. Současně zuby 1 a 4 vytváří částečně střídavé uspořádaní zubů cívek C a D fází. Zuby 2 a 5 vytvářejí plně střídavé uspořádání zubů s póly D a A fáze. Když je spínač SC zapnutý, spínače SB, SA a SD jsou vypnuty, rotor se otáčí pod magnetickým polem C vinutí a mezi zuby 1 a 4. Potom se zub 1 a 4 se vyrovná s magnetickými póly vinutí fáze C. Pak zuby 0 a 3 odjíždí mezi póly fází A a B, zuby 2 a 5 se naopak přibližují k magnetickým pólům A až D. Postupným zapínáním jednotlivých fází se tyto situace neustále opakují. Zapínáním fází A, B, C a D se rotor začne jednotlivými kroky otáčet v pořadí A, B, C a D.

Čtyřfázový krokový motor má tři provozní režimy:

  • jednoduchý čtyřkrokový (zapnutá vždy jen jedna fáze: A–B–C–D–A–…)
  • dvojitý čtyřkrokový (zapnuty vždy dvě následující fáze: AB–BC–CD–DA–AB–…)
  • osmikrokový (zapnutá jedna fáze, pak dvě následující a jedna fáze: A–AB–B–BC–C–CD–D–DA–A–…)

Krokový úhel pro oba čtyřkrokové režimy je stejný, ale hnací moment je pro jednoduchý (samostatný) čtyřkrokový režim menší. Krokový úhel pro osmikrokový režim je poloviční, než u režimů čtyřkrokových. Osmistupňový provozní režim tak může udržet vysoký hnací moment a zlepšit přesnost řízení. V tomto experimentu si vyzkoušíme osmikrokový režimu.

krokovy motor a driver ULN2003

Pro řízení našeho krokového motoru použijeme řadič krokového motoru ULN2003. Jedná se o invertorový obvod, což znamená, že když je vstup na vysoké úrovni (HIGH), odpovídající výstup obvodu ULN2003 je na nízké úrovni (LOW), a naopak. Tedy pokud je na vstupu IN1 vysoká úroveň a nízká úroveň na vstupech IN2, IN3 a IN4, pak je výstup OUT1 na nízké úrovni a všechny ostatní výstupy (OUT2OUT4) jsou na úrovni vysoké. Konkrétně to bude znamenat, že spínač SA se zapne a krokový motor se otočí do dané polohy. Pro řízení tedy budeme dávat krokovému motoru určitou časovou posloupnost sepnutí spínačů SA–SD, které nám zastupuje obvod ULN2003.


Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. Propojení modulu Arduino a modulu ovladače krokového motoru uvádí tabulka.

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema
Modul ULN2003 Modul Arduino
IN1 8
IN2 9
IN3 10
IN4 11
UCC 5 V
GND GND

Krok 2: V prostředí mBlock sestavíme následující program.


ikona vysvetleni Vysvětlení kódu

První částí, ještě před hlavní nekonečnou smyčkou „opakuj stále“, je nastavení parametrů použitého krokového motoru. Jsou zde nastaveny výstupní digitální piny jednotlivých cívek krokového motoru a počet kroků na otáčku. Zde je třeba si uvědomit, že údaj o počtu kroků na otáčku se vztahuje na počet kroků na jednu otáčku rotoru motoru a nikoliv osy, která z něj vychází. Některé krokové motory bývají ve své konstrukci doplněny převodovkou, která je jejich velikost kroku redukuje. Takový případ je i u námi použitého krokového motoru 28BYJ-48. I když to na první pohled není poznat, je tento krokový motor osazen redukční převodovkou 1/64. Proto na jednu otáčku motoru (dle katalogového listu) připadá jen 32 kroků, což odpovídá i námi zadanému parametru v programu. Pokud bychom ale počítali kroky na výstupní ose motoru (tedy až za převodovkou), bylo by jich na jednu otáčku 2048. Obdobně musíme uvažovat při zadávání parametru počtu otáček za minutu.

Hlavní část programu načítá analogovou hodnotu z potenciometru a vytváří rozdíl s předchozí hodnotou, která je uchována v proměnné previous. Rozdíl těchto hodnot určuje počet kroků, které má motor vykonat. Pootočíme-li potenciometr směrem k vyšším hodnotám je rozdíl kladný a krokový motor se otočí jedním směrem. Čím větší je rozdíl, tedy čím více otočíme potenciometrem, tím více se motor otočí. Pokud otočíme potenciometr na druhou stranu, je rozdíl hodnot záporný, motor má vykonat záporný počet kroků, což odpovídá opačnému směru otáčení. Pokud se potenciometrem neotáčí, je rozdíl nulový a motor se nikam neotáčí.


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Po spuštění kódu můžeme otáčet potenciometrem a vidíme, že tím ovládáme natočení krokového motoru. Nastavení polohy potenciometru určuje, kam se bude otáčet hřídel krokového motoru.

Pohled na experiment