Схема шим модулятора на цифровой микросхеме. Сварочные инверторы. Схемы подключения высокочастотных преобразователей. Пример использования ШИМ регулятора

Широтно-импульсная модуляция (ШИМ) – это метод преобразования сигнала, при котором изменяется длительность импульса (скважность), а частота остаётся константой. В английской терминологии обозначается как PWM (pulse-width modulation). В данной статье подробно разберемся, что такое ШИМ, где она применяется и как работает.

Область применения

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

Широтно-импульсная (ШИ) модуляция активно используется в построении систем управления яркостью светодиодов. Благодаря низкой инерционности, светодиод успевает переключаться (вспыхивать и гаснуть) на частоте в несколько десятков кГц. Его работа в импульсном режиме воспринимается человеческим глазом как постоянное свечение. В свою очередь яркость зависит от длительности импульса (открытого состояния светодиода) в течение одного периода. Если время импульса равно времени паузы, то есть коэффициент заполнения – 50%, то яркость светодиода будет составлять половину от номинальной величины. С популяризацией светодиодных ламп на 220В стал вопрос о повышении надёжности их работы при нестабильном входном напряжении. Решение было найдено в виде универсальной микросхемы – драйвера питания, работающего по принципу широтно-импульсной или частотно-импульсной модуляции. Схема на базе одного из таких драйверов детально описана .

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

Масштабное применение ШИМ отражено во всех LCD панелях со светодиодной подсветкой. К сожалению, в LED мониторах большая часть ШИ-преобразователей работает на частоте в сотни Герц, что негативно отражается на зрении пользователей ПК.

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

Повсеместное распространение устройств, работающих по принципу ШИМ, позволило человечеству уйти от трансформаторных блоков питания линейного типа. Как результат – повышение КПД и снижение в несколько раз массы и размеров источников питания.

ШИМ-контроллер является неотъемлемой частью современного импульсного блока питания. Он управляет работой силового транзистора, расположенного в первичной цепи импульсного трансформатора. За счёт наличия цепи обратной связи напряжение на выходе БП всегда остаётся стабильным. Малейшее отклонение выходного напряжения через обратную связь фиксируется микросхемой, которая мгновенно корректирует скважность управляющих импульсов. Кроме этого современный ШИМ-контроллер решает ряд дополнительных задач, способствующих повышению надёжности источника питания:

  • обеспечивает режим плавного пуска преобразователя;
  • ограничивает амплитуду и скважность управляющих импульсов;
  • контролирует уровень входного напряжения;
  • защищает от короткого замыкания и превышения температуры силового ключа;
  • при необходимости переводит устройство в дежурный режим.

Принцип работы ШИМ контроллера

Задача ШИМ контроллера состоит в управлении силовым ключом за счёт изменения управляющих импульсов. Работая в ключевом режиме, транзистор находится в одном из двух состояний (полностью открыт, полностью закрыт). В закрытом состоянии ток через p-n-переход не превышает несколько мкА, а значит, мощность рассеивания стремится к нулю. В открытом состоянии, несмотря на большой ток, сопротивление p-n-перехода чрезмерно мало, что также приводит к незначительным тепловым потерям. Наибольшее количество тепла выделяется в момент перехода из одного состояния в другое. Но за счёт малого времени переходного процесса по сравнению с частотой модуляции, мощность потерь при переключении незначительна.

Широтно-импульсная модуляция разделяется на два вида: аналоговая и цифровая. Каждый из видов имеет свои преимущества и схемотехнически может реализовываться разными способами.

Аналоговая ШИМ

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

Цифровая ШИМ

Широтно-импульсная модуляция в цифровой интерпретации является одной из многочисленных функций микроконтроллера (МК). Оперируя исключительно цифровыми данными, МК может формировать на своих выходах либо высокий (100%), либо низкий (0%) уровень напряжения. Однако в большинстве случаев для эффективного управления нагрузкой напряжение на выходе МК необходимо изменять. Например, регулировка скорости вращения двигателя, изменение яркости светодиода. Что делать, чтобы получить на выходе микроконтроллера любое значение напряжения в диапазоне от 0 до 100%?

