Использование транзисторов для минимизации количества контактов Arduino, используемых для этого драйвера шагового двигателя.

Хорошо, я очень мало знаю о том, о чем сейчас спрашиваю, но вот суть:

Я хочу построить станок с ЧПУ из старых дисководов. Я купил пару ИС L293D с двойным Н-мостом для управления шаговыми двигателями, и я хочу взаимодействовать с grbl. Проблема, с которой я, кажется, сталкиваюсь при разработке правильной схемы для этого, заключается в том, что схемы для управления шаговыми двигателями с L293D включают два входа, по одному для каждого направления, а grbl, похоже, использует только один вывод Arduino для направления для каждой оси.

Итак, что я придумал, так это использование транзисторов pnp и npn, которые действуют как своего рода двухпозиционный переключатель, когда я подаю напряжение, один включается, другой выключается, и наоборот, так что в основном 1 и 0 управляют тем, что способ вращения двигателя, а «шаговый импульс» обеспечит фактическую мощность двигателя для его перемещения в этом направлении.

Мой вопрос: будет ли это работать, или то, что я сказал, полная ерунда? Я понимаю, что транзисторы pnp и npn представляют собой что-то вроде логического переключателя «обычно включено» или «обычно выключено», так что вот где я придумал это ... Что-то вроде того, как H-мост работает в первом место.

Спасибо, что нашли время, диаграммы, которые я смотрю, следующие:

grbl для контактов Arduino: http://www.electrodragon.com/w/images/e/e7/Grbl_Pin_Layout.png

L293D управляет шаговым двигателем: http://arduino.cc/en/uploads/Reference/bipolar_stepper_two_pins2.png

Ответы (2)

Я думаю, что вам действительно нужен расширитель ввода-вывода: http://www.digikey.com/product-detail/en/SX1505I087TRT/SX1505I087CT-ND/2272323

Это относительно простое цифровое устройство. Arduino будет связываться с расширителем ввода-вывода по некоторому стандартному протоколу связи (обычно I2C или SPI), а расширитель ввода-вывода шевелит контакты от имени контроллера.

Вместо того, чтобы использовать 12 контактов на Arduino для прямого управления мостами H, Arduino использует 2 контакта (в случае I2C) для связи с расширителем ввода-вывода, а расширитель ввода-вывода напрямую управляет контактами. Arduino скажет: «Хорошо, мистер IO Expander. Включите свой вывод 2 и выключите свой вывод 8», и расширитель ввода-вывода установит эти выводы соответствующим образом.

Шаговые двигатели обычно работают на частоте 20–50 кГц. Вы уверены, что эти расширители ввода-вывода I2C достаточно быстры? РЕДАКТИРОВАТЬ: глупо, достаточно «низкочастотных» контактов, таких как направление, включение и т. Д.
ВАУ, не знал об этих вещах, и я рад узнать об их существовании - я обязательно постараюсь как-то реализовать это в своем дизайне.
@eyashin Просто убедитесь, что вы можете переключать выходы достаточно быстро для своего приложения. Некоторые из них предназначены только для низкой скорости (например, управление светодиодами на индикаторе состояния), но другие имеют за собой немного логики и могут управлять ШИМ без постоянного ввода от uC.

Я думаю, что вы используете не тот чип для управления шаговым двигателем. Стиль чипа драйвера, который вы должны использовать, уже имеет входы шага и направления и будет подключаться непосредственно к плате Arduino, на которой работает GRBL.

Хотя в настоящее время доступно МНОГО таких устройств, мне нравится DRV8825 от TI. Это хорошо для около 1,5 А на фазу с максимальным напряжением питания 45 В. Он имеет возможность уменьшить ток катушки до минимального значения, необходимого для вашего конкретного двигателя.

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

Одним из таких поставщиков является Pololu: DRV8825 , и они предлагают комплект из 5 модулей драйверов по сниженной цене.

Также проверьте Geckodrive для более крупных (но более дорогих) модулей драйверов.

Да, это выглядит совершенно правильно для взаимодействия с GRBL, для последней итерации этого проекта я думаю, что я выберу несколько реальных драйверов шаговых двигателей. Спасибо, что указали мне правильное направление!