Библиотека AccelStepper: enableOutputs() вызывает тряску

Я использую библиотеку Accelstepper. Когда я включаю шаговый двигатель через enableOutputs(), двигатель на мгновение встряхивается.

Оба двигателя при включении совершают небольшое движение. Если увеличить количество микрошагов, движение становится уже.

Есть ли способ полностью избежать этой проблемы?

Критическим моментом является то, что у меня есть пружина, которая «возвращает» двигатели в исходное положение при их отключении, но когда я снова включаю их, эта «тряска» выходит за пределы жесткого предела, вызывая шум, который я слышу, когда пытаюсь переместить шаговый двигатель, заблокированный механически (это называется остановкой?).

Одним из решений является увеличение микрошагов, но мне интересно, есть ли другое решение

Для настройки SetEnablePin я следовал этому руководству Это драйверы

Почему у меня возникла эта проблема?

    //шаговый двигатель
        AccelStepper stepperMagenta(AccelStepper::DRIVER, pulMagenta, dirMagenta, 0xff, 0xff, false);
        AccelStepper stepperYellow(AccelStepper::DRIVER, pulYellow, dirYellow, 0xff, 0xff, false);

      stepperMagenta.setPinsInverted(false, false, false);
      stepperYellow.setPinsInverted(true, false, false);
      stepperMagenta.setEnablePin(enaMagenta);
      stepperYellow.setEnablePin(enaYellow);
      stepperMagenta.disableOutputs();
      stepperYellow.disableOutputs();
      Magenta_enabled? stepperMagenta.enableOutputs() : stepperMagenta.disableOutputs();
      Yellow_enabled? stepperYellow.enableOutputs() : stepperYellow.disableOutputs();

, 👍0

Обсуждение

пожалуйста, включите минимальный полный код, демонстрирующий проблему, @jsotola


1 ответ


Лучший ответ:

0

Вы говорите, что отключаете двигатель, имея в виду, что вы отпускаете его, так что пружина возвращает его в какое-то положение.

Это положение связано с определённым углом. Но этот угол не соответствует заданному углу при повторном включении двигателя.

Таким образом, эта «тряска» неизбежна, поскольку вы даете команду двигателю на следующий соответствующий угол.

Одно из возможных решений — определить этот конкретный угол «холостого хода». К сожалению, из-за ограниченного количества оборудования вам придётся провести несколько экспериментов. В конечном итоге используйте найденный угол при запуске двигателя.

,