Много шаговых двигателей

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем BeginnerArdunio, 12 июл 2015.

  1. Добрый день! Подскажите, пожалуйста, каким образом можно подключить и одновременно контролировать большое количество шаговых двигателей (больше тридцати). Двигатели должны вращаться отдельно друг от друга.
    В интернете вижу несколько разных shields но каждый дает по отдельности обычно 2 - 4 новых подключения (да и дорогие обычно).
    Думаю про использование нескольких сдвиговых регистров 74hc595, но нигде нет примеров их программирования под шаговые двигатели - только на светодиоды.

    Двигатели обычные - 28byj-48. Спасибо!
     
  2. geher

    geher Гуру

    Если использовать специализированный драйвер шагового двигателя, то все примерно как со светодиодамии получается. На каждый двигатель по драйверу, на каждый драйвер по две цифровых линии.
    Эти пары линий повесить на выходы сдвиговых регистров.
    Соответственно, задвигаемый в каскад сдвиговых регистров массив бит будет содержать состояния этих линий.
    С изменением линии управления направлением все просто, надо установить соответствующий бит в соответствующее значение.
    Для выполнения на конкретном двигателе очередного шага нужно сначала установить соответствующий бит в единицу, загнать всю последовательность в регистр, а потом, через время, определяемое необходимой длительностью импульса, этот бит установить в 0 и еще раз загнать все в регистр.
    Можно это проделывать и одновременно для нескольких двигателей, для которых надо сделать очередной шаг.
     
  3. vvr

    vvr Инженерище

    глубоко не вникал, но вращаться будут вероятно ну очень медленно...
     
  4. Ember

    Ember Нерд

    16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685 такое не подойдет?
     
  5. Faberge

    Faberge Administrator Администратор

    Намучаетесь программировать и отлаживать код с таким количеством сдвиговых регистров. Проще взять парочку многовыводных мк и соединить их каналом, имхо.
     
  6. andriano

    andriano Нерд

    Собственно, если у двигателя только три состояния: крутится вправо, крутится влево и стоит, то никаких проблем для осуществления этого на сдвиговых регистрах не вижу. А если нужен ШИМ, то его нужно будет делать программно.
     
  7. Faberge

    Faberge Administrator Администратор

    Не вводите человека в заблуждение, нету у ШД ШИМа, только микрошаг.
     
  8. andriano

    andriano Нерд

    Да, что-то главного я и не приметил. Ну, шаги совершаются гораздо реже, так что проблем в реализации не вижу.
    Завести массив байтов по числу двигателей, которые будут хранить состояние последних.
    Организовать цикл с нужной частотой (примерно как мигание светодиода без delay).
    На каждом проходе основного цикла (loop) организовать цикл по двигателям, где проверять, в каком состоянии находятся двигатели и не нужно ли сделать очередной шаг. Соответственно менять байты состояния.
    Когда состояния всех двигателей будут определены, "упаковать" их в битовый массив управляющих воздействий и этот массив отправлять на сдвиговые регистры.
     
  9. Un_ka

    Un_ka Гуру

    Ну и что вышло или повесился?
    :)