Странное поведение шаговых двигателей
Я работаю в проекте, в котором мне нужно управлять одновременно тремя шаговыми двигателями NEMA17. Для этого я использую три драйвера DRV8825, работающих на 12 В, подключенных к Arduino MEGA.
Этот Arduino генерирует импульсы в скоростных рампах, чтобы у нас было ускоренное движение для достижения цели.
Схема, которую я использую для подключения драйверов, - это та, которую рекомендует производитель:
С помощью цифрового анализатора я вижу, что мой скачок скорости генерируется правильно:
На этом рисунке ниже вы можете видеть, как генерируются шаги (ST) после установки направления (DR) для каждого из двигателей. Время ожидания после изменения направления больше необходимого, установленного изготовителем, а также увеличивает продолжительность ступенчатых импульсов.
После этого двигатели должны совершать ускоренное движение до достижения определенного положения, а затем замедляться и останавливаться.
Хотя я сталкиваюсь с проблемой, что в некоторых случаях один из двигателей (не всегда один и тот же) делает несколько шагов в противоположном направлении движения и после этого выполняет ожидаемое движение. Это приводит к тому, что, даже заставляя три двигателя выполнять одно и то же движение, один из них заканчивает работу по-разному.
Я пытался сменить драйверы, но происходит то же самое. Кроме того, как я уже говорил, я проверил правильность генерации импульсов.
Я хотел бы знать, сталкивался ли кто-нибудь с подобной проблемой или знает какую-либо причину, которая может привести к такому странному поведению.
- Спасибо.
@Izar Thomson, 👍1
Обсуждение1 ответ
Лучший ответ:
Таким образом, по-видимому, двигатели, которые я использую, имеют оптимальный рабочий диапазон, который начинается не с 0, а с 200PPS. Хотя, даже правильно генерируя скоростные пандусы, при использовании низкого ускорения мои двигатели будут работать в течение нескольких шагов за пределами этого оптимального диапазона, вызывая странные движения в начале движения.
Для того чтобы разрешить его, эти неоптимальные низкие скорости во избежание пока ускоряющся так, что моторы войдут сразу к оптимальной рабочей зоне.
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
/fault-активный низкий выход, @jsotola