Контакты ШИМ серводвигателей, Arduino Uno
Я хотел понять, как люди подключают серводвигатель к контактам без ШИМ, поэтому начал поиск и прочитал, что библиотека сервоприводов использует таймер 1 контакта 9 и контакта 10, чтобы иметь возможность использовать другие контакты.
>Я хотел бы задать несколько вопросов по этому поводу.
Могу ли я одновременно подключить серводвигатель к контакту 12 путем эмуляции библиотеки, а другой сервопривод - к контакту 9, еще один к контакту 10 и еще один к контакту 11?
Или при использовании библиотеки сервоприводов ШИМ на контактах 9 и 10 перестает работать?
- Тогда я мог бы через эмуляцию библиотеки подключить один сервопривод к контакту 7, другой к контакту 8, другой к 12 и еще один к 13?
- 4 эмуляции одновременно?
@wesWWW, 👍0
Обсуждение2 ответа
Лучший ответ:
Вы читали страницу библиотеки сервоприводов?
Библиотека поддерживает до 12 выходов сервоприводов. Вы можете использовать любой контакт, какой захотите.
Библиотека отключает функцию AnalogWrite() (PWM) на контактах 9 и 10.
Для тех, кто ищет дополнительную информацию о ШИМ в Arduino, обязательно посетите эту страницу: http://www.righto.com/2009/07/secrets-of-arduino- pwm.html. Прочитав его, вы поймете, что такое программный и аппаратный ШИМ и каковы его ограничения.
Для программного ШИМ сервобиблиотека берет на себя один из трех таймеров Arduino. Таким образом, контакты 9,10 больше не доступны для analoWrite(), а Timer0 (контакты 5,6) и Timer2 (контакты 11,3) находятся в состоянии покоя.
Обратите внимание, что Arduino внутри себя должна использовать Timer0 для своих функций синхронизации (таких как delay(), milis() и т. д.).
Итак, чтобы ответить на ваш вопрос:
1) Да, можете, поскольку библиотека управляет вашими таймерами, она может выделить их нормально (хотя в качестве программной эмуляции).
2) Да и нет. Это работает для самой библиотеки, но может быть недоступно для других библиотек или для вашего кода. Пример: если вы хотите использовать его вместе с RH_ASK (библиотекой радиочастот), у вас возник конфликт использования таймера, и вам может потребоваться изменить конфигурацию одного из них для перехода к другому таймеру.
3) Да.
4) Да (при желании вы можете заставить все 20 контактов работать как ШИМ. Библиотека SoftPWM делает это).
С уважением,
гл
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Проектирование роботизированной руки с помощью Arduino Uno
- Почему задержка более 64 миллисекунд останавливает вращение серводвигателя? Я не использую «Servo.h», вместо этого я просто управляю длиной импульса.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Как заставить сервопривод вращаться на угол больше 180°
- Как управлять 6 шаговыми двигателями с помощью Arduino?
- Не могу контролировать скорость двигателей постоянного тока с помощью analogWrite()
Как вы планируете подражать этому? На самом деле, библиотека сервоприводов использует аппаратный ШИМ, но все равно можно использовать прерывания таймера для переключения любого контакта. Таким образом, результирующая ШИМ по-прежнему запускается аппаратно и, следовательно, остается гораздо более точной, чем чисто мягкая ШИМ. Тогда ШИМ на выводах OC все еще можно использовать..., @Sim Son
Библиотека использует только часть прерывания timer1, а не часть timer1-pwm., @Gerben