18.10.2024

Широтно импульсный модулятор: Что такое ШИМ – Широтно-Импульсная Модуляция? ⋆ diodov.net

Содержание

Что такое ШИМ – Широтно-Импульсная Модуляция? ⋆ diodov.net

Программирование микроконтроллеров Курсы

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

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

Способы регулирования напряжения

Примером линейного способа может послужить переменный резистор. При этом значительная часть мощности теряется на резисторе. Чем больше разница напряжений источника питания и потребителя, тем ощутимей потери мощности, которая попросту «сгорает» на резисторе, превращаясь в тепло. Поэтому линейный способ регулирования рационально применять только при небольшой разнице входного и выходного напряжений. В противном случае коэффициент полезного действия источника питания в целом будет очень низкий.

Линейный способ регулирования напряжения

В современной преобразовательной технике преимущественно используются импульсное регулирование мощности на нагрузке. Одним из способов реализации импульсного регулирования является широтно-импульсная модуляция ШИМ. В англоязычной литературе PWM – pulse-width modulation.

Импульсный способ регулирования напряжения

Принцип импульсного регулирования

Основными элементами любого типа импульсного регулятора мощности являются полупроводниковые ключи – транзисторы или тиристоры. В простейшем виде схема импульсного источника питания имеет следующий вид. Источника постоянного напряжения Uип ключом K подсоединяется к нагрузке Н. Ключ К переключается с определенной частотой и остается во включенном состоянии определенную длительность времени. С целью упрощения схемы я на ней не изображаю другие обязательные элементы. В данном контексте нас интересует только работа ключа К.

Упрощенная схема импульсного блока питания

Чтобы понять принцип ШИМ воспользуемся следующим графиком. Разобьем ось времени на равные промежутки, называемые периодом T. Теперь, например половину периода мы будем замыкать ключ K. Когда ключ замкнут, к нагрузке Н подается напряжение от источника питания Uип. Вторую часть полупериода ключа находится в закрытом состоянии. А потребитель останется без питания.

Широтно-импульсное регулирование ШИР

Время, в течение которого ключ замкнут, называется временем импульса tи. А время длительности разомкнутого ключа называют временем паузы tп. Если измерить напряжение на нагрузке, то оно будет равно половине Uип.

Среднее значение напряжения на нагрузке можно выразить следующей зависимостью:

Uср.н = Uип tи/T.

Отношение времени импульса к периоду T называют коэффициентом заполнения D. А величина, обратная ему называется скважностью:

S = 1/D = T/tи.

На практике удобнее пользоваться коэффициентом заполнения, который зачастую выражают в процентах. Когда транзистор полностью открыт на протяжении всего времени, то коэффициент заполнения D равен единице или 100 %.

Если D = 50 %, то это означает, что половину времени за период транзистор находится в открытом состоянии, а половину в закрытом. В таком случае форма сигнала называется меандр.
Следовательно, изменяя коэффициент D от 0 до единицы или до 100 % можно изменять величину Uср.н от 0 до Uип:

Uср.н = Uип∙D.

А соответственно регулировать и величину подводимой мощности:

Pср.н = Pип∙D.

Широтно-импульсное регулирование ШИР

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

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

Схема импульсного регулирования напряженияВ любом случае для формирования определенной длительности импульса, подаваемого на базу транзистора и открывающего последний, применяют источники опорного и задающего напряжения, а также компаратор.
Рассмотрим упрощенную схему, в которой аккумуляторная батарея GB питает потребитель Rн импульсным способом посредством транзистора VT. Сразу скажу, что в данной схеме я специально не использовал такие элементы, необходимые для работы схемы: конденсатор, дроссель и диод. Это сделано с целью упрощения понимания работы ШИМ, а не всего преобразователя.

Упрощенно, компаратор имеет три вывода: два входа и один выход. Компаратор работает следующим образом. Если величина напряжения на входном выводе «+» (неинвертирующий вход) выше, чем на входе «-» (инвертирующий вход), то на выходе компаратора будет сигнал высокого уровня. В противном случае – низкого уровня.

В нашем случае, именно сигнал высокого уровня открывает транзистор VT. Рассмотрим, как формируется необходимая длительность времени импульса tи. Для этого воспользуемся следующим графиком.

Принцип ШИР Широтно-импульсное регулирование

При ШИР на одни вход компаратора подается сигнал пилообразной формы заданной частоты. Его еще называют опорным. На второй вход подается задающее напряжение, которое сравнивается с опорным. В результате сравнения на выходе компаратора формируется импульс соответствующей длительности.

Если на неинверитирующем входе компаратора опорный сигнал, то сначала будет идти пауза, а затем импульс. Если на неинвертирующий вход подать задающий сигнал, то сначала будет импульс, затем пауза.

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

Таким образом, изменяя значение задаваемого сигнала, можно изменять коэффициент заполнения, а соответственно и среднее напряжение на нагрузке.

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

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

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

Рассмотрим простейшую схему инвертора напряжения.

Инвертор напряжения с ШИМ

В один момент времени открывается пара транзисторов VT1 и VT3. Создается путь для протекания тока от аккумулятора GB через активно-индуктивную нагрузку RнLн. В следующий момент VT1 и VT3 заперты, а открыты диагонально противоположные транзисторы VT2 и VT4. Теперь тока протекает от аккумулятора через RнLн в противоположном направлении. Таким образом, ток на нагрузке изменяет свое направление, поэтому является переменным. Как видно, ток на нагрузке не является синусоидальным. Поэтому применяют ШИМ для получения синусоидально формы тока.

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

Существует несколько типов ШИМ: однополярная, двухполярная, одностороння, двухсторонняя. Здесь мы не будем останавливаться на каждом конкретном типе, а рассмотрим общий подход.

В качестве модулирующего сигнала применяется синусоида, а опорным является сигнал треугольной формы. В результате сравнивания этих сигналов формируются длительности импульсов и пауз (нижний график), которые управляют работой транзисторов VT1…VT4.

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

Так вот, основное отличие между ШИР и ШИМ заключается в том, что при широтно-импульсном регулировании время импульса и паузы сохраняют постоянное значение. А при широтно-импульсной модуляции изменяются длительности импульсов и пауз, что позволяет реализовать выходной сигнал заданной формы.

Электроника для начинающих

Еще статьи по данной теме

Широтно-импульсный модулятор, принцип работы и схема

Широтно-импульсная модуляция (ШИМ, английская аббревиатураPWM — Pulse-Width Modulation) — это способ кодирования аналогового сигнала путем изменения ширины (длительности) прямоугольных импульсов несущей частоты. На рис.1 представлены типичные графики ШИМ-сигнала.

Так как при ШИМ частота импульсов, а значит, и период (Т) остаются неизменными, то при уменьшении ширины импульса (t) увеличивается пауза между импульсами (рис.16) и наоборот, при расширении импульса пауза сужается (рис.1в).

Если ШИМ-сигнал пропустить через фильтр низших частот (ФНЧ), то уровень постоянного напряжения на выходе фильтра будет определяться скважностью импульсов ШИМ. Скважность Q — это отношение периода импульсов Т к их длительности t, т.е. Формула:

формула

Величина, обратная скважности, которая также встречается в литературе, называется “коэффициентом заполнения” (К3). Назначение ФНЧ — не пропускать на выход несущую частоту ШИМ.

Сам фильтр может состоять из простейшей интегрирующей RC-цепочки или же отсутствовать вовсе, например, если нагрузка имеет достаточную инерцию.

Графики работы ШИМ

Рис. 1. Графики работы ШИМ.

Таким образом, с помощью двух логических уровней “1 ” и “0” можно получить любое промежуточное значение аналогового сигнала. Широтно-импульсная модуляция широко используется в современной электронике, например, в импульсных источниках питания или в устройствах цифровой обработки звуковых сигналов. В [1] описан широтно-импульсный модулятор на одной КМОП-микросхеме.

Он выполнен на основе двух логических элементов (рис.2) микросхемы К176ЛП1 (рис.За), которая называется универсальным логическим элементом (зарубежный аналог — CD4007).

Универсальность ИМС заключается в том, что она может быть использована и как три самостоятельных элемента НЕ, и как элемент ЗИЛИ-НЕ (рис.Зб), и как элемент НЕ с большим коэффициентом разветвпения (рис.Зв).

Широтно-импульсный модулятор на одной КМОП-микросхеме

Рис. 2. Широтно-импульсный модулятор на одной КМОП-микросхеме.

Структура микросхемы К176ЛП1

Рис. 3. Структура микросхемы К176ЛП1.

Микросхема содержит шесть МОП-транзисторов, три из которых (VT1…VT3) — с п-каналом, три других (VT4… VT6)-с р-каналом. Напряжение питания подают на выводы 14 (+9 В) и 7 (общий), выводы 6, 3 и 10 — входы, остальные — выходы.

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

Регулирование коэффициента заполнения обеспечивается шунтированием времязадающего резистора R2 сопротивлением каналов полевых транзисторов VТ1 и VТ2, входящих в состав микросхемы.

Коэффициент заполнения изменяется в пределах от 1 до 99% периода рабочей частоты. Недостатком этого генератора является ненадежный запуск при уменьшении емкости времязадающего конденсатора С1 (при увеличении частоты генерации).

Для устранения этого недостатка предлагаю выполнить широтно-импульсный модулятор на трех логических элементах (рис.4). Трехэлементный генератор запускается в любом случае, а конденсатор просто снижает его частоту. Широтно-импульсный модулятор построен на микросхеме DD2 и инверторе DD1.

Полевые транзисторы VТ1 и VТ2 из состава микросхемы подключены через диоды VD1 и VD2 параллельно резистору R2.

Широтно-импульсный модулятор на трех логических элементах

Рис. 4. Широтно-импульсный модулятор на трех логических элементах.

При высоком уровне на выходе генератора диод VD2 открывается, т.е. сопротивление п-канала VТ2 включается параллельно R2. Подобным образом сопротивление р-канала VТ1 включается через VD1 параллельно R2 при низком уровне на выходе генератора.

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

Увеличение управляющего напряжения, поступающего на модулятор, приводит к увеличению длительности выходных импульсов, уменьшение — наоборот. Частота колебаний остается неизменной. Данный генератор может генерировать сигнал частотой до 10 МГц.

В. Калашник, г. Воронеж. E-mail: kalaviv[a]mail.ru. РМ-07-12.

Литература:

  1. Широтно-импульсный модулятор на одной КМОП микросхеме. — Электроника, 1977, №13, С.55.
  2. Генераторы на элементах КМОП. — Схемотехника, 2007, №6, С.37.

Что такое ШИМ — принцип работы широтно-импульсной модуляции

Микропроцессоры работают исключительно с цифровыми сигналами: с логическим нулем (0В) или с логической единицей (5В или 3.3В). По этой причине на выходе микропроцессор не может сформировать промежуточное напряжение. Применение для решения таких задач внешних ЦАП нецелесообразно из-за сложности. Специально для этого разработана широтно-импульсная модуляция — определенный процесс управления мощностью, идущей к нагрузке, методом изменения скважности импульсов постоянной частотности.

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

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

Широтно-импульсная модуляция — важнейшие параметры:

  1. Т  -период тактирования — промежутки времени, через которые подаются импульсы.
  2. Длительность импульса — время пока подается сигнал.
  3. Скважность — рассчитанное по формуле соотношение длины импульса к импульсному Т периоду тактирования.
  4. D коэффициент заполнения — показатель обратный скважности.

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

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

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

Используется ЩИМ модуляция и в системах управления яркостью светодиодов. Светодиод, благодаря низкой инерционности, успевает мигнуть на частоте всего в несколько десятков кГц. Для человеческого глаза работа светодиода в импульсном режиме воспринимается как свечение. Яркость светодиода зависит от продолжительности импульса в течение одного периода. При коэффициенте заполнения в 50%, то есть, если время свечения равно времени паузы, яркость светодиода составляет одну вторую номинальной величины. Когда появились светодиодные лампы 220В, нашлась проблема повышения их надёжности при нестабильном входном напряжении. Задача была решена разработкой драйвера питания, функционирующего по принципу ШИМ.

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

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

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

ШИМ контроллер

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

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

Все это позволило разработать высокоэффективный компактный широтно импульсный преобразователь, то есть с малыми теплопотерями. Резонансные преобразователи с переключением в 0 тока ZCS позволяют свести теплопотери к минимуму.

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

В аналоговых ШИМ-генераторах управляющий сигнал формируется при помощи аналогового компаратора, когда на его инвертирующий вход подается пилообразный или треугольный сигнал, а на неинвертирующий — непрерывный модулирующий.

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

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

Цифровая ШИМ

Работая с цифровой информацией, микроконтроллер может формировать на выходах или 100% высокий или 0% низкий уровень напряжения. Но для эффективного управления нагрузкой такое напряжение на выходе нужно изменять. Например, когда осуществляется регулировка скорости вращения вала мотора или при изменении яркости светодиода.

Вопрос решают ШИМ контроллеры. То есть, 2-хуровневая импульсно-кодированная модуляция — это серия импульсов, характеризующаяся  частотой 1/T и либо шириной Т, либо шириной 0. Для их усреднения применяется передискретизация. При цифровой ШИМ прямоугольные подимпульсы, которыми и заполнен период, могут занимать любое место в периоде. Тогда на среднем значении сигнала за период сказывается лишь их количество. Так как процесс осуществляется на частоте в сотни кГц, можно добиться плавной регулировки. ШИМ контроллеры решают эту задачу.

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

Использование ШИМ-контроллеров обусловлено их следующими преимуществами:

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

Получить на выводах микроконтроллера (МК) ШИМ сигнал можно:

  • аппаратным способом;
  • программным способом.

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

Принцип шим-регулятора

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

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

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

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

В чем отличие между шим и шир?

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

Единственное отличие между ШИР и ШИМ — при ШИР время импульса и паузы постоянны. А при ШИМ их длительности изменяются, что позволяет сформировать выходной ШИМ сигнал заданной формы.

Широтно-импульсная модуляция — Википедия

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

Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте. Различают аналоговую ШИМ и цифровую ШИМ, двоичную (двухуровневую) ШИМ и троичную (трёхуровневую) ШИМ[1].

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

Основной причиной применения ШИМ является стремление к повышению КПД при построении вторичных источников питания электронной аппаратуры и в других узлах, например, ШИМ используется для регулировки яркости подсветки LCD-мониторов и дисплеев в телефонах, КПК и т.п..

Тепловая мощность, выделяемая на ключе при ШИМ

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

1. Rtr→∞↔P=U2R→0{\displaystyle R_{tr}\rightarrow \infty \leftrightarrow P={{\frac {{U}^{2}}{R}}\rightarrow 0}}

2. Rtr→0↔P=I2R→0{\displaystyle R_{tr}\rightarrow 0\leftrightarrow P={I}^{2}R\rightarrow 0}

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

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

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

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

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

Аналоговая ШИМ применяется в усилителях низкой частоты класса «D».

Цифровая ШИМ

В двоичной цифровой технике, выходы в которой могут принимать только одно из двух значений, приближение желаемого среднего уровня выхода при помощи ШИМ является совершенно естественным. Схема настолько же проста: пилообразный сигнал генерируется N-битным счётчиком. Цифровые устройства (ЦШИП) работают на фиксированной частоте, обычно намного превышающей реакцию управляемых установок (передискретизация). В периоды между фронтами тактовых импульсов выход ЦШИП остаётся стабильным, на нём действует либо низкий уровень, либо высокий, в зависимости от выхода цифрового компаратора, сравнивающего значение счётчика с уровнем приближаемого цифрового сигнала V(n). Выход за много тактов можно трактовать как череду импульсов с двумя возможными значениями 0 и 1, сменяющими друг друга каждый такт T. Частота появления единичных импульсов получается пропорциональной уровню приближаемого сигнала ~V(n). Единицы, следующие одна за другой, формируют контур одного, более широкого импульса. Длительности полученных импульсов переменной ширины ~V(n) кратны периоду тактирования T, а частота равна 1/(T*2N). Низкая частота означает длительные, относительно T, периоды постоянства сигнала одного уровня, что даёт невысокую равномерность распределения импульсов.

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

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

В цифровой ШИМ период делится на части, которые заполняются прямоугольными подымпульсами. Средняя величина за период зависит от количества прямоугольных подымпульсов.
Цифровая ШИМ — приближение бинарного сигнала (с двумя уровнями — вкл/выкл) к многоуровневому или непрерывному сигналу так, чтобы их средние значения за период времени t2−t1{\displaystyle t_{2}-t_{1}} были бы приблизительно равны.

Формально это можно записать так:

∫t1t2x(t)dtt2−t1=∑i=1nA∗ΔTit2−t1,{\displaystyle {\int _{t_{1}}^{t_{2}}{x(t)\,dt} \over {t_{2}-t_{1}}}={\sum _{i=1}^{n}{A*\Delta T_{i}} \over {t_{2}-t_{1}}},}

где x(t){\displaystyle x(t)} — входной сигнал в пределах от t1 до t2, а
ΔTi=t2−t1n{\displaystyle \Delta T_{i}={\frac {t_{2}-t_{1}}{n}}} — продолжительность i -го ШИМ подымпульса, каждого с амплитудой A. n выбирается таким образом, чтобы за период разность суммарных площадей (энергий) обеих величин была меньше допустимой:

∫t1t2x(t)dt−∑i=1nA∗ΔTi<E{\displaystyle \int _{t_{1}}^{t_{2}}{x(t)\,dt}-\sum _{i=1}^{n}{A*\Delta T_{i}}<E}.

Управляемыми «уровнями», как правило, являются параметры питания силовой установки, например, напряжение импульсных преобразователей /регуляторов постоянного напряжения/ или скорость электродвигателя. Для импульсных источников x(t) = Uconst стабилизации.

В цифровой ШИМ прямоугольные подымпульсы, заполняющие период, могут стоять в любом месте периода, на среднюю величину за период влияет только их количество. Например, при разбиении периода на 8 частей последовательности 11110000, 11101000, 11100100, 11100010, 11100001 и др. дают одинаковую среднюю за период величину, но отдельно стоящие «1» ухудшают режим работы ключа (транзистора).

В качестве ШИМ можно использовать даже COM-порт. Так как 0 передаётся как 0 0000 0000 1 (8 бит данных + старт/стоп), а 255 как 0 1111 1111 1, то диапазон выходных напряжений — 10-90 % с шагом в 10 %.

См. также

Примечания

Ссылки

AVR. Учебный курс. Использование ШИМ

Вот уже несколько раз я ругался странным словом ШИМ. Пора бы внести ясность и разьяснить что же это такое. Вообще, я уже расписывал этот режим работы, но все же повторюсь в рамках своего курса.
 

Вкратце, Широтно Импульсная Модуляция (в буржуйской нотации этот режим зовется PWMPulse Width Modulation) это способ задания аналогового сигнала цифровым методом, то есть из цифрового выхода, дающего только нули и единицы получить какие то плавно меняющиеся величины. Звучит как бред, но тем не менее работает. А суть в чем:
 

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

А вот если двигатель включать на десять секунд каждую минуту, то маховик раскрутится, но далеко не на полную скорость — большая инерция сгладит рывки от включающегося двигателя, а сопротивление от трения не даст ему крутится бесконечно долго.
 

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

Меня скважность (отношение длительности периода к длительности импульса) можно плавно менять эту площадь, а значит и напряжение на выходе. Таким образом если на выходе сплошные 1, то на выходе будет напряжение высокого уровня, в случае моего робота, на выходе из моста L293 это 12 вольт, если нули, то ноль. А если 50% времени будет высокий уровень, а 50% низкий то 6 вольт. Интегрирующей цепочкой тут будет служить масса якоря двигателя, обладающего довольно большой инерцией.
 

 

А что будет если взять и гнать ШИМ сигнал не от нуля до максимума, а от минуса до плюса. Скажем от +12 до -12. А можно задавать переменный сигнал! Когда на входе ноль, то на выходе -12В, когда один, то +12В. Если скважность 50% то на выходе 0В. Если скважность менять по синусоидальному закону от максимума к минимуму, то получим… правильно! Переменное напряжение. А если взять три таких ШИМ генератора и гнать через них синусоиды сдвинутые на 120 градусов между собой, то получим самое обычное трехфазное напряжение, а значит привет бесколлекторные асинхронные и синхронные двигатели — фетиш всех авиамоделистов. На этом принципе построены все современные промышленные привода переменного тока. Всякие Unidrive и Omron Jxx

 
В качестве сглаживающей интегрирующей цепи в ШИМ может быть применена обычная RC цепочка:

 

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

 
Аппаратный ШИМ
В случае ATMega16 проще всего сделать на его ШИМ генераторе, который встроен в таймеры. Причем в первом таймере у нас целых два канала. Так что без особого напряга ATmega16 может реализовать одновременно четыре канала ШИМ.

 
Как это реализовано
У таймера есть особый регистр сравнения OCR**. Когда значение в счётном регистре таймера достигнает значения находящегося в регистре сравнения, то могут возникнуть следующие аппаратные события:

  • Прерывание по совпадению
  • Изменение состояния внешнего выхода сравнения OC**.

 
Выходы сравнения выведены наружу, на выводы микроконтроллера

 

 
На демоплате Pinboard к этим выводам как раз подключены светодиоды. А если поставить джамперы вдоль, в сторону надписи RC то к выводу ШИМ будет подключена интегрирующая цепочка.

 

 

Для Pinboard II разница в подключении невелика. Джамперы тут сгруппированы в один блок. А светодиоды и RC цепочки сгруппированы в левом верхнем углу платы.

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

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

 

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

 

Так что меняя значение в регистре сравнения можно менять скважность ШИМ сигнала. А если пропустить этот ШИМ сигнал через сглаживающую RC цепочку (интегратор) то получим аналоговый сигнал.

 
У таймера может быть сколько угодно регистров сравнения. Зависит от модели МК и типа таймера. Например, у Атмега16

  • Timer0 — один регистр сравнения
  • Timer1 — два регистра сравнения (16ти разрядных!)
  • Timer2 — один регистр сравнения

 
Итого — четыре канала. В новых AVR бывает и по три регистра сравнения на таймер, что позволяет одним МК организовать просто прорву независимых ШИМ каналов.

 
Самих режимов ШИМ существует несколько:

 
Fast PWM
В этом режиме счетчик считает от нуля до 255, после достижения переполнения сбрасывается в нуль и счет начинается снова. Когда значение в счетчике достигает значения регистра сравнения, то соответствующий ему вывод ОСхх сбрасыватся в ноль. При обнулении счетчика этот вывод устанавливается в 1. И все!

 
Частота получившегося ШИМ сигнала определяется просто: Частота процесора 8Мгц, таймер тикает до 256 с тактовой частотой. Значит один период ШИМ будет равен 8000 000/256 = 31250Гц. Вполне недурно. Быстрей не получится — это максимальная скорость на внутреннем 8Мгц тактовом генераторе. Но если переключить FUSE биты на внешний кварц то можно раскачать МК на 16Мгц.

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

 

Phase Correct PWM
ШИМ с точной фазой. Работает похоже, но тут счетчик считает несколько по другому. Сначала от 0 до 255, потом от 255 до 0. Вывод OCxx при первом совпадении сбрасывается, при втором устанавливается.
Но частота ШИМ при этом падает вдвое, изза большего периода. Основное его предназначение, делать многофазные ШИМ сигналы, например, трехфазную синусоиду. Чтобы при изменении скважности не сбивался угол фазового сдвига между двумя ШИМ сигналами. Т.е. центры импульсов в разных каналах и на разной скважности будут совпадать.

 

 
Еще одна тонкость:
Чтобы не было кривых импульсов, то в регистр сравнения любое значение попадает через буфферный регистр и заносится только тогда, когда значение в счетчике достигнет максимума. Т.е. к началу нового периода ШИМ импульса.

 
Clear Timer On Compare
Сброс при сравнении. Это уже скорей ЧИМ — частотно-импульсно моделированный сигнал. Тут работает несколько иначе, чем при других режимах. Тут счетный таймер тикает не от 0 до предела, а от 0 до регистра сравнения! А после чего сбрасывается.

 

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

 
Например, надо нам прерывание каждую миллисекунду. И чтобы вот точно. Как это реализовать проще? Через Режим СТС! Пусть у нас частота 8Мгц.

 
Прескалер будет равен 64, таким образом, частота тиков таймера составит 125000 Гц. А нам надо прерывание с частотой 1000Гц. Поэтому настраиваем прерывание по совпадению с числом 125.

 
Дотикал до 125 — дал прерывание, обнулился. Дотикал до 125 — дал прерывание, обнулился. И так бесконечно, пока не выключим.

 
Вот вам и точная тикалка.

 
Нет, конечно, можно и вручную. Через переполнение, т.е. дотикал до переполнения, загрузил в обработчике прерывания заново нужные значение TCNTх=255-125, сделал нужные полезные дела и снова тикать до переполнения. Но ведь через СТС красивей! 🙂

 
Аппаратура
А теперь контрольные регистры, которыми все это безобразие задается и программируется. Опишу на примере Двухканального FastPWM на таймере 1. В других все похоже. Даташит в зубы и вперед.

 
Итак, тут правят бал регистры TCCR1A и TCCR1B. Гы, кто бы сомневался %)

 
Распишу их по битам.
Регистр TCCR1A, биты COM1A1:COM1A0 и COM1B1:COM1B0. Эта братия определяет поведение вывода сравнения OC1A и OC1B соответственно.

 

COMxx1COMxx0Режим работы выхода
00вывод отцеплен от регистра сравнения и не меняется никак.
01Поведение вывода зависит от режима заданного в WGM, различается для разных режимов (FastPWM, FC PWM, Compar out) и разных МК, надо сверяться с даташитом.
10прямой ШИМ (сброс при совпадении и установка при обнулении счета)
11обратный ШИМ (сброс при обнулении и установка при совпадении)

 
Регистр TCCR1A, биты WGM11 и WGM10 вместе с битами WGM12 и WGM13, находящимися в регистре TCCR1B задают режим работы генератора.

WGM13WGM12WGM11WGM10Режим работы
0101Fast PWM 8 бит
0110Fast PWM 9 бит
0111Fast PWM 10 бит

 
Другие комбинации битов WGM задают режимы Phase Correct PWM и CTC (сброс OCxx при совпадении). Если интересно, то читай даташит, я для себя много интересного там не нашел, кроме Phase Correct PWM. И то мне сейчас важней скорость, а не точность фазы 🙂

 
После остается только запустить таймер, установив бит CS10 (подсчет тактовых импульсов с делителем 1:1)

 
Пример кода:

 
Попробуем поиграться яркостью светодиодов с помощью ШИМ сигналов. Подключи джамперы, чтобы запитать светодиоды LED1 и LED2

 

 
Для версии Pinboard II все аналогично, с поправкой на другое расположение джамперов:

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
;FastPWM Init
	SETB	DDRD,4,R16	; DDRD.4 = 1 Порты на выход
	SETB	DDRD,5,R16	; DDRD.5 = 1
 
