Учебники

Arduino — широтно-импульсная модуляция

Широтно-импульсная модуляция или ШИМ — это распространенный метод, используемый для изменения ширины импульсов в последовательности импульсов. ШИМ имеет много применений, таких как управление сервоприводами и регуляторами скорости, ограничивая эффективную мощность двигателей и светодиодов.

Основной принцип ШИМ

Широтно-импульсная модуляция в основном представляет собой прямоугольную волну с переменным высоким и низким временем. Базовый сигнал ШИМ показан на следующем рисунке.

PWM

Существуют различные термины, связанные с ШИМ —

  • On-Time — длительность сигнала времени высокая.

  • Off-Time — длительность сигнала времени низкая.

  • Период — представляет собой сумму времени включения и выключения сигнала ШИМ.

  • Рабочий цикл — Он представлен в процентах от времени, которое остается включенным в течение периода сигнала ШИМ.

On-Time — длительность сигнала времени высокая.

Off-Time — длительность сигнала времени низкая.

Период — представляет собой сумму времени включения и выключения сигнала ШИМ.

Рабочий цикл — Он представлен в процентах от времени, которое остается включенным в течение периода сигнала ШИМ.

период

Как показано на рисунке, T on обозначает время включения, а T off обозначает время выключения сигнала. Период представляет собой сумму времени включения и выключения и рассчитывается, как показано в следующем уравнении:

$$ T_ {total} = T_ {on} + T_ {off} $$

Рабочий цикл

Рабочий цикл рассчитывается как время включения периода времени. Используя рассчитанный выше период, рабочий цикл рассчитывается как —

$$ D = \ frac {T_ {on}} {T_ {on} + T_ {off}} = \ frac {T_ {on}} {T_ {total}} $$

функция analogWrite ()

Функция analogWrite () записывает аналоговое значение (волна ШИМ) на вывод. Его можно использовать для подсветки светодиода с разной яркостью или для привода двигателя на разных скоростях. После вызова функции analogWrite () вывод будет генерировать устойчивую прямоугольную волну указанного рабочего цикла до следующего вызова аналогаWrite () или вызова digitalRead () или digitalWrite () на том же выводе. Частота ШИМ-сигнала на большинстве контактов составляет приблизительно 490 Гц. На платах Uno и аналогичных платах контакты 5 и 6 имеют частоту приблизительно 980 Гц. Контакты 3 и 11 на Leonardo также работают на частоте 980 Гц.

На большинстве плат Arduino (с платами ATmega168 или ATmega328) эта функция работает на контактах 3, 5, 6, 9, 10 и 11. На плате Arduino Mega она работает на контактах 2–13 и 44–46. Старая версия Arduino Платы с ATmega8 поддерживают аналоговыйWrite () только на контактах 9, 10 и 11.

UNO PWM Pins

Arduino Due поддерживает analogWrite () на контактах 2–13 и контактах DAC0 и DAC1. В отличие от выводов PWM, DAC0 и DAC1 являются цифро-аналоговыми преобразователями и действуют как настоящие аналоговые выходы.

Вам не нужно вызывать pinMode (), чтобы установить вывод в качестве выхода перед вызовом analogWrite ().

analogWrite () Синтаксис функции

analogWrite ( pin , value ) ;

значение — коэффициент заполнения: от 0 (всегда выключен) до 255 (всегда включен).

пример