ШИМ — широтно-импульсная модуляция
Уважаемый микропрогер, будем разговаривать с вами предельно простым языком:
представим себе электрический импульс А с амплитудой напряжения от 0В до 5В, длиной 1 мс и периодом повторения 10мс (т.е. в течение 1 мс напряжение на линии, по которой проходит импульс А составляет 5В, затем в течение 9мс составляет 0В, и так повторяется каждые 10 мс). А теперь представим, что мы увеличиваем длительность импульса А до 2мс (пусть теперь это будет импульс Б), а повторяется он точно те же каждые 10мс. Задача изменения длительности импульса А с 1мс до импульса Б 2 мс и есть задача ШИМ.
Вообще говоря слово «Модуляция» означает изменение параметров колебания (частоты, амплитуды, фазы). Широтно-импульсная модуляция — изменение скважности импульсов при постоянной частоте. Скважность — то же самое, что протяженность, т.е. в нашем примере это изменение протяженности импульса с 1мс до 2мс.
ШИМ регулятор. Пример

Работа ШИМ регулятора наглядно отображена на данной картинке-графике.
На графике мы видим три сигнала. Сигналы модулируются ШИМом, который генерирует и регулирует скважность импульсов.
Скважность на графике сверху — 15%. То есть, за один период, равный 100%, 15% времени выдается логическая единица (напряжение TTL уровня +3В либо +5В). 75% времени выдается логический ноль (отсутствие напряжения в линии — 0В).
На среднем графике скважность 50% — 50% времени выдается логическая 1, 50% выдается логический 0.
На графике снизу скважность 90%. 90% -1. 10% — 0.
Если подключить светодиод к нашему ШИМ регулятору, то в случае с первым графиком светодиод будет светиться слабо. С графиком 2 свечение светодиода будет ярче чем с 1, но сам светодиод будет светиться на 50% своей мощности. В случае с 3-им графиком, яркость свечения светодиода будет настроена на 90%, близкие к максимальным.
Как видим, с помощью ШИМ очень удобно регулировать яркость свечения светодиода, а также работу шагового двигателя.
Практическое значение ШИМ
Еще раз вспомнил наши импульсы А и Б. Они бегут по проводу к потребителю электрического тока и представляют собой электрический ток с определенным напряжением(Вольты) и определенной силой(Амперы), которая зависит от потребителя. Потребители в общем случае кушают фиксированный ток (например 300мА). То есть, если бы импульс А или Б длился все 10мс и не прерывался, то потребление тока для потребителя составило именно 300мА. Если же мы прерываем ток длительностью импульса, то потребление тока при действующем импульсе А составит 300мА * (1/10) = 30мА, при импульсе Б 300мА * (2/10) = 60мА.
Генераторы ШИМ применяются в задачах управления светодиодными светильниками. Все предельное просто: чем больше тока подаем на светодиод, тем ярче он светится. То же самое с RGB светодиодами — подаем на красный(R) импульс А(30мА), на синий импульс Б(60мА), на зеленый 0 — получаем тусклый фиолетовый свет, который получается от менее яркого красного и более яркого синего цветов.
ШИМ применяется в задачах управления вращающимися двигателями — чем больший ток подаем на контакты движка, тем быстрее он вращается. А если двигателя мы имеем три, а в придачу у нас куча идей и целая программа для последовательной подачи импульсов типа А и Б на их обмотки? Тут можно сколотить целый 3Д принтер!
ШИМ контроллер
Для микропрогерского осознания сути словосочетания «ШИМ контроллер«, достаточно понимать общее назначение опорной частоты и способах выдачи на одну ножку микросхемы последовательности логических нулей и единичек.
Допустим, у нас есть микроконтроллер или ПЛИС и все тот же вращающийся движок, который при постоянном токе 5В потребляет 300мА и при этом потреблении вертит своей осью 10 раз в секунду. Теперь нас попросили — сделайте так, чтобы я нажимал на кнопку, а движок сделал 5 оборотов с частотой 1 оборот в секунду, затем сделал еще 2 оборота за 1 секунду и выключился.
Что мы делаем?
Правильно, пишем программу для нашей любимой логической приблуды — плисины или микрика. В проге будет вход, при наличии 1 на котором запускается цикл — выдача 1 в течение 1мс, затем 0 в течение 9мс, так 5 раз подряд. Затем выдача 1 2мс два раза подряд. end module. Start Compilation.
Только перед подключением нагрузки(двигателя) к микроконтроллеру или ПЛИС не забываем прочесть вот эту короткую, по очень полезную статью, не позволяющую спалить наш новоявленный ШИМ-контроллер.
Все просто!
Остались вопросы? Напишите комментарий. Мы ответим и поможем разобраться =)