Knihovna pro Arduino, určená k pokročilému řízení krokových motorů.
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