Можно ли использовать цифровые контакты в качестве выхода ШИМ?

В настоящее время я работаю над проектом робототехники, которому требуется 16 выходов ШИМ для управления 16 сервоприводами. Можно ли использовать цифровые контакты Arduino Uno в качестве выходных контактов ШИМ с помощью кода?

Если это невозможно, какие микроконтроллеры вы предлагаете использовать в таком проекте?

, 👍2

Обсуждение

«[Библиотека сервоприводов](https://www.arduino.cc/en/Reference/Servo) поддерживает до 12 двигателей на большинстве плат Arduino и 48 на Arduino Mega»., @Edgar Bonet

Вы можете получить карту сервоконтроллера PCA9685 для мультиплексирования 16 сервоприводов через I2C. например: https://www.adafruit.com/product/815, @Dave X


2 ответа


0

ШИМ не используется для управления сервоприводами. Сервоприводам нужен импульс шириной от 1 до 2 мс, при этом ширина 1,5 мс соответствует центральному положению, который повторяется каждые 20 мс (50 Гц).

2560 имеет достаточно таймеров и библиотеку для управления до 48 сервоприводами.

,

Это _является_ формой ШИМ, хотя и не той ШИМ, которая генерируется analogWrite()., @Edgar Bonet


2

Только определенные цифровые выводы, отмеченные как ~PWM, могут генерировать сигнал PWM. В случае Arduino Uno выводы 3,5,6,9,10,11 управляются аппаратным PWM и отмечены на Uno как ~ или как-то так. Другие могут управляться программным ШИМ (хотя я бы не рекомендовал этого). Поскольку Arduino Uno использует ATMEGA328P, количество выводов такое же, как и у других плат с тем же процессором.

С другой стороны, если вы хотите использовать 16pins для PWM, лучше всего использовать Arduino MEGA 2560, поскольку его процессор поддерживает более 6 аппаратных выводов для PWM. Также вы получаете преимущество в виде большего объема памяти для хранения вашего кода

,