AccelStepper – první ochutnávka

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í.
AccelStepper_prvni_ochutnavka

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();
}

Download