Knihovna AccelStepper pro Arduino

Knihovna pro Arduino, určená k pokročilému řízení krokových motorů.

Knihovna je volně dostupná.

Programové prostředí Arduino obsahuje jednoduchou knihovnu pro řízení krokových motorů, ale – přiznejme si – že ta toho příliš neumí.

V čem se tedy Accelstepper liší?

  • ovládá motory, řízené 2, 3 nebo 4 pinovým driverem
  • ovládá motory s inteligentním driverem, řízeným signály STEP a DIR.

současně řídí více  krokových motorů, s nezávislým nastavením zrychlení, absolutní polohy, relativní polohy vzhledem k aktuální, konstantní rychlosti atd.

Tento článek si klade za úkol vás seznámit spíše s existencí této knihovny, než podrobně probírat její funkce, proto tedy jen stručně:

AccelStepper::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.

AccelStepper::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::runSpeedToPosition()

Otáčí motorem konstantní rychlostí, nastavenou funkcí setSpeed(), až do okamžiku dosažení cílové polohy. Nepoužívá zrychlení.

 AccelStepper::runToNewPosition(long position)

Otáčí motorem (se zrychlením i zpomalením) až do dosažení nové cílové pozice.

AccelStepper::runToPosition()

Otáčí motorem (se zrychlením i zpomalením) až do dosažení cílové pozice.

AccelStepper::setAcceleration(float acceleration)

Nastaví zrychlení / zpoždění.

AccelStepper::setCurrentPosition(long position)

Nastaví aktuální pozici motoru jako nulovou. Užitečné je to například při nastavení výchozí (home) pozice.

AccelStepper::setMaxSpeed (float speed)

Nastavuje maximální povolenou rychlost otáčení motoru. Funkce run() bude zrychlovat jen do této rychlosti.

AccelStepper::setSpeed(float speed)

Nastavuje velikost konstantní rychlosti otáčení motoru pro funkci runSpeed().

AccelStepper::stop()

Nastaví nejbližší novou cílovou pozici, ve které lze motor zastavit při aktuální nastavené rychlosti a zrychlení tak, aby nedošlo ke ztrátě kroku.

AccelStepper::move(long relative)

Nastavuje cílovou pozici relativně vzhledem k aktuální pozici

AccelStepper::moveTo(long absolute)

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.

Můžeme také pokládat dotazy:

AccelStepper::currentPosition()

Dotaz na aktuální polohu motoru.

AccelStepper::distanceToGo()

Dotaz na vzdálenost v krocích od současné do cílové pozice.

AccelStepper::speed()

Dotaz na poslední nastavenou rychlost

AccelStepper::targetPosition()   

Dotaz na poslední nastavenou cílovou polohu