Использование широтно-импульсной модуляции (ШИМ) в Arduino

В этой статье мы рассмотрим принципы использования широтно-импульсной модуляции (ШИМ) в плате Arduino на основе схемы регулирования силы свечения светодиода.

Внешний вид конструкции для изучения принципов ШИМ в Arduino

Принципы работы широтно-импульсной модуляции (ШИМ)

Рассмотрим схему, изображенную на следующем рисунке. Как мы выясним, управляя скважностью модуляции ШИМ (PWM) можно регулировать силу свечения светодиода.

Принцип работы ШИМ

Если на представленном рисунке выключатель будет замкнут на протяжении некоторого времени, то на протяжении этого же времени лампочка будет гореть. Если переключатель будет замкнут в течение 8ms и будет разомкнут 2ms в течение интервала 10ms, тогда лампочка будет гореть только в течение интервала 8ms. В рассмотренном примере можно сказать, что среднее выходное напряжение (на лампочке) будет составлять 80% от напряжения батареи.

В другом случае выключатель замыкается на 5ms и размыкается на эти же самые 5ms в течение интервала 10ms, таким образом среднее напряжение на лампочке будет составлять 50% от напряжения батареи. Принято говорить, что если напряжение батареи 5В и цикл занятости составляет 50%, то среднее напряжение на оконечном устройстве (лампочке) будет составлять 2.5В.

В третьем рассмотренном на рисунке случае цикл занятости (duty cycle) составляет 20% и поэтому среднее напряжение на оконечном устройстве (лампочке) будет составлять 20% от напряжения батареи.

Более красочно принципы работы ШИМ показаны на следующих рисунках.

ШИМ с коэффициентом заполнения 50%

ШИМ с коэффициентом заполнения 10%

ШИМ с коэффициентом заполнения 90%

Рассмотрим какие возможности в плане ШИМ имеет плата Arduino.

ШИМ-контакты на плате Arduino Uno

Как показано на рисунке, плата Arduino UNO имеет 6 каналов ШИМ (по англ. – PWM, Pulse Width Modulation). Мы можем использовать ШИМ на любом из этих 6 контактов. В этом проекте мы будем использовать контакт 3 (PIN3).

Также достаточно наглядно работа ШИМ в практической задаче представлена в следующей статье — вентилятор на Arduino Uno, управляемый с помощью температуры.

Необходимые компоненты

Плата Arduino Uno
Источник питания с напряжение 5 В
Конденсатор 100 мкФ
Светодиод
Кнопка (2 шт.)
Резистор 10 кОм (2 шт.)

Работа схемы и программы

Схема устройства представлена на следующем рисунке.

Схема для пояснения принципов работы ШИМ в ArduinoСхема собрана на макетной плате. Хотя практически всем кнопкам присущ эффект «дребезга контактов» в данном случае не стоит беспокоиться о нем – нам он не помешает.

Управлять ШИМ модуляцией в плате Arduino очень просто в отличие, к примеру, от использования ШИМ в микроконтроллерах ATMEGA, в которых для выполнения этой задачи необходимо конфигурировать различные регистры и делать другие разнообразные установки – в Arduino всего этого делать не нужно.

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

То есть, чтобы сформировать ШИМ сигнал на соответствующем контакте платы Arduino, необходимо сделать две вещи:

1. pinMode(ledPin, OUTPUT)
2. analogWrite(pin, value)

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

После этого мы должны сгенерировать ШИМ сигнал на конкретном контакте Arduino с помощью функции “analogWrite(pin, value)”. Здесь переменная ‘pin’ обозначает номер контакта, на котором необходимо формировать сигнал ШИМ, в нашем случае этот будет контакт 3. А переменная value обозначает требуемый цикл занятости ШИМ, она может принимать значения от 0 (сигнал всегда выключен) до 255 (сигнал всегда включен). Мы будем увеличивать и уменьшать значение этой переменной с помощью кнопок, присутствующих на схеме.

Исходный код программы

Далее приведен исходный код программы с комментариями, поясняющими смысл отдельных команд.

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
50 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *