Библиотека 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();
@Luigi, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы говорите, что отключаете двигатель, имея в виду, что вы отпускаете его, так что пружина возвращает его в какое-то положение.
Это положение связано с определённым углом. Но этот угол не соответствует заданному углу при повторном включении двигателя.
Таким образом, эта «тряска» неизбежна, поскольку вы даете команду двигателю на следующий соответствующий угол.
Одно из возможных решений — определить этот конкретный угол «холостого хода». К сожалению, из-за ограниченного количества оборудования вам придётся провести несколько экспериментов. В конечном итоге используйте найденный угол при запуске двигателя.
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Запустить два степпера одновременно
- Могу ли я запретить библиотеке Stepper удерживать двигатель?
- Питание двух шаговых двигателей с драйверами A4988
- Управление функцией включения на драйвере микрошагового устройства
- Шаговый двигатель с датчиком HCSR-04
- Шаговый двигатель не работает с платой A4988
- Nema 17, Arduino Uno и шаговый двигатель ~2H42B
пожалуйста, включите минимальный полный код, демонстрирующий проблему, @jsotola