Широтно-импульсная модуляция (ШИМ, PWM)

Широтно-импульсная модуляция
Микроконтроллеры обычно не могут выдавать произвольное напряжение. Они могут выдать напряжение питания (например, 5 В), или земли (то есть 0 В).
Но существует много вещей, которые управляются изменением уровня напряжения: например, яркость светодиода или скорость вращения мотора. Для симуляции неполного напряжения (рисунок 1) используется ШИМ (широтно-импульсной модуляции, англ. Pulse Width Modulation или просто PWM).

pwm_1


Применение

Выход микроконтроллера переключается между землей и Vcc тысячи раз в секунду. Или, как еще говорят, имеет частоту в тысячи герц. Глаз не замечает мерцания более 50 Гц, поэтому нам кажется, что светодиод не мерцает, а горит в полсилы.
Аналогично, разогнанный мотор не может остановить вал за миллисекунды, поэтому ШИМ-сигнал заставит вращаться его в неполную силу.

Скважность
Отношение времени включения и выключения называют скважностью (англ. Duty cycle). Рассмотрим несколько сценариев при напряжении питания Vcc равной 5 вольтам.
50% — эквивалент 2,5 В

pwm_2

10% — эквивалент 0,5 В

pwm_3

90% — эквивалент 4,5 В

pwm_4

Источник: blog.amperka.ru
Подключение кнопки и светодиода к Arduino Uno

arduino_pwm

Резистор для кнопки – 10 кОм, резистор для светодиода – 220 Ом.

Функции чтения / записи из контактов Arduino
digitalRead(pin) – функция считывает с заданного входа значение HIGH или LOW.
digitalWrite(pin, value) – подает на цифровой вход / выход значение HIGH или LOW.
analogRead(pin) – функция считывает значение с заданного аналогового входа.
analogWrite(pin, value) – формирует заданное аналоговое напряжение на выводе в виде ШИМ-сигнала.



Напишем программу для управления яркостью светодиода. В данной программе светодиод имеет три уровня яркости (85*3=255).

Результат работи программы:

Оставить ответ

Обязательные поля помечены*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.