Accelstepper je knihovna pro Arduino, určená pro řízení krokových motorů, která umožňuje nastavit akceleraci, polohování, řízení konstatní rychlostí a další funkce.
Základní vlastnosti
Můžete vytvořit více instancí knihovny AccelStepper s unikátním pojmenováním pro každý řízený motor. Knihovna AccelStepper může řídit libovolný počet motorů, pokud budete dostatečně často volat jejich funkce „Run()“.
Pojmenování a nastavení nejběžnějších druhů motoru
Při vytváření instance knihovny jsme si pojmenovali řízený motor (mujmotor) a můžeme mu určit způsob ovládání
AccelStepper mujmotor(1, 2, 3);
Krokový motor s inteligentním driverem (mód 1) , řízeným signály STEP (na pinu D2) a DIR (na pinu D3).
nebo
AccelStepper mujmotor(2, 2, 3);
Bipolární motor, řízený H-můstky (mód 2), řízenými signály na pinech D2 a D3
nebo
AccelStepper mujmotor(4, 2, 3, 4, 5);
Unipolární krokový motor (mód 4), řízený čtyřmi tranzistory, připojenými na piny D2, D3, D4 a D5.
Řídící signály
mujmotor.setMaxSpeed(float speed);
Nastavuje maximální povolenou rychlost otáčení motoru. Funkce run() bude zrychlovat jen do této rychlosti.
Pozor: maximální dosažitelná rychlost záleží na procesoru a jeho taktovací frekvenci.
mujmotor.setAcceleration(float acceleration);
Nastaví zrychlení v krocích za sekundu na druhou; musí být větší než 0,0. Provádění této funkce je časově náročné, protože vyžaduje výpočet odmocniny. Nevolejte proto častěji, než je nutné.
Pozicování
mujmotor.moveTo(long absolute);
Tato funkce nastavuje cílovou polohu. Funkce run(), se bude snažit při každém volání otočit motorem o jeden krok ze současné pozice směrem k cílové pozici, zadané při posledním volání této funkce.
mujmotor.move(long relative);
Nastavuje cílovou pozici relativně vzhledem k aktuální pozici
mujmotor.currentPosition();
Dotaz na aktuální polohu motoru.
mujmotor.distanceToGo();
Dotaz na vzdálenost v krocích od současné do cílové pozice.
mujmotor.run();
Funkce při každém volání otočí motorem o jeden krok, pokud je to nutné k dosažení cílové pozice; přitom bere v úvahu i velikost zrychlení a zpoždění. Funkci je třeba volat co nejčastěji, nejméně však jedenkrát za minimální periodu krokování, nejlépe v hlavní smyčce programu.
mujmotor.runToPosition();
Otáčí motorem (se zrychlením i zpomalením) až do dosažení cílové pozice.
Nepoužívejte ve smyčce, která zpracovává událostí, protože funkce blokuje další provádění programu až do doby dosažení nové cílové pozice.
Řízení rychlosti otáčení
mujmotor.setSpeed(float speed);
Nastavuje velikost konstantní rychlosti otáčení motoru pro funkci runSpeed().
mujmotor.runSpeed();
Po každém volání pootočí motorem o jeden krok. Rychlost krokování je konstantní, nastavená funkcí setSpeed(). Funkci runSpeed() je třeba volat co nejčastěji, nejméně však jedenkrát za periodu krokování.
Demonstrační program
#include <AccelStepper.h> AccelStepper Xaxis(1, 2, 3); // pin 2 = step, pin 3 = direction AccelStepper Yaxis(1, 4, 5); // pin 4 = step, pin 5 = direction AccelStepper Zaxis(1, 6, 7); // pin 6 = step, pin 7 = direction void setup() { Xaxis.setMaxSpeed(400); Yaxis.setMaxSpeed(400); Zaxis.setMaxSpeed(400); Xaxis.setSpeed(220); Yaxis.setSpeed(125); Zaxis.setSpeed(80); } void loop() { Xaxis.runSpeed(); Yaxis.runSpeed(); Zaxis.runSpeed(); }