Как управлять 6 шаговыми двигателями с помощью Arduino?
Я хотел бы управлять 6 шаговыми двигателями (0,225 А, 2 В) с помощью Arduino. Я думал использовать водителей автомобилей с веб-сайта Pololu, например DRV8834.
Возможно ли это?
Есть какие-нибудь предложения для другого типа водителя?
Нам нужно ограничить ток, но я также получил совет использовать ШИМ-сигнал для управления шаговым двигателем. Есть какие-нибудь советы по этому поводу?
@Marta, 👍1
Обсуждение3 ответа
Вы можете создать свой собственный пользовательский щит с помощью Arduino mega и 6 шаговых палочек
http://www.amazon.com/Hobbypower-StepStick-4-layer-DRV8825-Stepper/dp/B00NCSK6T2/ref=sr_1_1?ie=UTF8&qid=1455740571&sr=8-1&keywords=DRV8825
Вот ссылка на шаговые палочки, о которых я говорил. Чтобы это сработало, вам нужно будет спаять макет и настроить arduino так, чтобы он принимал контакты с макета. Вам также понадобится источник питания 12 В, чтобы обеспечить питание двигателей
Почему DRV8825, а не DRV8834?, @Dave X
Да, это возможно, конечно, все возможно!
Этим драйверам как минимум нужны две линии ввода-вывода: DIR и STEP. Пульсирующий ШАГ делает один шаг вперед или назад (в зависимости от направления).
Для 6 шаговых устройств вам, следовательно, потребуется 12 выходов от Arduino. (Какой Arduino, пожалуйста? выберите тот, у которого достаточно ввода-вывода, или иным образом используйте расширитель вывода I2C).
M0 и M1 управляют микрошаговым режимом - настраивайте по своему желанию. CFG находится на высоком уровне на этой плате Pololu, что позволяет использовать плату в качестве шагового драйвера из коробки.
Для шаговых двигателей (если вы хотите, чтобы они работали на полный крутящий момент) требуется привод постоянного тока. (В недорогих решениях используется привод постоянного напряжения, например, ULN2803, однако они не могут получить слишком большой крутящий момент). К счастью, этот драйвер может сделать это хорошо, потенциометр устанавливает максимальный ток.
Шаговые двигатели нуждаются в значительном токе при переходе к следующему шагу. Однако, в отличие от двигателей постоянного тока, даже неподвижное положение потребляет ток, что в конечном итоге приводит к нагреву двигателя. Поэтому вы должны ограничивать ток, когда двигатель не движется. Обычно это делается с помощью программного обеспечения (драйвер не знает, когда наступит время для длительного периода остановки).
Способом ограничения тока двигателя при остановке может быть либо аналоговый ограничитель, либо ШИМ. Этот драйвер не имеет специального ввода для этой цели. Вы можете сделать две вещи:
- используйте меньший ток привода (используйте потенциометр) - это может хорошо работать, если вас устраивает крутящий момент
- используйте спящий режим драйвера с ШИМ со стороны Arduino.
Это последнее решение требует, чтобы вы:
- подключите все контакты EN всех 6 драйверов и подключите его к одному контакту Arduino, который имеет ШИМ (т. е.
analogWrite()
) - доведите это до 0, затем начните движение
- как только движения будут завершены, используйте
analogWrite()
и установите значение, скажем, 128 (обычно половина тока перемещения является хорошим предположением для удержания тока).
Таким образом, когда двигатели остановлены, ток удержания будет меньше, поэтому двигатели не нагреваются.
Мы также можем использовать простой драйвер для шагового двигателя 6 ... или, если мы хотим управлять многими шаговыми двигателями, мы можем использовать там резистор сдвига битов 74HC595. для драйвера ULN20003 IC драйвер или l293d IC.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Не могу контролировать скорость двигателей постоянного тока с помощью analogWrite()
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- L298N издает звуковые сигналы и дает сбой при получении определенных значений AnalogWrite
- Ускорение двигателя постоянного тока с помощью ШИМ
- Контакты ШИМ серводвигателей, Arduino Uno
- Попытка контролировать скорость двигателя постоянного тока с помощью ПИД
Два вопроса: 1) Вам нужны однополярные или биполярные степперы? 2) Какого конечного результата вы на самом деле хотите достичь?, @Majenko
Вы можете установить ток с помощью потенциометра на плате DRV8834. ШИМ не имеет смысла для шаговых двигателей. ШИМ имеет смысл только для обычных двигателей постоянного тока. Скорее всего, вам нужно посмотреть, какой двигатель вам нужен для вашего приложения, прежде чем принимать решение о драйвере двигателя., @Gerben
Мы уже решили использовать шаговые двигатели. У меня есть 6 биполярных степперов. Мне нужно просто двигать вперед и назад 6 проводов, которые соединены с шаговыми двигателями с помощью простого механизма. Достаточно ли у меня контактов в Arduino для 6 драйверов двигателей?, @Marta
Ваши требования настолько близки к типичной электронике 3D-принтера, что вы могли бы многому научиться у этих проектов, даже если вам придется создавать что-то свое., @Chris Stratton
Мы также можем использовать простой драйвер для 6 шаговых двигателей ... или, если мы хотим управлять многими шаговыми двигателями, мы можем использовать там битовый сдвиг Resister 74HC595. для драйвера ULN20003 IC или l293d IC., @Rajpal Vishwakarma