Что такое ШИМ и как она используется в Arduino

Содержание

Давайте разберёмся, что скрывается за аббревиатурой ШИМ, как это работает, для чего нужно и как мы можем использовать её в работе с Arduino.

    или иная совместимая плата;

  • светодиод (вот из такого набора, например);
  • резистор номиналом 190…240 Ом (вот отличный набор резисторов самых распространённых номиналов); ;
  • персональный компьютер со средой разработки Arduino IDE.

Инструкция по использованию ШИМ в Arduino

1 Общие сведенияо широтно-импульсной модуляции

Цифровые выводы Arduino могут выдавать только два значения: логический 0 (LOW, низкий уровень) и логическую 1 (HIGH, высокий). На то они и цифровые. Но есть у Ардуино особые выводы, которые обозначаются PWM. Их иногда обозначают волнистой чертой "

" или обводят кружочками или ещё как-то выделяют среди прочих. PWM расшифровывается как Pulse-width modulation или широтно-импульсная модуляция, ШИМ.

Обозначение выходов с ШИМ на Arduino Leonardo Обозначение выходов с ШИМ на Arduino Leonardo

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

Если скважность равняется 100%, то всё время на цифровом выходе Arduino будет напряжение логическая "1" или 5 вольт. Если задать скважность 50%, то половину времени на выходе будет логическая "1", а половину логический "0", и среднее напряжение будет равняться 2,5 вольтам. Ну и так далее.

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

В программе скважность задаётся не в процентах, а числом от 0 до 255. Например, команда analogWrite(10, 64) скажет микроконтроллеру подать на цифровой PWM выход №10 сигнал со скважностью 25%.

Выводы Arduino с функцией широтно-импульсной модуляции работают на частоте около 500 Гц. Значит, период следования импульсов около 2 миллисекунд, что и отмеряют зелёные вертикальные штрихи на рисунке. Получается, что мы можем сымитировать аналоговый сигнал на цифровом выходе! Интересно, правда?!

2 Схема для демонстрации широтно-импульсной модуляции в Arduino

Давайте рассмотрим самый базовый пример управление яркостью светодиода с помощью ШИМ . Соберём классическую схему.

Схема для демонстрации ШИМ в Arduino Схема для демонстрации ШИМ в Arduino

3 Пример скетча с ШИМ

Откроем из примеров скетч "Fade": Файл Образцы 01.Basics Fade.

Открываем скетч для Arduino с использованием ШИМ Открываем скетч для Arduino с использованием ШИМ

Немного изменим его и загрузим в память Arduino.

4 Управление яркостью светодиода с помощью PWM и Arduino

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

Управление яркостью светодиода  пример широтно-импульсной модуляции, используемой в Arduino Управление яркостью светодиода пример широтно-импульсной модуляции, используемой в Arduino

Посмотрите приложенные видео, где на экране осциллографа DSO138 наглядно показано изменение яркости светодиода, и как при этом меняется сигнал с Arduino.


Источник: soltau.ru