Как управлять 12 двигателями постоянного тока одновременно с помощью Arduino Uno?

Я использую Ардуино Уно. Мне нужно управлять 12 двигателями постоянного тока с номинальным напряжением 9 В и током 150 мА. определенно, я буду использовать полевые МОП-транзисторы и диод обратной ЭДС для каждого выхода ШИМ. Мне нужно знать, могу ли я использовать мультиплексор 74HC4051 для мультиплексирования одного выхода ШИМ от Arduino в 8 каналов, чтобы у меня было 2 мультиплексора (8 каналов). Я выполняю вышеуказанную задачу. У меня недостаточно контактов в Arduino, и мне нужно свести к минимуму использование цифровых контактов Arduino, поэтому я ищу метод мультиплексирования.

Можно ли использовать мультиплексор 74hc4051 для мультиплексирования ШИМ-сигнала? Частота ШИМ будет менее 200 кГц

Мне также нужно управлять несколькими двигателями одновременно.

Это "аналоговый" мультиплексор. Я думаю, вам следует использовать цифровой демультиплексор. Вроде 74HCT154. ШИМ идет в один из портов управления. A0..A3 выберите канал для управления. У вас есть один запасной контакт для включения/выключения.
Я не думаю, что мультиплексор - это именно то, что вам нужно. Возможно, вам нужен декодер.
@Oldfart как насчет 74HC4067?
Это снова аналоговый мультиплексор/демультиплексор. Как вы думаете, зачем нужен аналог? Ваш Arduino выводит цифровой сигнал, поэтому гораздо лучше оставаться в цифровом домене. С аналоговым переключателем могут возникать всевозможные проблемы (например, шум), которых нет у цифровых цепей. Извините, что говорю это, но если вы не понимаете, как сделать это с цифровой схемой, вам следует немного больше изучить тему, прежде чем продолжить свой проект.

Ответы (2)

Я подозреваю, что вам нужен PCA9685, 16-канальный ШИМ-контроллер. Он оптимизирован для управления светодиодами, но вы должны иметь возможность буферизовать выходы для приводных двигателей. Это интерфейс I2C.

Как вы думаете, с IC достаточно только MOSFET и диода bemf для выполнения этой работы?
@oppo -- если вам нужно, чтобы двигатели работали только в одном направлении, конечно
да. Мне нужно только одно направление

Вы можете использовать цифровой мультиплексор, но вы сможете ШИМ только для одного двигателя за раз.

Если вам нужно управлять 12 двигателями одновременно и независимо, возможно, будет дешевле использовать 13 Arduino — по одному на каждый двигатель, фактически выполняющий управление, и один «исполнительный», который решает, что должна делать сборка, и отправляет команды каждому из модулей. 12 рабов.