шаблоны сайт визитка 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);
}

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

Новости о нас

Расписание занятий для каждой сформированной группы по робототехнике на 2017-2018 учебный год. Подробнее
Учебный год начался, и у нас очередная радостная новость для вас, педагоги! В этом году... Подробнее
Наши учащиеся выступили на августовской конференции педагогов! Подробнее
Хочешь учиться в Толтеке по выгодной цене? Приводи друзей и получай большие скидки!... Подробнее
19 августа в ТРЦ Сити Молл с блеском прошел РобоКвест! Героями квеста стали более сотни... Подробнее

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

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo