Можно ли использовать цифровые контакты в качестве выхода ШИМ?
В настоящее время я работаю над проектом робототехники, которому требуется 16 выходов ШИМ для управления 16 сервоприводами. Можно ли использовать цифровые контакты Arduino Uno в качестве выходных контактов ШИМ с помощью кода?
Если это невозможно, какие микроконтроллеры вы предлагаете использовать в таком проекте?
@Miguel, 👍2
Обсуждение2 ответа
ШИМ не используется для управления сервоприводами. Сервоприводам нужен импульс шириной от 1 до 2 мс, при этом ширина 1,5 мс соответствует центральному положению, который повторяется каждые 20 мс (50 Гц).
2560 имеет достаточно таймеров и библиотеку для управления до 48 сервоприводами.
Это _является_ формой ШИМ, хотя и не той ШИМ, которая генерируется analogWrite()
., @Edgar Bonet
Только определенные цифровые выводы, отмеченные как ~PWM, могут генерировать сигнал PWM. В случае Arduino Uno выводы 3,5,6,9,10,11 управляются аппаратным PWM и отмечены на Uno как ~ или как-то так. Другие могут управляться программным ШИМ (хотя я бы не рекомендовал этого). Поскольку Arduino Uno использует ATMEGA328P, количество выводов такое же, как и у других плат с тем же процессором.
С другой стороны, если вы хотите использовать 16pins для PWM, лучше всего использовать Arduino MEGA 2560, поскольку его процессор поддерживает более 6 аппаратных выводов для PWM. Также вы получаете преимущество в виде большего объема памяти для хранения вашего кода
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- ШИМ-сигнализация с Arduino: для чего использовать землю?
- Может ли Arduino UNO постоянно хранить код?
- Как сделать динамическое меню с подменю ( Arduino mega или Arduino Uno)
- Проблема с использованием Arduino Mega Timer2 с прерыванием PinChange
- GPS автономный робот
- Запуск кода кодировщика одновременно с другим кодом в Arduino
- Можно ли использовать GSM и Data Logger Shield одновременно на одном Arduino?
«[Библиотека сервоприводов](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