Вопрос решается применением метода широтно-импульсной модуляции и, используя явление передискретизации, когда заданная частота переключения в несколько раз превышает реакцию управляемого устройства. Изменяя скважность импульсов, меняется среднее значение выходного напряжения. Как правило, весь процесс происходит на частоте в десятки-сотни кГц, что позволяет добиться плавной регулировки. Технически это реализуется с помощью ШИМ-контроллера – специализированной микросхемы, которая является «сердцем» любой цифровой системы управления. Активное использование контроллеров на основе ШИМ обусловлено их неоспоримыми преимуществами:

  • высокой эффективности преобразования сигнала;
  • стабильность работы;
  • экономии энергии, потребляемой нагрузкой;
  • низкой стоимости;
  • высокой надёжности всего устройства.

Получить на выводах микроконтроллера ШИМ сигнал можно двумя способами: аппаратно и программно. В каждом МК имеется встроенный таймер, который способен генерировать ШИМ импульсы на определённых выводах. Так достигается аппаратная реализация. Получение ШИМ сигнала с помощью программных команд имеет больше возможностей в плане разрешающей способности и позволяет задействовать большее количество выводов. Однако программный способ ведёт к высокой загрузке МК и занимает много памяти.

Примечательно, что в цифровой ШИМ количество импульсов за период может быть различным, а сами импульсы могут быть расположены в любой части периода. Уровень выходного сигнала определяется суммарной длительностью всех импульсов за период. При этом следует понимать, что каждый дополнительный импульс – это переход силового транзистора из открытого состояния в закрытое, что ведёт к росту потерь во время переключений.

Пример использования ШИМ регулятора

Один из вариантов реализации ШИМ простого регулятора уже описывался ранее в . Он построен на базе микросхемы и имеет небольшую обвязку. Но, несмотря на простату схемы, регулятор имеет довольно широкую область применения: схемы управления яркости светодиодов, светодиодных лент, регулировка скорость вращения двигателей постоянного тока.

Читайте так же

Дорогой Бобот, не мог бы ты немного побольше рассказать об импульсах?

Хорошо, что ты попросил, дружище Бибот. Так как именно импульсы являются главными носителями информации в цифровой электронике, поэтому очень важно знать разные характеристики импульсов. Начнём, пожалуй, с одиночного импульса.

Электрический импульс - это всплеск напряжения или тока в определённом и конечном промежутке времени.

Импульс всегда имеет начало (передний фронт) и конец (спад).
Ты уже наверняка знаешь, что в цифровой электронике все сигналы могут быть представлены всего двумя уровнями напряжения: "логической единицей" и "логическим нулём". Это всего лишь условные величины напряжения. "Логической единице" приписывается высокий уровень напряжения, обычно около 2-3 вольт, "логическим нулём" считается близкое к нулю напряжение. Цифровые импульсы графически изображаются прямоугольными или трапециевидными по форме:

Главной величиной одиночного импульса является его длина. Длина импульса - это отрезок времени, в течение которого рассматриваемый логический уровень имеет одно устойчивое состояние. На рисунке латинской буквой t отмечена длина импульса высокого уровня, то есть логической "1". Длина импульса измеряется в секундах, но чаще в миллисекундах (мс), микросекундах (мкс) и даже наносекундах (нс). Одна наносекунда - это очень короткий отрезок времени!
Запомни: 1 мс = 0,001 сек.
1 мкс = 0,000001 сек
1 нс = 0,000000001 сек

Применяются также англоязычные сокращения: ms - миллисекунда, μs - микросекунда, ns - наносекунда.

За одну наносекунду я даже пикнуть не успею!
Скажи, Бобот, а что произойдёт, если импульсов будет много?

Хороший вопрос, Бибот! Чем больше импульсов, тем больше информации можно ими передать. У множества импульсов появляется много характеристик. Самая простая - частота следования импульсов.
Частота следования импульсов - это количество полных импульсов в единицу времени. За единицу времени принято брать одну секунду. Единицей измерения частоты является герц, по имени немецкого физика Генриха Герца . Один герц - это регистрация одного полного импульса за одну секунду. Если произойдёт тысяча колебаний в секунду будет 1000 герц, или сокращённо 1000 Гц, что равно 1 килогерцу, 1 кГц. Можно встретить и англоязычное сокращение: Hz - Гц. Частота обозначается буквой F .

Существуют ещё несколько характеристик, которые проявляются только при участии двух и более импульсов. Одним из таких важных параметров импульсной последовательности является период.
Период импульсов - это промежуток времени, между двумя характерными точками двух соседних импульсов. Обычно период измеряют между двух фронтов или двух спадов соседних импульсов и обозначают заглавной латинской буквой T .


Период следования импульсов напрямую связан с частотой импульсной последовательности, и его можно вычислить по формуле: T=1/F
Если длина импульса t точно равна половине периода T , то такой сигнал часто называют "меандр ".

Скважностью импульсов называется отношение периода следования импульсов к их длительности и обозначается буквой S: S=T/t Скважность - безразмерная величина и не имеет единиц измерения, но может быть выражена в процентах. Часто в англоязычных текстах встречается термин Duty cycle, это так называемый коэффициент заполнения.
Коэффициент заполнения D является величиной, обратной скважности. Коэффициент заполнения обычно выражается в процентах и вычисляется по формуле: D=1/S

Дорогой Бобот, так много разного и интересного у простых импульсов! Но потихоньку я уже начинаю путаться.

Дружище, Бибот, это ты верно заметил, импульсы - не так уж и просты! Но осталось совсем чуть-чуть.

Если ты меня внимательно слушал, то ты мог заметить, что если увеличивать или уменьшать длину импульса и при этом на столько же уменьшать или увеличивать паузу между импульсами, то период следования импульсов и частота останется неизменной! Это очень важный факт, который нам ещё не раз понадобится в будущем.

Но сейчас ещё хочется добавить другие способы передачи информации с помощью импульсов.
Например, можно несколько импульсов объединить в группы. Такие группы с паузами определённой длины между ними называют пачками или пакетами. Генерируя разное число импульсов в группе и варьируя его, можно также передавать какую-либо информацию.


Для передачи информации в цифровой электронике (ещё её называют дискретной электроникой) можно использовать два и более проводников или каналов с разными импульсными сигналами. При этом информация передаётся с учётом определённых правил. Такой метод позволяет заметно увеличить скорость передачи информации или добавляет возможность управлением потоком информации между различными схемами.

Перечисленные возможности передачи информации с помощью импульсов могут быть использованы как сами по себе раздельно, так и в комбинации между собой.
Существуют также множество стандартов передачи информации с помощью импульсов, например I2C, SPI, CAN, USB, LPT.

При работе с множеством различных технологий часто стоит вопрос: как управлять мощностью, которая доступна? Что делать, если её необходимо понизить или повысить? Ответом на эти вопросы служит ШИМ-регулятор. Что он собой представляет? Где применяется? И как самому собрать такой прибор?

Что такое широтно-импульсная модуляция?

Без выяснения значения этого термина продолжать не имеет смысла. Итак, широтно-импульсная модуляция — это процесс управления мощностью, которая подводится к нагрузке, осуществляемая путём видоизменения скважности импульсов, которая делается при постоянной частоте. Существует несколько типов широтно-импульсной модуляции:

1. Аналоговый.

2. Цифровой.

3. Двоичный (двухуровневый).

4. Троичный (трехуровневый).

Что такое ШИМ-регулятор?

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

Настоящим спасением из данной ситуации стал ШИМ-регулятор, который работает на мощных полевых силовых транзисторах. Они могут коммутировать большие токи (которые достигают 160 Ампер) при напряжении всего в 12-15В на затворе. Следует отметить, что сопротивление у открытого транзистора довольное мало, и благодаря этому можно заметно снизить уровень рассеиваемой мощности. Чтобы создать свой собственный ШИМ-регулятор, понадобится схема управления, которая сможет обеспечить разность напряжения между истоком и затвором в границах 12-15В. Если этого не получится достичь, то сопротивление канала будет сильно увеличиваться и значительно возрастёт рассеиваемая мощность. А это, в свою очередь, может привести к тому, что транзистор перегреется и выйдет из строя.

