Перевод analogWrite() в формулу рабочего цикла ШИМ

Мы можем использовать функцию analogWrite(int x) для цифровых выводов, которые поддерживают ШИМ, поскольку любой микроконтроллер имеет встроенный генератор ШИМ. Для заданного x и для Arduino Uno какова формула для расчета рабочего цикла генерируемого сигнала ШИМ? Спасибо

, 👍0


2 ответа


4

На контактах 5 и 6 (которые управляются таймером 0):

  • рабочий цикл = (x+1)/256, за исключением x = 0, что дает рабочий цикл 0.

На других контактах ШИМ:

  • рабочий цикл = x/255

Разница заключается в том, что Таймер 0, который обеспечивает время для millis(), micros() и delay() настраивается в режиме «быстрый Режим «ШИМ», в то время как другие таймеры находятся в режиме «ШИМ с корректной фазой»

,

0

Рабочий цикл = (x/255)×100%

x — значение, передаваемое функции analogWrite(), в диапазоне от 0 до 255. Коэффициент заполнения выражается в процентах, представляя собой долю времени, в течение которого сигнал включен, по сравнению с общим периодом сигнала ШИМ.

,