шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»Учебные материалы»Arduino Scetch»Широтно-импульсная модуляция (ШИМ)

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

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

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

На графике зеленые линии отмечают постоянные временные периоды. Длительность периода обратно пропорциональна частоте ШИМ. Т.е. если частота ШИМ составляет 500 Гц, то зеленые линии будут отмечать интервалы длительностью в 2 миллисекунды каждый. Вызов функции analogWrite() с масштабом 0 – 255 означает, что значение analogWrite(255) будет соответствовать 100% рабочему циклу (постоянное включение 5 В), а значение analogWrite(127) – 50% рабочему циклу. Обратите внимание на то, что ШИМ имеют только пниы: 3, 5, 6, 9, 10, 11.

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

Приведу пример изменения яркости светодиода c помощью потенционометра. Подключим светодиод к 9 пину через резистор 220Ом и потенционометр к 0 аналоговому выходу.

схема новая

Теперь осталось только всё запрограммировать. Есть два варианта это сделать. Можно полученные значения с потенционометра разделить на 4 и отправить их на светодиод, или умножить полученные значения с потенционометра на 255, а потом разделить на 1023. Второй способ будет более точным. Вот сам программный код:

#define LedPin 9
#define PotPin 0

void setup() {
    pinMode (LedPin, OUTPUT);

void loop() {
    int PotVal = analogRead(Pot_Pin);
    analogWrite(LedPin, (PotVal*255/1023));
    delay(20);
}

Похожие материалы (по тегу)

Новости о нас

КАЖДУЮ ПЯТНИЦУ - бесплатное занятие по 3D-моделированию с 16:40 до 18:10. Только для учащихся нашего технопарка! Подробнее
 Региональный отборочный фестиваль "Робофест-Стерлитамак 2018" состоится 25-26 января в г.... Подробнее
В сезоне 2017/18 фестиваля «РобоФест Стерлитамак 2018» Региональный учебно-тренировочный сбор... Подробнее
ВНИМАНИЕ учащимся! Объявляем конкурс рисунков на тему "Робот моей мечты", который пройдет по двум... Подробнее
В нашем технопарке Толтек СФ БашГУ пройдут открытые ОТБОРОЧНЫЕ СОРЕВНОВАНИЯ для ВСЕХ возрастов и... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo