Попытка понять постоянную скорость AccelStepper

Я начинаю изучать библиотеку AccelStepper для управления шаговыми двигателями для проекта, над которым я работаю. Я могу заставить шаговые двигатели работать с основными примерами, которые используют ускорение.

Я знаю, что для частей или всего проекта я хочу использовать постоянную скорость, поэтому я открыл демо с постоянной скоростью: https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library/blob/master/examples/Accel_ConstantSpeed/Accel_ConstantSpeed.ino

#include <Wire.h>
#include <AccelStepper.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_StepperMotor *myStepper1 = AFMS.getStepper(200, 2);

void forwardstep1() {  
  myStepper1->onestep(FORWARD, SINGLE);
}
void backwardstep1() {  
  myStepper1->onestep(BACKWARD, SINGLE);
}

AccelStepper Astepper1(forwardstep1, backwardstep1); 

void setup()
{  
   Serial.begin(9600);
   Serial.println("Stepper test!");
  
  AFMS.begin();  // create with the default frequency 1.6KHz

  Astepper1.setSpeed(50);   
}

void loop()
{  
   Astepper1.runSpeed();
}

(Я использую крыло шагового двигателя adafruit)

Я загрузил его в свой arduino, и он работает, вал вращается, но он делает это очень медленно. Я решил, что это имеет смысл, потому что он установлен на скорости 50, поэтому я попытался увеличить скорость:

Astepper1.setSpeed(200);

Но скорость, кажется, все та же. Учитывая, что это 200-шаговый двигатель, а setSpeed-шаги в секунду, вы думаете, что это будет довольно быстро.

Я уверен, что это связано с моим непониманием того, как работает библиотека, но мне трудно понять, как правильно использовать методы постоянной скорости.

, 👍1

Обсуждение

пожалуйста, поставьте пробел перед " https://` в URL-адресе ... без него ссылка не кликабельна, @jsotola

попробуйте другие примеры скетчей, @jsotola

Эй, @jsotola, я исправил ссылку. спасибо за этот улов. Кроме того, я попробовал другие демо-скетчи. Демо-версии на основе ускорения работают и даже StackingTest.ino, которая не использует постоянную скорость напрямую, но делает индивидуальный шаг без ускорения, и это работает, но я все еще не могу понять, почему сами методы постоянной скорости не работают так, как ожидалось., @Chris Schmitz

Я только что понял, что тест укладки не использует библиотеку accelstepper, так что да, все еще в недоумении :(, @Chris Schmitz

@jsotola, я уже все понял. См.Мой ответ ниже., @Chris Schmitz


1 ответ


1

Поэтому я закончил погружением в исходный код библиотеки AccelStepper, чтобы выяснить, в чем проблема, и оказалось, что в их примере кода отсутствовал вызов метода, в частности вызов setMaxSpeed в функции настройки:

void setup()
{
    Serial.begin(9600); // настройка последовательной библиотеки со скоростью 9600 бит / с
    Serial.println("Stepper test!");

    AFMS.begin(); // create with the default frequency 1.6KHz

    // ! Обратите внимание, что вам необходимо установить максимальную скорость, иначе шаговый двигатель будет
    // ! делать шаг только один раз за интервал, независимо от того, какое значение "setSpeed" вы даете
    Astepper1.setMaxSpeed(1000);

    Astepper1.moveTo(targetDistance);
    Astepper1.setSpeed(targetSpeed);
}

Если вы посмотрите на метод setSpeed в библиотеке, вы заметите ограничение на значение скорости:

constraining the speed

Метод constrain принимает значение скорости, а затем низкое и высокое, которые библиотека accelstepper устанавливает в переменную private _maxSpeed. Если скорость находится за пределами этого диапазона, она установит значение, равное низкому или высокому переданному значению.

constrain code

Это означает, что если вы не вызовете setMaxSpeed, библиотека будет использовать значение _maxSpeed по умолчанию, назначенное во время построения, которое соответствует стандарту isss 1.0:

default max speed

Таким образом, чтобы правильно использовать методы постоянной скорости, вам необходимо обязательно включить вызов setMaxSpeed в свой код перед вызовом setSpeed, вероятно, в функции настройки.

Я также снял видео-объяснение, чтобы поделиться им со своими коллегами. Вы можете увидеть это здесь: https://vimeo.com/438272826

,