Контакты ШИМ серводвигателей, Arduino Uno

Я хотел понять, как люди подключают серводвигатель к контактам без ШИМ, поэтому начал поиск и прочитал, что библиотека сервоприводов использует таймер 1 контакта 9 и контакта 10, чтобы иметь возможность использовать другие контакты.

>

Я хотел бы задать несколько вопросов по этому поводу.

  1. Могу ли я одновременно подключить серводвигатель к контакту 12 путем эмуляции библиотеки, а другой сервопривод - к контакту 9, еще один к контакту 10 и еще один к контакту 11?

  2. Или при использовании библиотеки сервоприводов ШИМ на контактах 9 и 10 перестает работать?

  3. Тогда я мог бы через эмуляцию библиотеки подключить один сервопривод к контакту 7, другой к контакту 8, другой к 12 и еще один к 13?
  4. 4 эмуляции одновременно?

, 👍0

Обсуждение

Как вы планируете подражать этому? На самом деле, библиотека сервоприводов использует аппаратный ШИМ, но все равно можно использовать прерывания таймера для переключения любого контакта. Таким образом, результирующая ШИМ по-прежнему запускается аппаратно и, следовательно, остается гораздо более точной, чем чисто мягкая ШИМ. Тогда ШИМ на выводах OC все еще можно использовать..., @Sim Son

Библиотека использует только часть прерывания timer1, а не часть timer1-pwm., @Gerben


2 ответа


Лучший ответ:

1

Вы читали страницу библиотеки сервоприводов?

Библиотека поддерживает до 12 выходов сервоприводов. Вы можете использовать любой контакт, какой захотите.

Библиотека отключает функцию AnalogWrite() (PWM) на контактах 9 и 10.

,

1

Для тех, кто ищет дополнительную информацию о ШИМ в 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 делает это).

С уважением,

гл

,