Выпускается целый ряд микросхем для ШИМ-регуляторов, которые смогут выдержать повышение входного напряжения до уровня 25-30В, при том, что питание будет всего 7-14В. Это позволит включать выходной транзистор в схеме вместе с общим стоком. Это, в свою очередь, необходимо для подключения нагрузки с общим минусом. В качестве примеров можно привести такие образцы: L9610, L9611, U6080B ... U6084B. Большинство нагрузок не потребляет ток больше 10 ампер, поэтому они не могут вызвать просадку напряжения. И как результат - использовать можно и простые схемы без доработки в виде дополнительного узла, который будет повышать напряжение. И именно такие образцы ШИМ-регуляторов и будут рассмотрены в статье. Они могут быть построены на основе несимметрического или ждущего мультивибратора. Стоит поговорить про ШИМ-регулятор оборотов двигателя. Об этом далее.

Схема №1

Эта схема ШИМ-регулятора собиралась на инверторах КМОП-микросхемы. Она является генератором прямоугольных импульсов, который действует на 2-х логических элементах. Благодаря диодам здесь отдельно изменяется постоянная времени разряда и заряда частотозадающего конденсатора. Это позволяет менять скважность, которую имеют выходные импульсы, и как результат - значение эффективного напряжения, которое есть на нагрузке. В данной схеме возможно использование любых инвертирующих КМОП-элементов, а также ИЛИ-НЕ и И. В качестве примеров подойдут К176ПУ2, К561ЛН1, К561ЛА7, К561ЛЕ5. Можно использовать и другие виды, но перед этим придётся хорошо подумать о том, как правильно сгруппировать их входы, чтобы они могли выполнять возложенный функционал. Преимущества схемы - доступность и простота элементов. Недостатки - сложность (практически невозможность) доработки и несовершенство относительно изменения диапазона выходного напряжения.

Схема №2

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

Причины распространения

Чем привлекает автолюбителей ШИМ-регулятор? Следует отметить стремление к увеличению КПД, когда проводится построение вторичных для электронной аппаратуры. Благодаря данному свойству можно данную технологию найти также при изготовлении компьютерных мониторов, дисплеев в телефонах, ноутбуках, планшетах и подобной техники, а не только в автомобилях. Также следует отметить значительную дешевизну, которой отличается данная технология при своём использовании. Также, если решите не покупать, а собирать ШИМ-регулятор собственноручно, то можно сэкономить деньги при усовершенствовании своего собственного автомобиля.

Заключение

Что ж, вы теперь знаете, что собой представляет ШИМ-регулятор мощности, как он работает, и даже можете сами собрать подобные устройства. Поэтому, если есть желание поэкспериментировать с возможностями своего автомобиля, можно сказать по этому поводу только одно - делайте. Причем можете не просто воспользоваться представленными здесь схемами, но и существенно доработать их при наличии соответствующих знаний и опыта. Но даже если всё не получится с первого раза, то вы сможете получить очень ценную вещь - опыт. Кто знает, где он может в следующий раз пригодиться и насколько важным будет его наличие.

Хорошее определение широтно-импульсной модуляции (ШИМ) заключается в самом его названии. Это означает модуляция (изменение) ширины импульса (не частоты). Чтобы лучше понять что такое ШИМ , давайте сначала посмотрим некоторые основные моменты.

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

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

Единственное различие между меандром и ШИМ-сигналом заключается в том, что у меандра время включения и отключения равны и постоянны (50% скважность), в то время как ШИМ-сигнал имеет переменную скважность.

Меандр может рассматриваться как частный случай ШИМ сигнала, который имеет 50% рабочий цикл (период включения = период отключения).

Рассмотрим на примере использование ШИМ

Допустим, мы имеим напряжение питания 50 вольт и нам необходимо запитать какую-либо нагрузку, работающую от 40 вольт. В этом случае хороший способ получения 40В из 50В — это использовать так называемый понижающий чоппер (прерыватель).

ШИМ сигнал, генерируемый чеппером, поступает на силовой узел схемы (тиристор, полевой транзистор), который в свою очередь управляет нагрузкой. Этот ШИМ-сигнал может легко генерироваться микроконтроллером, имеющим таймер.

Требования к ШИМ-сигналу для получения с помощью тиристора 40В из 50В: подача питания, на время = 400мс и выключение на время = 100мс (с учетом периода ШИМ сигнала равного 500 мс).

В общих словах это можно легко объяснить следующим образом: в основном, тиристор работает как переключатель. Нагрузка получает напряжение питания от источника через тиристор. Когда тиристор находится в выключенном состоянии, нагрузка не подключена к источнику, а когда тиристор находится в открытом состоянии, нагрузка подключается к источнику.

Этот процесс включения и выключения тиристора осуществляется посредством ШИМ сигнала.

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

Если коэффициент заполнения равен 100, то в этом случае у нас сигнал постоянный.

Таким образом, скважность импульсов (рабочий цикл) может быть вычислен с использованием следующей формулы:

Используя выше приведенные формулы, мы можем рассчитать время включения тиристора для получения необходимого нам напряжения.

Умножая скважность импульсов на 100, мы можем представить это в процентном соотношении. Таким образом, процент скважность импульсов прямо пропорционален величине напряжения от исходного. В приведенном выше примере, если мы хотим получить 40 вольт от 50 вольт источника питания, то это может быть достигнуто путем генерации сигнала со скважность 80%. Поскольку 80% из 50 вместо 40.

Для закрепления материала, решим следующую задачу:

  • рассчитаем длительность включения и выключения сигнала, имеющего частоту 50 Гц и скважность 60%.

Полученный ШИМ волны будет иметь следующий вид:

Один из лучших примеров применения широтно-импульсной модуляции является использование ШИМ для регулировки скорости двигателя или яркости свечения светодиода.

Этот прием изменения ширины импульса, чтобы получить необходимый рабочий цикл называется “широтно-импульсная модуляция”.

-Почему в кинотеатрах так медленно гаснет свет?
-Потому, что киномеханик очень медленно вынимает вилку из розетки.

Знакомимся с широтно-импульсной модуляцией.

Ранее мы научились с помощью изменения состояния порта GPIO управлять светодиодом. Мы научились управлять длительностью и частотой импульсов, благодаря чему получили различные световые эффекты. Убедились в том, что если изменять состояние порта со звуковой частотой, то можно получать различные
звуки, освоили частотную модуляцию…

А что получится, если мы будем изменять уровень порта со звуковой частотой, но вместо динамика подключим нашего старого подопытного друга - светодиод?

Проведите эксперимент. Измените нашу программу blink.c так, чтобы светодиод загорался и гас 200 раз в секунду, с частотой 200 Гц. Для этого достаточно изменить параметры функции delay(). Чтобы узнать, какие задержки нужно ввести, достаточно рассчитать период колебания Т. Т=1/f . А т.к. f у нас равна 200Гц, то Т=1/200=0,005 секунды, или 5 миллисекунд. Вот за эти 5 миллисекунд мы должны успеть включить светодиод и выключить его 1 раз. Так, как 5 на 2 не делится нацело, примем время свечения светодиода в 2 мС, а время несвечения в 3мС. 2+3=5, т.е. полный период одного колебания так и останется 5мС. Теперь изменим программу: заменим delay(500), на delay(2) и delay(3) для горящего и не горящего
светодиода соответственно.

Скомпилируем программу и запустим. Если у вас всё ещё в схеме установлен динамик, то вы услышите низкий звук, а если динамик заменить светодиодом, то вы увидите непрерывно горящий светодиод. На самом деле светодиод конечно моргает, но делает он это на столько быстро, что глаз уже не замечает это моргание и воспринимает
его как непрерывное свечение. Но светит диод вроде бы не так ярко, как он у нас горел раньше. Можете для сравнения запустить нашу самую первую программу, где светодиод горел постоянно, и сравнить яркость светодиода в обоих случаях. Давайте разберёмся, почему так происходит и как это можно использовать.

Помните, в самой первой части мы рассчитывали токоограничивающий резистор для питания светодиода? Мы знаем, что у светодиода есть рабочий ток, при котором он светится наиболее ярко. Если этот ток уменьшать, то яркость светодиода будет тоже уменьшаться. А когда мы начинаем быстро включать и выключать светодиод, то
его яркость свечения становится зависимой от среднего тока (Iср) за период колебания. Для импульсного (П-образного) сигнала, который мы генерируем на выходе порта GPIO, средний ток будет пропорционален отношению t1 к t2. А именно: Iср=Iн x t1/t2, где Iн- номинальный ток светодиода, который мы благодаря резистору установили в 10мА. При номинальном токе светодиод светится наиболее ярко. А в нашем случае Iср=10 х 2/3 = 6,7мА. Мы видим, что ток стал меньше, поэтому и светодиод стал гореть менее ярко. В этой формуле отношение t1/t2 называется коэффициентом заполнения импульса D.

