В общем, накидал пока такой вариант в kicad, получается не так уж и плохо:
Из PCA9685 (16xPwm Led Controller) управляем сигналами ШИМ на левое и правое плечо полумоста драйвера - "какое надо". 12-и битный ШИМ с допустимым диапазоном частот от 25гц до 2кГц, согласно даташиту на этот контроллер. Не густо, но вполне терпимо, особенно если учесть что на хорошей потребляемой мощности и вращении с малыми оборотами частоту ШИМ полезно снижать, а не растить (дольше период воздействия на обмотки - больше тяга мотора).
Одной PCF8574 управляем направлением вращения (Dir_xx) "туда/обратно", и ещё 2шт для приема сигналов энкодера мотора с прерыванием МК.
Каждая PCF8574 энкодерной части получает одноименные сигналы энкодеров и они генерируют каждая свое прерывание, что должно упростить ПО, работающее сразу с 8-ю моторами.
Программное управление по шине I2C, вполне терпимое:
1. Отключаем ШИМ на моторе, меняем направление вращения сигналом Dir и снова задаем ШИМ мотору в нужную сторону линией "a" или "b"..
Можно добавить ещё одну PCF8574 и разделить управление верхними плечами полу-мостов сделав сигналы Dir_xA и Dir_xB по аналогии, с целью иметь возможность отключая верхние плечи - включать ОБА ШИМ сигнала для активного торможения двигателем (короткозамкнутые обмотки) "периодически" с указанным заполнением ШИМ... нигде не видел решения по регулировке такого режима.. а ведь это д.б. интересным - управляемая сила торможения.
Разьемы выбраны совместимые с Лего EV3, NXT но .. можно поставить любые.
Ещё можно разделить силовую и управляющую земли и воткнуть резисторы для измерения токов драйверов, повесив их на входы АЦП Меги .. их все равно 16.
Интересно, надо ? Предлагайте, критикуйте ..
P.S. Да, забыл .. ТТХ
Примененные полумосты AO4616 (30в, 7А), но можно и те что на схеме. В этом случае потребляемый ток мотора уменьшается до 5А.
Схема остается работоспособной при питании моторов от 6.5в до 30в VAA. Ток мотора до 5А при питающем 12в - держит, проверено прошлым опытом.
Из PCA9685 (16xPwm Led Controller) управляем сигналами ШИМ на левое и правое плечо полумоста драйвера - "какое надо". 12-и битный ШИМ с допустимым диапазоном частот от 25гц до 2кГц, согласно даташиту на этот контроллер. Не густо, но вполне терпимо, особенно если учесть что на хорошей потребляемой мощности и вращении с малыми оборотами частоту ШИМ полезно снижать, а не растить (дольше период воздействия на обмотки - больше тяга мотора).
Одной PCF8574 управляем направлением вращения (Dir_xx) "туда/обратно", и ещё 2шт для приема сигналов энкодера мотора с прерыванием МК.
Каждая PCF8574 энкодерной части получает одноименные сигналы энкодеров и они генерируют каждая свое прерывание, что должно упростить ПО, работающее сразу с 8-ю моторами.
Программное управление по шине I2C, вполне терпимое:
1. Отключаем ШИМ на моторе, меняем направление вращения сигналом Dir и снова задаем ШИМ мотору в нужную сторону линией "a" или "b"..
Можно добавить ещё одну PCF8574 и разделить управление верхними плечами полу-мостов сделав сигналы Dir_xA и Dir_xB по аналогии, с целью иметь возможность отключая верхние плечи - включать ОБА ШИМ сигнала для активного торможения двигателем (короткозамкнутые обмотки) "периодически" с указанным заполнением ШИМ... нигде не видел решения по регулировке такого режима.. а ведь это д.б. интересным - управляемая сила торможения.
Разьемы выбраны совместимые с Лего EV3, NXT но .. можно поставить любые.
Ещё можно разделить силовую и управляющую земли и воткнуть резисторы для измерения токов драйверов, повесив их на входы АЦП Меги .. их все равно 16.
Интересно, надо ? Предлагайте, критикуйте ..
P.S. Да, забыл .. ТТХ
Примененные полумосты AO4616 (30в, 7А), но можно и те что на схеме. В этом случае потребляемый ток мотора уменьшается до 5А.
Схема остается работоспособной при питании моторов от 6.5в до 30в VAA. Ток мотора до 5А при питающем 12в - держит, проверено прошлым опытом.
Изменено: