Добрый день! Подскажите, пожалуйста, каким образом можно подключить и одновременно контролировать большое количество шаговых двигателей (больше тридцати). Двигатели должны вращаться отдельно друг от друга. В интернете вижу несколько разных shields но каждый дает по отдельности обычно 2 - 4 новых подключения (да и дорогие обычно). Думаю про использование нескольких сдвиговых регистров 74hc595, но нигде нет примеров их программирования под шаговые двигатели - только на светодиоды. Двигатели обычные - 28byj-48. Спасибо!
Если использовать специализированный драйвер шагового двигателя, то все примерно как со светодиодамии получается. На каждый двигатель по драйверу, на каждый драйвер по две цифровых линии. Эти пары линий повесить на выходы сдвиговых регистров. Соответственно, задвигаемый в каскад сдвиговых регистров массив бит будет содержать состояния этих линий. С изменением линии управления направлением все просто, надо установить соответствующий бит в соответствующее значение. Для выполнения на конкретном двигателе очередного шага нужно сначала установить соответствующий бит в единицу, загнать всю последовательность в регистр, а потом, через время, определяемое необходимой длительностью импульса, этот бит установить в 0 и еще раз загнать все в регистр. Можно это проделывать и одновременно для нескольких двигателей, для которых надо сделать очередной шаг.
Намучаетесь программировать и отлаживать код с таким количеством сдвиговых регистров. Проще взять парочку многовыводных мк и соединить их каналом, имхо.
Собственно, если у двигателя только три состояния: крутится вправо, крутится влево и стоит, то никаких проблем для осуществления этого на сдвиговых регистрах не вижу. А если нужен ШИМ, то его нужно будет делать программно.
Да, что-то главного я и не приметил. Ну, шаги совершаются гораздо реже, так что проблем в реализации не вижу. Завести массив байтов по числу двигателей, которые будут хранить состояние последних. Организовать цикл с нужной частотой (примерно как мигание светодиода без delay). На каждом проходе основного цикла (loop) организовать цикл по двигателям, где проверять, в каком состоянии находятся двигатели и не нужно ли сделать очередной шаг. Соответственно менять байты состояния. Когда состояния всех двигателей будут определены, "упаковать" их в битовый массив управляющих воздействий и этот массив отправлять на сдвиговые регистры.