Чем этот коэффициент больше, тем больше будет среднее значение тока. Мы можем изменять этот коэффициент от 0 до 1, или от 0% до 100%. А значит, мы можем и менять средний ток в этих пределах. Получается, что таким способом мы можем регулировать яркость светодиода от максимальной, до полностью выключенного! И хотя напряжение на выводе нашего порта по-прежнему может быть лишь либо +3,3в, либо 0в, ток в нашей схеме может изменяться. И изменением этого тока мы легко можем управлять нашей Малинкой. Вот такой способ управления и называется Широтно-Импульсной модуляцией , или просто ШИМ . В английском языке это звучит как PWM , или Pulse-Width Modulation . ШИМ, это импульсный сигнал постоянной частоты с переменным коэффициентом заполнения. Используется и такое определение, как Импульсный сигнал постоянной частоты с переменной скважностью. Скважность S, это величина обратная коэффициенту заполнения и характеризует отношение периода импульса T к его длительности t1.
S=T/t1 = 1/D.

Ну а нам, для закрепления наших знаний, остаётся написать программку, которая будет плавно зажигать и гасить наш светодиод. Процесс изменения яркости свечения называется диммированием .

У меня получилось вот так:
dimmer.c
// Программа плавно изменяет яркость светодиода
// Светодиод подключён к порту Р1_03#include #define PIN RPI_GPIO_P1_03
int main()
{
if (!bcm2835_init()) return 1;

Bcm2835_gpio_fsel(PIN,BCM2835_GPIO_FSEL_OUTP);
//Устанавливаем порт Р1_03 на выводunsigned int t_on, t_off;
// t_on продолжительность включённого состояния= t1, а t_off- выключенного =t2

Int d = 100, i, j, flag=0; // d- коэффициент заполнения в процентах, i и j, вспомогательные переменные для организации циклов, flag- если =0 светодиод затухает, если =1 разгорается

Int a=10; // количество полных рабочих циклов
while (a)
{
for (j=100; j!=0; j--) //изменяем коэффициент заполнения от 100% до 0%
{
t_on=50*d; //находим t1
t_off=50*(100-d); //находим t2
if (flag==0) d=d-1; // если светодиод затухает, уменьшаем коэффициент заполнения
if (flag==1) d=d+1; // если светодиод разгорается, увеличиваем коэффициент заполнения

For (i=10; i!=0; i--) //передаём 10 импульсов на светодиод с рассчитанными параметрами t1 и t2
{
bcm2835_gpio_write(PIN, LOW);
delayMicroseconds(t_on);
bcm2835_gpio_write(PIN, HIGH);
delayMicroseconds(t_off);
}

If (d==0) flag=1; // если светодиод выключен, начинаем его включать
if (d==100) flag=0; // если светодиод достиг максимума свечения, начинаем его гасить
}

A--;
}
return (!bcm2835_close ()); // Выход из программы
}

Сохраняем программу под именем dimmer.c, компилируем и запускаем.

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

Помните старый анекдот из предисловия к этой части, о киномеханике, медленно вытягивающим вилку из розетки? Теперь то мы знаем, что этому киномеханику, чтобы плавно погасить свет, нужно наоборот очень быстро вставлять и вытаскивать вилку из розетки.

На этом мы и закончим данный урок. Остаётся лишь добавить, что ШИМ настолько часто используется в различных приложениях, что производители процессорного оборудования часто встраивают ШИМ-контроллер непосредственно в процессор. Т.е. вы процессору задаёте параметры требуемого вам сигнала, а процессор уже сам, без вашей помощи выдаёт нужный вам сигнал. При этом, нисколько не тратя программных ресурсов на генерацию этого сигнала. Bcm2835 тоже имеет встроенный аппаратный ШИМ. И этот ШИМ является альтернативной функцией порта GPIO 18, или P1-12. Чтобы воспользоваться аппаратными ШИМ мы должны установить порт P1-12 в режим ALT5 и задать процессору параметры. Но это уже совсем другая история…