; Выставляем для обоих каналов ШИМ режим вывода ОС** сброс при совпадении. 
; COM1A = 10 и COM1B = 10
; Также ставим режим FAST PWM 8bit (таймер 16ти разрядный и допускает
; большую разрядность ШИМ сигнала. Вплоть до 10 бит.  WGM = 0101
; Осталось только запустить таймер на частоте МК CS = 001
 
	OUTI 	TCCR1A,2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10	 
	OUTI	TCCR1B,0<<WGM13|1<<WGM12|1<<CS10

;FastPWM Init
SETB DDRD,4,R16 ; DDRD.4 = 1 Порты на выход
SETB DDRD,5,R16 ; DDRD.5 = 1

; Выставляем для обоих каналов ШИМ режим вывода ОС** сброс при совпадении.
; COM1A = 10 и COM1B = 10
; Также ставим режим FAST PWM 8bit (таймер 16ти разрядный и допускает
; большую разрядность ШИМ сигнала. Вплоть до 10 бит. WGM = 0101
; Осталось только запустить таймер на частоте МК CS = 001

OUTI TCCR1A,2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10
OUTI TCCR1B,0<<WGM13|1<<WGM12|1<<CS10

 
Готово! Теперь ШИМ таймера1 генерит сигнал на выходаx OC1А и OC1B

 
Закинем в регистры сравнения первого и второго канала число 255/3=85 и 255/2 = 128
Так как ШИМ у нас 8ми разрядный, то заброс идет только в младший разряд. Старший же остается нулем. Но регистры сравнения тут у нас 16ти разрядные поэтому грузить надо оба байта сразу. Не забыв запретить прерывания (это важно!!! ибо атомарный доступ)

 

1
2
3
4
5
6
7
	CLI
	OUTI	OCR1AH,0
	OUTI	OCR1AL,85
 
	OUTI	OCR1BH,0
	OUTI	OCR1BL,128
	SEI

CLI
OUTI OCR1AH,0
OUTI OCR1AL,85

OUTI OCR1BH,0
OUTI OCR1BL,128
SEI

 
Поехали! 🙂

 
Прошиваем, тыкаемся в ноги микроконтроллера осциллографом — видим следующую картину по каналам:

 

 
Как мы и запланировали. С первого канала длительность импульса в 1/3 периода, а со второго в 1/2
Ну и светодиоды горят с разной яркостью. Один ярче, другой тусклей. Меняя значение в регистрах OCR*** мы можем менять скважность.

 
Давай сделаем так, чтобы светодиод плавно менял свою яркость от нуля до максимума. Как помнишь, у нас там была программа, с мигающем по таймеру0 светодиодом. Немного ее подправим, сделаем так, чтобы по таймеру не светодиод мигал, а менялось значение в регистрах сравнения OCR1A и OCR1B. Причем меняться оно будет в разные стороны 🙂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
; Main =========================================================
Main:	LDS	R16,TCNT	; Грузим числа в регистры
	LDS	R17,TCNT+1
 
	CPI	R16,0x10	; Сравниванем побайтно выдержку
	BRCS	NoMatch
	CPI	R17,0x01	; Выдержку сделали поменьше = 0x0110
	BRCS	NoMatch
 
; Если совпало то делаем экшн
Match:	CLI			; Запрет прерываний, т.к. атомарный доступ
 
; Меняем первый канал
; Особенность 16ти разрядных регистров в том, что их надо правильно читать и записывать.
; Читают вначале младший, потом старший байты. Так надо, чтобы младший не успел измениться
; (он ведь может тикать по таймеру) пока читают первым старший.  Укладывают их в обратном
; порядке. Сначала старший, потом младший. Правда для регистров OCR это не имеет большой 
; разницы -- они статичные, а вот для TCNT очень даже!
 
	IN	R16,OCR1AL	; Достали первый байт сравнения
	IN	R17,OCR1AH	; он 16ти разрядный, но старший байт будет 0
 
	INC	R16		; Увеличили
 
	OUT	OCR1AH,R17	; И сунули их обратно
	OUT	OCR1AL,R16
 
; Меняем второй канал
	IN	R16,OCR1BL	; Достали второй байт сравнения
	IN	R17,OCR1BH	; он 16ти разрядный, но старший байт будет 0
 
	DEC	R16		; Уменьшили
 
	OUT	OCR1BH,R17	; И сунули их обратно
	OUT	OCR1BL,R16	
	SEI			; Конец атомарного доступа
 
; Теперь надо обнулить счетчик, иначе за эту же итерацию главного цикла
; Мы сюда попадем еще не один раз -- таймер то не успеет натикать 255 значений
; чтобы число в первых двух байтах счетчика изменилось. 
 
	CLR	R16		; Нам нужен ноль
	CLI			; Таймер меняется и в прерывании. Нужен
				; атомарный доступ. Запрещаем прерывания
	OUT	TCNT0,R16	; Ноль в счетный регистр таймера
	STS	TCNT,R16	; Ноль в первый байт счетчика в RAM
	STS	TCNT+1,R16	; Ноль в второй байт счетчика в RAM
	STS	TCNT+2,R16	; Ноль в третий байт счетчика в RAM
	STS	TCNT+3,R16	; Ноль в первый байт счетчика в RAM
	SEI			; Разрешаем прерывания. 
; Не совпало - не делаем :) 
NoMatch:	NOP
 
	INCM	CCNT		; Шарманка вращается дальше, вхолостую
	JMP	Main

; Main =========================================================
Main: LDS R16,TCNT ; Грузим числа в регистры
LDS R17,TCNT+1

CPI R16,0x10 ; Сравниванем побайтно выдержку
BRCS NoMatch
CPI R17,0x01 ; Выдержку сделали поменьше = 0x0110
BRCS NoMatch

; Если совпало то делаем экшн
Match: CLI ; Запрет прерываний, т.к. атомарный доступ

; Меняем первый канал
; Особенность 16ти разрядных регистров в том, что их надо правильно читать и записывать.
; Читают вначале младший, потом старший байты. Так надо, чтобы младший не успел измениться
; (он ведь может тикать по таймеру) пока читают первым старший. Укладывают их в обратном
; порядке. Сначала старший, потом младший. Правда для регистров OCR это не имеет большой
; разницы — они статичные, а вот для TCNT очень даже!

IN R16,OCR1AL ; Достали первый байт сравнения
IN R17,OCR1AH ; он 16ти разрядный, но старший байт будет 0

INC R16 ; Увеличили

OUT OCR1AH,R17 ; И сунули их обратно
OUT OCR1AL,R16

; Меняем второй канал
IN R16,OCR1BL ; Достали второй байт сравнения
IN R17,OCR1BH ; он 16ти разрядный, но старший байт будет 0

DEC R16 ; Уменьшили

OUT OCR1BH,R17 ; И сунули их обратно
OUT OCR1BL,R16
SEI ; Конец атомарного доступа

; Теперь надо обнулить счетчик, иначе за эту же итерацию главного цикла
; Мы сюда попадем еще не один раз — таймер то не успеет натикать 255 значений
; чтобы число в первых двух байтах счетчика изменилось.

CLR R16 ; Нам нужен ноль
CLI ; Таймер меняется и в прерывании. Нужен
; атомарный доступ. Запрещаем прерывания
OUT TCNT0,R16 ; Ноль в счетный регистр таймера
STS TCNT,R16 ; Ноль в первый байт счетчика в RAM
STS TCNT+1,R16 ; Ноль в второй байт счетчика в RAM
STS TCNT+2,R16 ; Ноль в третий байт счетчика в RAM
STS TCNT+3,R16 ; Ноль в первый байт счетчика в RAM
SEI ; Разрешаем прерывания.
; Не совпало — не делаем 🙂
NoMatch: NOP

INCM CCNT ; Шарманка вращается дальше, вхолостую
JMP Main

 
А теперь давайте включим режим с точной фазой (WGM = 0001) и посмотрим на то как будет меняться скважность.

 

1
2
	OUTI 	TCCR1A,2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10	 
	OUTI	TCCR1B,0<<WGM13|0<<WGM12|1<<CS10

OUTI TCCR1A,2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10
OUTI TCCR1B,0<<WGM13|0<<WGM12|1<<CS10

 

 
ШИМ на прерываниях.
Но вот засада — плата уже разведена, захотелось ШИМ, а выводы OCxx уже задействованы под другие цели.

 
Ничего страшного, малой кровью можно это исправить. Также запускаем ШИМ, только:

  • Отключаем выводы OCxx от регистра сравнения.
  • Добавляем два обработчика прерывания на сравнение и на переполнение. В прерывании по сравнению сбрасываем нужный бит, в прерывании по переполнению счетчика устанавливаем.

Все просто 🙂

 
Пример:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;FastPWM Init на прерываниях
 
; ШИМ будет на выводах 3 и 6 порта D
	SETB	DDRD,3,R16	; DDRD.3 = 1 Порты на выход
	SETB	DDRD,6,R16	; DDRD.6 = 1
 
; Выставляем для обоих каналов ШИМ режим вывода ОС** выключеным. 
; COM1A = 00 и COM1B = 00
; Также ставим режим FAST PWM 8bit (таймер 16ти разрядный и допускает
; большую разрядность ШИМ сигнала. Вплоть до 10 бит.  WGM = 0101
; Осталось только запустить таймер на частоте МК CS = 001
 
	OUTI 	TCCR1A,0<<COM1A0|0<<COM1B0|0<<WGM11|1<<WGM10	 
	OUTI	TCCR1B,0<<WGM13|1<<WGM12|1<<CS10	
 
	SETB	TIMSK,OCIE1A,R16	; Включаем прерывание по сравнению А
	SETB	TIMSK,OCIE1B,R16	; Включаем прерывание по сравнению Б
	SETB	TIMSK,TOIE1,R16	; Включаем прерывание по переполнению Т1
					; Причем в режиме WGM=1010 переполнение
					; будет на FF т.е. таймер работает как
					; 8ми разрядный.

;FastPWM Init на прерываниях

; ШИМ будет на выводах 3 и 6 порта D
SETB DDRD,3,R16 ; DDRD.3 = 1 Порты на выход
SETB DDRD,6,R16 ; DDRD.6 = 1

; Выставляем для обоих каналов ШИМ режим вывода ОС** выключеным.
; COM1A = 00 и COM1B = 00
; Также ставим режим FAST PWM 8bit (таймер 16ти разрядный и допускает
; большую разрядность ШИМ сигнала. Вплоть до 10 бит. WGM = 0101
; Осталось только запустить таймер на частоте МК CS = 001

OUTI TCCR1A,0<<COM1A0|0<<COM1B0|0<<WGM11|1<<WGM10
OUTI TCCR1B,0<<WGM13|1<<WGM12|1<<CS10

SETB TIMSK,OCIE1A,R16 ; Включаем прерывание по сравнению А
SETB TIMSK,OCIE1B,R16 ; Включаем прерывание по сравнению Б
SETB TIMSK,TOIE1,R16 ; Включаем прерывание по переполнению Т1
; Причем в режиме WGM=1010 переполнение
; будет на FF т.е. таймер работает как
; 8ми разрядный.

 
Осталось только прописать обработчики и вектора:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
         .CSEG
         .ORG $000		; (RESET) 
         RJMP   Reset
         .ORG $002
         RETI			; (INT0) External Interrupt Request 0
         .ORG $004
         RETI 			; (INT1) External Interrupt Request 1
         .ORG $006
         RETI			; (TIMER2 COMP) Timer/Counter2 Compare Match
         .ORG $008
         RETI 			; (TIMER2 OVF) Timer/Counter2 Overflow
         .ORG $00A
         RETI			; (TIMER1 CAPT) Timer/Counter1 Capture Event
         .ORG $00C 
         RJMP Timer1_OCA		; (TIMER1 COMPA) Timer/Counter1 Compare Match A
         .ORG $00E
         RJMP Timer1_OCB		; (TIMER1 COMPB) Timer/Counter1 Compare Match B
         .ORG $010
         RJMP Timer1_OVF 		; (TIMER1 OVF) Timer/Counter1 Overflow
         .ORG $012
         RJMP	Timer0_OV 	; (TIMER0 OVF) Timer/Counter0 Overflow
         .ORG $014
         RETI 			; (SPI,STC) Serial Transfer Complete
         .ORG $016
         RETI     			; (USART,RXC) USART, Rx Complete
         .ORG $018
         RETI			; (USART,UDRE) USART Data Register Empty
         .ORG $01A
         RETI			; (USART,TXC) USART, Tx Complete
         .ORG $01C
         RETI			; (ADC) ADC Conversion Complete
         .ORG $01E
         RETI			; (EE_RDY) EEPROM Ready
         .ORG $020
         RETI			; (ANA_COMP) Analog Comparator
         .ORG $022
         RETI			; (TWI) 2-wire Serial Interface
         .ORG $024
         RETI			; (INT2) External Interrupt Request 2
         .ORG $026
         RETI			; (TIMER0 COMP) Timer/Counter0 Compare Match
         .ORG $028
         RETI			; (SPM_RDY) Store Program Memory Ready
 
	 .ORG   INT_VECTORS_SIZE      	; Конец таблицы прерываний
 
; Interrupts ==============================================
Timer0_OV:	PUSHF
		PUSH	R17
		PUSH	R18
		PUSH	R19
 
		INCM	TCNT
 
		POP	R19
		POP	R18
		POP	R17
		POPF
 
		RETI
 
; Вот наши обработчики на ШИМ
Timer1_OCA:	SBI	PORTD,3
		RETI
 
Timer1_OCB:	SBI	PORTD,6
		RETI
 
Timer1_OVF: 	CBI	PORTD,3
		CBI	PORTD,6
		RETI
; End Interrupts ==========================================

.CSEG
.ORG $000 ; (RESET)
RJMP Reset
.ORG $002
RETI ; (INT0) External Interrupt Request 0
.ORG $004
RETI ; (INT1) External Interrupt Request 1
.ORG $006
RETI ; (TIMER2 COMP) Timer/Counter2 Compare Match
.ORG $008
RETI ; (TIMER2 OVF) Timer/Counter2 Overflow
.ORG $00A
RETI ; (TIMER1 CAPT) Timer/Counter1 Capture Event
.ORG $00C
RJMP Timer1_OCA ; (TIMER1 COMPA) Timer/Counter1 Compare Match A
.ORG $00E
RJMP Timer1_OCB ; (TIMER1 COMPB) Timer/Counter1 Compare Match B
.ORG $010
RJMP Timer1_OVF ; (TIMER1 OVF) Timer/Counter1 Overflow
.ORG $012
RJMP Timer0_OV ; (TIMER0 OVF) Timer/Counter0 Overflow
.ORG $014
RETI ; (SPI,STC) Serial Transfer Complete
.ORG $016
RETI ; (USART,RXC) USART, Rx Complete
.ORG $018
RETI ; (USART,UDRE) USART Data Register Empty
.ORG $01A
RETI ; (USART,TXC) USART, Tx Complete
.ORG $01C
RETI ; (ADC) ADC Conversion Complete
.ORG $01E
RETI ; (EE_RDY) EEPROM Ready
.ORG $020
RETI ; (ANA_COMP) Analog Comparator
.ORG $022
RETI ; (TWI) 2-wire Serial Interface
.ORG $024
RETI ; (INT2) External Interrupt Request 2
.ORG $026
RETI ; (TIMER0 COMP) Timer/Counter0 Compare Match
.ORG $028
RETI ; (SPM_RDY) Store Program Memory Ready

.ORG INT_VECTORS_SIZE ; Конец таблицы прерываний

; Interrupts ==============================================
Timer0_OV: PUSHF
PUSH R17
PUSH R18
PUSH R19

INCM TCNT

POP R19
POP R18
POP R17
POPF

RETI

; Вот наши обработчики на ШИМ
Timer1_OCA: SBI PORTD,3
RETI

Timer1_OCB: SBI PORTD,6
RETI

Timer1_OVF: CBI PORTD,3
CBI PORTD,6
RETI
; End Interrupts ==========================================

Почему я в этих обработчиках не сохраняю регистры и SREG? А незачем! Команды SBI меняют только конкретные биты (а больше нам и не надо), не влияя на флаги и другие регистры.

 
Запустили…

 

 
И получили полную херню. Т.е. ШИМ как бы есть, но почему то адово мерцает. А на осциллографе в этот момент полный треш. Кто виноват? Видимо конфликт прерываний. Осталось только выяснить где именно. Сейчас я вам дам практический пример реалтаймовой отладки 🙂

 
Итак, что мы имеем:

 
ШИМ, как таковой, работает. Скважность меняется. Значит наш алгоритм верен.
Но длительности скачут. Почему? Видимо потому, что что-то мешает им встать вовремя. Когда у нас возникают фронты? Правильно — по прерываниям. А прерывания по таймерам. Т.е. врать не должны. Однако так получается. Давайте узнаем каком месте у нас конфликт.

 
Первым делом надо добавить в код обработчика отладочную инфу. Будем в обработчике прерываний инвертировать бит. Пусть это будет PD7 — зашли в обработчик, инверснули. Зашли — инверснули. В результате, у нас на выходе этого бита будет прямоугольный сигнал, где каждый фронт — сработка прерываний. Послужит нам как линейка, отмеряющая время.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
; Interrupts ==============================================
Timer0_OV:	PUSHF
		PUSH	R17
		PUSH	R18
		PUSH	R19
 
		INCM	TCNT
 
		POP	R19
		POP	R18
		POP	R17
		POPF
 
		RETI
 
; Установка бита ШИМ канала А
Timer1_OCA:	SBI	PORTD,3
		RETI
 
; Установка бита ШИМ канала Б
Timer1_OCB:	SBI	PORTD,6
		RETI
 
;Сброс бита ШИМ канала А и Б
Timer1_OVF: 	CBI	PORTD,3
		CBI	PORTD,6
 
;DEBUG PIN BEGIN ---------------
		PUSHF
		INVBM	PORTD,7    
		POPF
;DEBUG PIN END -----------------
		RETI

; Interrupts ==============================================
Timer0_OV: PUSHF
PUSH R17
PUSH R18
PUSH R19

INCM TCNT

POP R19
POP R18
POP R17
POPF

RETI

; Установка бита ШИМ канала А
Timer1_OCA: SBI PORTD,3
RETI

; Установка бита ШИМ канала Б
Timer1_OCB: SBI PORTD,6
RETI

;Сброс бита ШИМ канала А и Б
Timer1_OVF: CBI PORTD,3
CBI PORTD,6

;DEBUG PIN BEGIN —————
PUSHF
INVBM PORTD,7
POPF
;DEBUG PIN END ——————
RETI

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

 

 
Из картинки стало понятно, что у нас накрывается прерывание по сравнению. Давайте попробуем посмотреть с какими прерыванием происходит конфликт. Особых вариантов у нас нет — прерываний у нас тут четрые. А наиболее очевиден конфликт Timer0_OV vs Timer1_OCA vs Timer1_OCB.

 
OCA и OCB конфликтуют только тогда, когда счетные регистры у них сравниваются — вызов происходит почти одновременно, но сами обработчики короткие — всего несколько тактов, поэтому дребезг не столь сильный.

 
А вот Timer0_OV делает довольно мощный прогруз стека и еще вычитает четырехбайтную переменную. Т.е. тактов на 20 может задержать обработчик установки бита Timer1_OC* от того и вылазят такие зверские дребезги.

 
Давайте проверим эту идею. Разрешим прерывания в обработчике Timer0_0V

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
; Interrupts ==============================================
Timer0_OV:	SEI
		PUSHF
		PUSH	R17
		PUSH	R18
		PUSH	R19
 
		INCM	TCNT
 
		POP	R19
		POP	R18
		POP	R17
		POPF
 
		RETI
 
; Установка бита ШИМ канала А
Timer1_OCA:	SBI	PORTD,3
		RETI
 
; Установка бита ШИМ канала Б
Timer1_OCB:	SBI	PORTD,6
		RETI
 
;Сброс бита ШИМ канала А и Б
Timer1_OVF: 	CBI	PORTD,3
		CBI	PORTD,6
		RETI

; Interrupts ==============================================
Timer0_OV: SEI
PUSHF
PUSH R17
PUSH R18
PUSH R19

INCM TCNT

POP R19
POP R18
POP R17
POPF

RETI

; Установка бита ШИМ канала А
Timer1_OCA: SBI PORTD,3
RETI

; Установка бита ШИМ канала Б
Timer1_OCB: SBI PORTD,6
RETI

;Сброс бита ШИМ канала А и Б
Timer1_OVF: CBI PORTD,3
CBI PORTD,6
RETI

 

 
Картина сразу исправилась. Теперь более важное (для нас важное) прерывание задвигает обработчик от Таймера 0. Но тут надо просекать возможные риски:

 

  • Более глубокий прогруз стека
  • Нарушается атомарный доступ к четырехбайтной переменной TCNT, поэтому если бы у нас было еще какое-то прерывание, меняющее TCNT то его надо было бы запрещать локально. Иначе бы мы получили такой трешняк, что проще заново прогу переписать, чем это отладить

.

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

 
Исходник к статье

Широтно-импульсная модуляция — Википедия. Что такое Широтно-импульсная модуляция

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

Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте. Различают аналоговую ШИМ и цифровую ШИМ, двоичную (двухуровневую) ШИМ и троичную (трёхуровневую) ШИМ[1].

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

Основной причиной применения ШИМ является стремление к повышению КПД при построении вторичных источников питания электронной аппаратуры и в других узлах, например, ШИМ используется для регулировки яркости подсветки LCD-мониторов и дисплеев в телефонах, КПК и т.п..

Тепловая мощность, выделяемая на ключе при ШИМ

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

1. Rtr→∞↔P=U2R→0{\displaystyle R_{tr}\rightarrow \infty \leftrightarrow P={{\frac {{U}^{2}}{R}}\rightarrow 0}}

2. Rtr→0↔P=I2R→0{\displaystyle R_{tr}\rightarrow 0\leftrightarrow P={I}^{2}R\rightarrow 0}

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

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

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

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

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

Аналоговая ШИМ применяется в усилителях низкой частоты класса «D».

Цифровая ШИМ

В двоичной цифровой технике, выходы в которой могут принимать только одно из двух значений, приближение желаемого среднего уровня выхода при помощи ШИМ является совершенно естественным. Схема настолько же проста: пилообразный сигнал генерируется N-битным счётчиком. Цифровые устройства (ЦШИП) работают на фиксированной частоте, обычно намного превышающей реакцию управляемых установок (передискретизация). В периоды между фронтами тактовых импульсов выход ЦШИП остаётся стабильным, на нём действует либо низкий уровень, либо высокий, в зависимости от выхода цифрового компаратора, сравнивающего значение счётчика с уровнем приближаемого цифрового сигнала V(n). Выход за много тактов можно трактовать как череду импульсов с двумя возможными значениями 0 и 1, сменяющими друг друга каждый такт T. Частота появления единичных импульсов получается пропорциональной уровню приближаемого сигнала ~V(n). Единицы, следующие одна за другой, формируют контур одного, более широкого импульса. Длительности полученных импульсов переменной ширины ~V(n) кратны периоду тактирования T, а частота равна 1/(T*2N). Низкая частота означает длительные, относительно T, периоды постоянства сигнала одного уровня, что даёт невысокую равномерность распределения импульсов.

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

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

В цифровой ШИМ период делится на части, которые заполняются прямоугольными подымпульсами. Средняя величина за период зависит от количества прямоугольных подымпульсов.
Цифровая ШИМ — приближение бинарного сигнала (с двумя уровнями — вкл/выкл) к многоуровневому или непрерывному сигналу так, чтобы их средние значения за период времени t2−t1{\displaystyle t_{2}-t_{1}} были бы приблизительно равны.

Формально это можно записать так:

∫t1t2x(t)dtt2−t1=∑i=1nA∗ΔTit2−t1,{\displaystyle {\int _{t_{1}}^{t_{2}}{x(t)\,dt} \over {t_{2}-t_{1}}}={\sum _{i=1}^{n}{A*\Delta T_{i}} \over {t_{2}-t_{1}}},}

где x(t){\displaystyle x(t)} — входной сигнал в пределах от t1 до t2, а
ΔTi=t2−t1n{\displaystyle \Delta T_{i}={\frac {t_{2}-t_{1}}{n}}} — продолжительность i -го ШИМ подымпульса, каждого с амплитудой A. n выбирается таким образом, чтобы за период разность суммарных площадей (энергий) обеих величин была меньше допустимой:

∫t1t2x(t)dt−∑i=1nA∗ΔTi<E{\displaystyle \int _{t_{1}}^{t_{2}}{x(t)\,dt}-\sum _{i=1}^{n}{A*\Delta T_{i}}<E}.

Управляемыми «уровнями», как правило, являются параметры питания силовой установки, например, напряжение импульсных преобразователей /регуляторов постоянного напряжения/ или скорость электродвигателя. Для импульсных источников x(t) = Uconst стабилизации.

В цифровой ШИМ прямоугольные подымпульсы, заполняющие период, могут стоять в любом месте периода, на среднюю величину за период влияет только их количество. Например, при разбиении периода на 8 частей последовательности 11110000, 11101000, 11100100, 11100010, 11100001 и др. дают одинаковую среднюю за период величину, но отдельно стоящие «1» ухудшают режим работы ключа (транзистора).

В качестве ШИМ можно использовать даже COM-порт. Так как 0 передаётся как 0 0000 0000 1 (8 бит данных + старт/стоп), а 255 как 0 1111 1111 1, то диапазон выходных напряжений — 10-90 % с шагом в 10 %.

См. также

Примечания

Ссылки

Широтно-импульсная модуляция — Википедия

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

Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте. Различают аналоговую ШИМ и цифровую ШИМ, двоичную (двухуровневую) ШИМ и троичную (трёхуровневую) ШИМ[1].

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

Основной причиной применения ШИМ является стремление к повышению КПД при построении вторичных источников питания электронной аппаратуры и в других узлах, например, ШИМ используется для регулировки яркости подсветки LCD-мониторов и дисплеев в телефонах, КПК и т.п..

Тепловая мощность, выделяемая на ключе при ШИМ

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

1. Rtr→∞↔P=U2R→0{\displaystyle R_{tr}\rightarrow \infty \leftrightarrow P={{\frac {{U}^{2}}{R}}\rightarrow 0}}

2. Rtr→0↔P=I2R→0{\displaystyle R_{tr}\rightarrow 0\leftrightarrow P={I}^{2}R\rightarrow 0}

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

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

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

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

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

Аналоговая ШИМ применяется в усилителях низкой частоты класса «D».

Цифровая ШИМ

В двоичной цифровой технике, выходы в которой могут принимать только одно из двух значений, приближение желаемого среднего уровня выхода при помощи ШИМ является совершенно естественным. Схема настолько же проста: пилообразный сигнал генерируется N-битным счётчиком. Цифровые устройства (ЦШИП) работают на фиксированной частоте, обычно намного превышающей реакцию управляемых установок (передискретизация). В периоды между фронтами тактовых импульсов выход ЦШИП остаётся стабильным, на нём действует либо низкий уровень, либо высокий, в зависимости от выхода цифрового компаратора, сравнивающего значение счётчика с уровнем приближаемого цифрового сигнала V(n). Выход за много тактов можно трактовать как череду импульсов с двумя возможными значениями 0 и 1, сменяющими друг друга каждый такт T. Частота появления единичных импульсов получается пропорциональной уровню приближаемого сигнала ~V(n). Единицы, следующие одна за другой, формируют контур одного, более широкого импульса. Длительности полученных импульсов переменной ширины ~V(n) кратны периоду тактирования T, а частота равна 1/(T*2N). Низкая частота означает длительные, относительно T, периоды постоянства сигнала одного уровня, что даёт невысокую равномерность распределения импульсов.

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

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

В цифровой ШИМ период делится на части, которые заполняются прямоугольными подымпульсами. Средняя величина за период зависит от количества прямоугольных подымпульсов.
Цифровая ШИМ — приближение бинарного сигнала (с двумя уровнями — вкл/выкл) к многоуровневому или непрерывному сигналу так, чтобы их средние значения за период времени t2−t1{\displaystyle t_{2}-t_{1}} были бы приблизительно равны.

Формально это можно записать так:

∫t1t2x(t)dtt2−t1=∑i=1nA∗ΔTit2−t1,{\displaystyle {\int _{t_{1}}^{t_{2}}{x(t)\,dt} \over {t_{2}-t_{1}}}={\sum _{i=1}^{n}{A*\Delta T_{i}} \over {t_{2}-t_{1}}},}

где x(t){\displaystyle x(t)} — входной сигнал в пределах от t1 до t2, а
ΔTi=t2−t1n{\displaystyle \Delta T_{i}={\frac {t_{2}-t_{1}}{n}}} — продолжительность i -го ШИМ подымпульса, каждого с амплитудой A. n выбирается таким образом, чтобы за период разность суммарных площадей (энергий) обеих величин была меньше допустимой:

∫t1t2x(t)dt−∑i=1nA∗ΔTi<E{\displaystyle \int _{t_{1}}^{t_{2}}{x(t)\,dt}-\sum _{i=1}^{n}{A*\Delta T_{i}}<E}.

Управляемыми «уровнями», как правило, являются параметры питания силовой установки, например, напряжение импульсных преобразователей /регуляторов постоянного напряжения/ или скорость электродвигателя. Для импульсных источников x(t) = Uconst стабилизации.

В цифровой ШИМ прямоугольные подымпульсы, заполняющие период, могут стоять в любом месте периода, на среднюю величину за период влияет только их количество. Например, при разбиении периода на 8 частей последовательности 11110000, 11101000, 11100100, 11100010, 11100001 и др. дают одинаковую среднюю за период величину, но отдельно стоящие «1» ухудшают режим работы ключа (транзистора).

В качестве ШИМ можно использовать даже COM-порт. Так как 0 передаётся как 0 0000 0000 1 (8 бит данных + старт/стоп), а 255 как 0 1111 1111 1, то диапазон выходных напряжений — 10-90 % с шагом в 10 %.

См. также

Примечания

Ссылки

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

[Analog Devices Wiki]

Цель

В этой лаборатории мы исследуем широтно-импульсную модуляцию и ее использование в различных приложениях.

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

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

Рабочий цикл описывает количество времени, в течение которого сигнал находится в высоком (включенном) состоянии, как процент от общего времени, необходимого для завершения одного цикла.

На следующей диаграмме показаны последовательности импульсов при рабочем цикле 0%, 25% и 100%.

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

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

Материалы

Модуль активного обучения ADALM2000
Макетная плата без пайки и комплект перемычек
1 Операционный усилитель OP97
1 Резистор 1 кОм
1 потенциометр 10 кОм

Широтно-импульсный модулятор — Принцип работы

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

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

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

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

Рассмотрим схему на рисунке 1.

Рисунок 1. Принцип работы PWM.

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

Настройка оборудования

Создайте следующую макетную схему для широтно-импульсной модуляции.

Рисунок 2. Принцип работы ШИМ — макетная схема.

Процедура

Используйте первый генератор формы волны в качестве несущего сигнала, обеспечивающего размах амплитуды 4 В, сдвиг 2,5 В, возбуждение треугольной волны 1 кГц для схемы. Используйте второй генератор сигналов в качестве сигнала модуляции с размахом амплитуды 3 В, 2.Смещение 5 В, синусоидальная волна 50 Гц.

Подайте на операционный усилитель + 5В от источника питания. Настройте осциллограф так, чтобы входной сигнал отображался на канале 1, а выходной сигнал отображался на канале 2.

На рисунке представлены два канала генератора сигналов, содержащие два входных сигнала (оранжевый — сигнал несущей, фиолетовый — сигнал модуляции).

График выходного сигнала на канале 2 осциллографа представлен на рисунке 4.

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

Если пик модуляции меньше, чем пик несущего сигнала, выход будет точным ШИМ-представлением сигнала модуляции. редактировать

Управление шириной импульса с использованием модуляции постоянного напряжения

Фон

Для этого конкретного приложения мы будем использовать простой операционный усилитель в конфигурации режима переключения (дополнительные сведения см. В разделе «Действие: операционный усилитель в качестве компаратора»), чтобы продемонстрировать широтно-импульсную модуляцию постоянного напряжения.

Рассмотрим схему на рисунке 5.

Рисунок 5. Регулировка ширины импульса с использованием напряжения модуляции постоянного тока.

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

Настройка оборудования

Создайте следующую макетную схему для управления шириной импульса, используя напряжение модуляции постоянного тока.

Рисунок 6. Управление шириной импульса с помощью модуляции постоянного напряжения — схема макетной платы

Процедура

Используйте первый генератор сигналов в качестве источника Vin, чтобы обеспечить возбуждение треугольной волны амплитудой 5 В от пика до пика, 1 кГц , для схемы. Используйте второй генератор сигналов в качестве источника постоянного напряжения с размахом амплитуды 5 В.Подайте на операционный усилитель + 5В от источника питания. Настройте осциллограф так, чтобы входной сигнал отображался на канале 1, а выходной сигнал отображался на канале 2.

Анимированный сюжет представлен на рисунке 7.

Рисунок 7. Регулировка ширины импульса с помощью модуляции постоянного тока. Напряжение — формы сигналов.

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

Фиксированная 50% ШИМ с нестабильным мультивибратором

Фон

Рассмотрим схему на рисунке 8.

Рисунок 8. ШИМ с нестабильным мультивибратором.

На схеме показан нестабильный мультивибратор на одном операционном усилителе. Функциональность легко понять при рассмотрении функционального принципа триггера Шмитта (схема компаратора с гистерезисом изучается в Activity: Op Amp as Comparator):
Вход триггера Шмитта, который идентичен инвертирующему входу операционного усилителя, подключен к выходу схемы через резисторно-конденсаторную цепь.В то время как напряжение конденсатора (которое также является входом триггера Шмитта) ниже нижнего порога, выходное напряжение равно положительному напряжению питания схемы. Теперь конденсатор заряжается через резистор R 3 , пока не будет достигнут верхний порог срабатывания триггера Шмитта. В результате выходное напряжение операционного усилителя снижается до отрицательного напряжения питания. Теперь конденсатор разряжается через R 3 , пока напряжение на этих устройствах не достигнет нижнего порога срабатывания триггера Шмитта.Выходное напряжение операционного усилителя приводится к положительному напряжению питания, и весь процесс начинается снова.

Преимущество этой схемы в том, что ей не требуется M2K для генерации несущей (но рабочий цикл фиксирован на 50%).

Настройка оборудования

Постройте следующую макетную схему для ШИМ с нестабильным мультивибратором.

Рис. 9. ШИМ с макетной платой нестабильного мультивибратора.

Процедура

Подайте в цепь +/- 5В от источника питания.Настройте осциллограф так, чтобы выходной сигнал отображался на канале 1.

График с выходным сигналом на канале 1 осциллографа представлен на рисунке 10.

Рисунок 10. Форма выходного сигнала ШИМ с нестабильным мультивибратором.

Обратите внимание, что рабочий цикл выходного сигнала составляет примерно 50%, в то время как значения низкого / высокого напряжения имеют тенденцию достигать положительных / отрицательных значений питания.

В предыдущем примере мы сгенерировали ШИМ с фиксированным рабочим циклом 50% с использованием нестабильных мультивибраторов.Но как мы можем отрегулировать рабочий цикл? Для этого нам нужно будет немного изменить схему.

Рассмотрим схему, представленную на рисунке 11.

Рисунок 11. Регулировка рабочего цикла для ШИМ с мультивибратором.

Резистор R 3 на рисунке 8 был заменен потенциометром и вставлены два диода. Теперь зарядный ток конденсатора проходит через D 1 , а ток разряда проходит через D 2 .В зависимости от настройки потенциометра VR 1 сопротивление зарядного тока, протекающего через верхнюю ветвь цепи, отличается от сопротивления разрядного тока, протекающего через нижнюю ветвь.

Настройка оборудования

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

Рисунок 12. Регулировка рабочего цикла для ШИМ с макетной схемой мультивибратора.

Процедура

Подайте в цепь +/- 5В от источника питания.Настройте осциллограф так, чтобы выходной сигнал отображался на канале 1, а напряжение на конденсаторе (на отрицательном входе операционного усилителя) отображалось на канале 2.

Измените значение потенциометра и обратите внимание на изменение рабочего цикла. Пример графика представлен на рисунке 13.

Рис. 13. Регулировка рабочего цикла для ШИМ с нестабильными формами сигналов мультивибратора.

В этом примере рабочий цикл был установлен примерно на 25%. Всякий раз, когда рабочий цикл изменяется, неизбежно происходит небольшое изменение частоты переключения, потому что две цепи связи на инвертирующем и неинвертирующем входе обе подключены к выходу операционного усилителя.

Продолжаем работу с лабораторией

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

Постройте описанные выше схемы, используя AD8561 из набора деталей, и обсудите любые заметные изменения поведения схемы и входных / выходных сигналов.

Дополнительная литература

университет / курсы / электроника / electronics-lab-pulse-width-modulation.txt · Последнее изменение: 25 июня 2020 г., 22:07 (внешнее редактирование)

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

— learn.sparkfun.com

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

Широтно-импульсная модуляция (PWM) — это причудливый термин для описания типа цифрового сигнала. Широтно-импульсная модуляция используется во множестве приложений, включая сложные схемы управления. Обычно мы используем их в SparkFun для управления затемнением светодиодов RGB или для управления направлением сервопривода. Мы можем достичь ряда результатов в обоих приложениях, потому что широтно-импульсная модуляция позволяет нам изменять, сколько времени сигнал находится на высоком уровне аналоговым способом.Хотя сигнал может быть только высоким (обычно 5 В) или низким (земля) в любое время, мы можем изменить пропорцию времени, в течение которого сигнал является высоким, по сравнению с тем, когда он низкий в течение определенного интервала времени.

Two servo motors used to control the pan/tilt of a robotic claw with PWM

Роботизированная клешня, управляемая серводвигателем с использованием широтно-импульсной модуляции

Рекомендуемая литература

Некоторые базовые руководства, которые вы могли бы рассмотреть в первую очередь:

Рабочий цикл

Когда сигнал высокий, мы называем это «вовремя».Для описания количества «вовремя» мы используем понятие рабочего цикла. Рабочий цикл измеряется в процентах. Процент рабочего цикла конкретно описывает процент времени, в течение которого цифровой сигнал остается включенным в интервале или периоде времени. Этот период обратно пропорционален частоте сигнала.

Если цифровой сигнал проводит половину времени включенным, а другую половину — выключенным, мы бы сказали, что цифровой сигнал имеет рабочий цикл 50% и напоминает идеальную прямоугольную волну. Если процентное значение выше 50%, цифровой сигнал проводит больше времени в высоком состоянии, чем в низком состоянии, и наоборот, если рабочий цикл меньше 50%.Вот график, иллюстрирующий эти три сценария:

Примеры рабочего цикла 50%, 75% и 25%

100% рабочий цикл будет таким же, как установка напряжения на 5 В (высокое). Рабочий цикл 0% будет таким же, как заземление сигнала.

Примеры

Вы можете управлять яркостью светодиода, регулируя рабочий цикл.

Three dim LEDs

ШИМ используется для управления яркостью светодиода

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

Red + Blue = Purple... etc

Основы смешивания цветов

Если все три горят в равной степени, в результате будет белый свет различной яркости. Синий, равно смешанный с зеленым, станет бирюзовым. В качестве немного более сложного примера попробуйте полностью включить красный, зеленый 50% рабочего цикла и полностью выключить синий, чтобы получить оранжевый цвет.

pick a color in the spectrum, then use PWM to achieve it

PWM можно использовать для смешивания цветов RGB

При управлении светодиодами частота прямоугольной волны должна быть достаточно высокой, чтобы получить надлежащий эффект затемнения.Волна 20% рабочего цикла при 1 Гц будет очевидна, что она включается и выключается для ваших глаз, в то время как 20% рабочий цикл при 100 Гц или выше будет выглядеть тусклее, чем полностью включенный. По сути, период не может быть слишком большим, если вы стремитесь к эффекту затемнения с помощью светодиодов.

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

Частота / период зависят от управления конкретным сервоприводом. Ожидается, что типичный серводвигатель будет обновляться каждые 20 мс с импульсом от 1 до 2 мс, или, другими словами, от 5 до 10% рабочего цикла для формы волны 50 Гц. С импульсом 1,5 мс серводвигатель будет в естественном положении на 90 градусов. При импульсе 1 мс сервопривод будет в положении 0 градусов, а при импульсе 2 мс сервопривод будет в положении 180 градусов. Вы можете получить полный диапазон движения, обновив сервопривод промежуточным значением.

Servo Motor at a controlled specific angle

ШИМ используется для удержания серводвигателя под углом 90 градусов относительно его кронштейна

Ресурсы и движение вперед

Широтно-импульсная модуляция используется в различных приложениях, особенно для управления. Вы уже знаете, что его можно использовать для затемнения светодиодов и управления углом наклона серводвигателей, и теперь вы можете начать исследовать другие возможные применения. Если вы чувствуете себя потерянным, не стесняйтесь проверить SparkFun Inventor’s Kit, в котором есть примеры использования широтно-импульсной модуляции.Если вы готовы немедленно приступить к кодированию и иметь Arduino, посмотрите здесь пример кодирования PWM.

Не стесняйтесь исследовать:

.

Что это такое и как работает?

Цифровые сигналы имеют два положения: включено или выключено, что сокращенно интерпретируется как 1 или 0. Аналоговые сигналы, с другой стороны, могут быть включены, выключены, наполовину, две трети пути до включения и бесконечное число. позиций от 0 до 1 либо приближается к 1, либо уменьшается до нуля. В электронике они используются по-разному, но очень часто они должны работать вместе (именно тогда мы называем это «электроникой со смешанными сигналами»). Иногда нам приходится принимать аналоговый (реальный) входной сигнал (например.g., температура) в микроконтроллер (который понимает только цифровые). Часто инженеры переводят этот аналоговый вход в цифровой вход для микроконтроллера (MCU) с помощью аналого-цифрового преобразователя. А как насчет выходов?

PWM — это способ управления аналоговыми устройствами с цифровым выходом. Другими словами, вы можете выводить модулирующий сигнал с цифрового устройства, такого как MCU, для управления аналоговым устройством. Это одно из основных средств, с помощью которых микроконтроллеры управляют аналоговыми устройствами, такими как двигатели с регулируемой скоростью, регулируемые огни, исполнительные механизмы и динамики.Однако ШИМ не является настоящим аналоговым выходом. ШИМ «подделывает» аналогичный результат путем подачи мощности импульсами или короткими всплесками регулируемого напряжения.

Рисунок 1: Пример сигнала ШИМ, показанного при нескольких рабочих циклах и высоком уровне напряжения 5 вольт. Красная линия — это среднее напряжение, которое испытывает приводимое устройство (например, двигатель). (Источник: Тимоти Хирзель,)

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

Следовательно, у вас не будет резкой остановки мощности, если двигатель приводится в действие ШИМ. Продолжительность времени, в течение которого импульс находится в заданном состоянии (высокий / низкий), является «шириной» пульсовой волны.

Рисунок 2: Синие линии — это выход ШИМ от MCU, а красная линия — среднее напряжение. В этом случае ширина импульса (и соответствующий рабочий цикл) изменяется так, что среднее напряжение больше похоже на аналоговый выход, который не находится в устойчивом состоянии, как показано на рисунке 1. (Источник: Zureks — собственная работа, CC BY- SA 3.0,)

Устройство, управляемое ШИМ, в конечном итоге ведет себя как среднее значение импульсов. Средний уровень напряжения может быть постоянным или подвижным (динамическим / изменяющимся во времени).Чтобы упростить пример, предположим, что ваш вентилятор с ШИМ-приводом имеет высокое напряжение 24 В. Если импульс генерируется с высоким уровнем в 50% времени, мы называем это коэффициентом заполнения 50%. Термин рабочий цикл используется повсюду в электронике, но в каждом случае рабочий цикл представляет собой сравнение «включено» и «выключено».

Возвращаясь к нашему примеру с двигателем вентилятора, если мы знаем, что высокое напряжение — 24, низкое — 0 В, а рабочий цикл — 50%, то мы можем определить среднее напряжение, умножив рабочий цикл на высокий уровень импульса.Если вы хотите, чтобы двигатель работал быстрее, вы можете установить на выходе ШИМ более высокий рабочий цикл. Чем выше частота высоких импульсов, тем выше среднее напряжение и тем быстрее будет вращаться двигатель вентилятора. ЕСЛИ вы создавали свой собственный выход ШИМ, подключая вентилятор к розетке и вынимая из нее с равными интервалами: 1 секунда в розетку, 1 секунда — выход, то вы действуете как цифровой выход, который управляет вентилятором со стабильным средним значением 12 В. .

Аналогия возникает, когда вы увеличиваете частоту включения и выключения розетки так, чтобы она была в розетке только на ½ секунды, а из розетки — на ½ секунды.На данный момент ваш рабочий цикл все еще составляет 50%, но вы увеличили количество циклов в секунду до двух. В электронике мы определяем частоту как количество циклов в секунду или герц (Гц). Вы увеличили скорость вращения вентилятора. Эти ½ секунды — это ширина создаваемого вами импульса.

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

Если вы возьмете рабочий цикл и умножите его на высокий уровень напряжения (который является цифровым состоянием «включено» или «1» для MCU), вы получите средний уровень напряжения, который видит двигатель. в тот момент.

Рабочий цикл

x уровень высокого напряжения = среднее напряжение

Теперь вставьте слово «мгновенный», и вы поймете, что вещи динамически меняются… что выглядит более аналогично (см. Рисунок 2):

Мгновенный рабочий цикл x уровень высокого напряжения = мгновенное среднее напряжение

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

Единственное, что во всем этом не изменилось, — это высокий уровень напряжения, потому что «on» всегда одинаково для цифрового выхода; простое включение и выключение выхода с разной скоростью и в течение разного времени — вот как можно получить широтно-импульсную модуляцию для имитации аналогового выхода.MCU цифровые. Примером того, что может создать настоящий аналоговый выход, может быть преобразователь (то, что напрямую переводит физическое явление в аналоговый сигнал). Но преобразователи — это другое аналоговое обсуждение.

.

Введение в широтно-импульсную модуляцию

Рассмотрим мощный метод управления аналоговыми цепями с помощью цифровых выходов микропроцессора.

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

Аналоговые схемы

Аналоговый сигнал имеет постоянно меняющееся значение с бесконечным разрешением как по времени, так и по величине.Батарея на девять вольт является примером аналогового устройства, поскольку ее выходное напряжение не равно 9 В, изменяется со временем и может принимать любое числовое значение. Точно так же величина тока, потребляемого от батареи, не ограничивается конечным набором возможных значений. Аналоговые сигналы отличаются от цифровых сигналов, поскольку последние всегда принимают значения только из конечного набора заранее определенных возможностей, таких как набор {0V, 5V}.

Аналоговые напряжения и токи можно использовать для прямого управления вещами, например громкостью автомобильного радио.В простом аналоговом радиоприемнике ручка соединена с переменным резистором. Когда вы поворачиваете ручку, сопротивление увеличивается или уменьшается. При этом ток, протекающий через резистор, увеличивается или уменьшается. Это изменяет количество тока, подаваемого на динамики, тем самым увеличивая или уменьшая громкость. Аналоговая схема — это такая же схема, как радио, выход которой линейно пропорционален входу.

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

Цифровое управление

За счет цифрового управления аналоговыми цепями можно значительно снизить системные затраты и энергопотребление. Более того, многие микроконтроллеры и DSP уже включают в себя контроллеры PWM на кристалле, что упрощает реализацию.

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

На рисунке 1 показаны три различных сигнала ШИМ. На рисунке 1а показан выход ШИМ при рабочем цикле 10%. То есть сигнал включен 10% периода, а остальные 90% выключен.На рисунках 1b и 1c показаны выходы ШИМ при рабочем цикле 50% и 90% соответственно. Эти три выхода ШИМ кодируют три различных значения аналогового сигнала: 10%, 50% и 90% от полной мощности. Если, например, напряжение питания 9 В, а рабочий цикл 10%, будет получен аналоговый сигнал 0,9 В.


Рисунок 1: ШИМ-сигналы с различной скважностью

На рисунке 2 показана простая схема, которая может управляться с помощью ШИМ. На рисунке батарея 9 В питает лампочку накаливания.Если бы мы замкнули выключатель, соединяющий батарею и лампу, на 50 мс, лампочка в течение этого интервала будет получать 9 В. Если мы затем разомкнем выключатель на следующие 50 мс, лампа получит 0 В. Если мы будем повторять этот цикл 10 раз в секунду, лампочка будет гореть, как если бы она была подключена к батарее 4,5 В (50% от 9 В). Мы говорим, что рабочий цикл составляет 50%, а частота модуляции составляет 10 Гц.


Рисунок 2: Простая схема

Для большинства нагрузок, как индуктивных, так и емкостных, требуется гораздо более высокая частота модуляции, чем 10 Гц.Представьте, что наша лампа была включена на пять секунд, затем выключена на пять секунд, а затем снова включена. Рабочий цикл по-прежнему будет составлять 50%, но лампа будет ярко гореть в течение первых пяти секунд и выключаться в следующие. Чтобы лампочка имела напряжение 4,5 В, период цикла должен быть коротким по сравнению с временем реакции нагрузки на изменение состояния переключателя. Чтобы добиться желаемого эффекта диммерной (но всегда горящей) лампы, необходимо увеличить частоту модуляции. То же самое и в других приложениях ШИМ.Общий диапазон частот модуляции от 1 кГц до 200 кГц.

Аппаратные контроллеры

Многие микроконтроллеры включают в себя контроллеры ШИМ. Например, Microchip PIC16C67 включает в себя два, каждый из которых имеет выбираемое время и период. Рабочий цикл — это отношение продолжительности включения к периоду; частота модуляции обратна периоду. В технических данных указано, что для запуска ШИМ программное обеспечение должно:

  • Установите период во встроенном таймере / счетчике, который обеспечивает модулирующую меандр.
  • Установите время включения в регистре управления ШИМ.
  • Установите направление вывода ШИМ, который является одним из выводов ввода-вывода общего назначения.
  • Запустить таймер.
  • Включите ШИМ-контроллер.

Хотя конкретные контроллеры ШИМ различаются по программным деталям, основная идея в целом одна и та же.

Связь и управление

Одним из преимуществ ШИМ является то, что сигнал остается цифровым на всем пути от процессора до управляемой системы; Цифро-аналоговое преобразование не требуется.Сохранение цифрового сигнала сводит к минимуму шумовые эффекты. Шум может повлиять на цифровой сигнал только в том случае, если он достаточно силен, чтобы изменить логическую 1 на логический 0 или наоборот.

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

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

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

Чтобы установить давление на тормоз, скажем, 100 фунтов на квадратный дюйм, программное обеспечение будет выполнять обратный поиск, чтобы определить рабочий цикл, который должен создавать такое количество силы.Затем он установит рабочий цикл ШИМ на новое значение, и тормоз отреагирует соответствующим образом. Если в системе имеется датчик, рабочий цикл можно регулировать с помощью управления с обратной связью, пока не будет точно достигнуто желаемое давление.

PWM экономичен, компактен и невосприимчив к шуму. И теперь это в твоей сумке уловок. Так что используйте это.

Майкл Барр — главный редактор ESP. Он также является автором книги «Программирование встроенных систем на C и C ++ » (O’Reilly, 1999) и адъюнкт-преподавателем Университета Мэриленда.

Пишите ему по адресу.

Вернуться к сентябрю 2001 г. Содержание

Продолжить чтение

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *