Pwm сигнал – Все про широтно-импульсную модуляцию (ШИМ)

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Цифровая ШИМ

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

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

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

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

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

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

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

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

ledjournal.info

Что такое ШИМ-контроллер PWM и для чего он нужен

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

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

Аббревиатура ШИМ расшифровывается, как широтно-импульсный модулятор. На английском это будет так — pulse-width modulation или PWM. В теле- и радио-технике ШИМ-контроллеры используются для преобразования напряжения, их можно встетить даже в качестве узлов системы управления скоростью электроприводов в бытовых приборах, меняя скорость электродвигателя. PWM-контроллер есть даже в обычных импульсных блоках питания.

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

Главные плюсы ШИМ:

- маленькие габариты;
- отличное быстродействие;
- высокая надёжность;
- низкая стоимость.

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

Выходы ШИМ-контроллера

Стандартная схема ШИМ-контроллера, который используется в теле-, радио- и иной электронной аппаратуре, характеризуется наличием нескольких выходов.

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

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

Вывод контроля питания (VCC) — следит, чтобы напряжение питания микросхемы было выше определенного значения. Обычно этот контакт соединяют с VC. Если напряжение на этом выводе падает ниже заданного порогового значения для данного PWM-контроллера, то контроллер выключается. Если этого не делать, то при снижении напряжение на выходе схемы, то транзисторы начнут открываться не полностью и будут быстро нагреваться, что приведёт к поломке.

Выход контроллера OUT – это выходное управляющее напряжение, другими словами отсюда подаётся управляющий ШИМ-сигнал для силовых ключей. Тут надо отметить, что микросхемы бывают разные. Например, есть с друмя выходами — двухтактные, которые применяются для управления двухплечевыми каскадами. Да и сам выходной каскад может быть одно- и двухтактным. Тут главное не запутаться!

Вывод VREF — Опорное напряжение. Обеспечивает работу функции формирования стабильно опорного напряжения. Как правило, екомендуется соединять его с общим проводом конденсатором 1 мкФ для повышения качества и стабильности опорного напряжения.

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

Вывод ILIMREF — задаёт значение ограничения выходного тока на выводе ILIM.

Вывод SS — так называемый «мягкий старт». Напряжение на этом контакте ограничивает максимально возможную ширину импульсов. Сюда ШИМ-контроллер подает ток фиксированной силы.

Вывод RtCt – используется для подключения времязадающей RC-цепи, используемой для определения частоты ШИМ-сигнала.

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

Вывод CLOCK – тактовые импульсы. Используются для синхронизации между собой сразу нескольких ШИМ-контроллеров. В этом случае RC-цепь подключается только к ведущему контроллеру, RT ведомых соединяется с Vref, а CT ведомых соединяюся с общим.

Вывод INV — это инвертирующий вход компаратора. На нём построен усилитель ошибки. Чем больше напряжение на INV, тем длиннее выходные импульсы.

Вывод NONINV – это неинвертирующий вход компаратора. Его обычно подключают к общему проводу — GND.

Вывод EAOUT — выход усилителя ошибки — Error Amplifier Output. С этого вывода осуществляется частотная коррекция усилителя ошибки, путём подачи сигналов на INV через частотозависимые цепи. Дело в том, что PWM-контроллер достаточно медленно реагирует на воздействие через вход усилителя ошибки и потому схема может сгореть из-за возбуждения. Поэтому и применяется вывод EAOUT.

Как проверить ШИМ-контроллер

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

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

Шаг 1. Внимательно осмотреть в выключенном состоянии сам источник питания, в котором установлен PWM. В частности надо тщательно осмотреть электролитические конденсаторы на предмет вздутости.

Шаг 2. Провести проверку предохранителя и элементов входного фильтра блока питания на исправность.

Шаг 3. Провести проверку на короткое замыкание или обрыв диодов выпрями­тельного моста. Прозвонить их можно не вы­паивая из платы. При этом надо быть уверен­ным, что проверяемая цепь не шунтируется обмотками трансформатора или резистором. Если есть на это подозрение, то всё таки придётся выпаивать элементы и проверять уже по отдельности.

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

Шаг 5. Провести проверку силовых транзисторов высокочастотного преобразователя и тран­зисторов каскада управления. При этом в обязательном порядке проверьте возвратные диоды, которые включенны параллельно электродам коллектор-эмиттер силовых транзисторов.

Проверка ШИМ-контроллера — видео инструкции:

set-os.ru

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 то его надо было бы запрещать локально. Иначе бы мы получили такой трешняк, что проще заново прогу переписать, чем это отладить

.

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

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

easyelectronics.ru

ШИМ — широтно-импульсная модуляция | joyta.ru

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

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

Принцип действия ШИМ

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

Также можно отметить, что сумма времени высокого и низкого сигнала определяет период сигнала:

где:

  • Ton — время высокого уровня
  • Toff — время низкого уровня
  • T — период сигнала

Время высокого уровня и время низкого уровня сигнала показано на нижнем рисунке. Напряжение U1- это состояния высокого уровня сигнала, то есть его амплитуда.

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

Расчет коэффициента заполнения ШИМ

Расчет коэффициента заполнения ШИМ на примере:

 

Для расчета процентного коэффициента заполнения необходимо выполнить аналогичные вычисления, а результат умножить на 100%:

Как следует из расчета, на данном примере, сигнал (высокого уровня) характеризуется заполнением, равным 0,357 или иначе 37,5%. Коэффициент заполнения является абстрактным значением.

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

Значение T, в нашем примере, следует взять уже в секундах для того, чтобы совпали единицы в формуле. Поскольку, формула частоты имеет вид 1/сек, поэтому 800ms переведем в 0,8 сек.

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

Для вычисления среднего значения напряжения ШИМ необходимо знать коэффициент заполнения, поскольку среднее значение напряжения является произведением коэффициента заполнения и амплитуды напряжения сигнала.
Для примера, коэффициент заполнения был равен 37,5% (0,357) и амплитуда напряжения U1 = 12В даст среднее напряжение Uср:

В этом случае среднее напряжение сигнала ШИМ составляет 4,5 В.

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

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

Это может быть биполярный или полевой транзистор. На следующих примерах будет использован биполярный транзистор BC547.


Пример управления светодиодом при помощи ШИМ.

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


Упрощенная схема управления светодиодом.

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

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

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

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

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

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

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

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

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


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

Для сглаживания всплесков питания между клеммами двигателя, можно подключить к ним параллельно конденсатор небольшой емкости (100nF), который будет стабилизировать напряжение между последовательными переключениями транзистора. Это также снизит помехи, создаваемые частыми переключениями транзистора VT1.

www.joyta.ru

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

Принцип ШИМ – широтно-импульсная модуляция заключается в изменении ширины импульса при постоянстве частоты следования импульса. Амплитуда импульсов при этом неизменна.

Широтно-импульсное регулирование находит применение там, где требуется регулировать подаваемую к нагрузке мощность. Например, в схемах управления электродвигателями постоянного тока, в импульсных преобразователях, для регулирования яркости светодиодных светильников, экранов ЖК-мониторов, дисплеев в смартфонах и планшетах и т.п.

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

Широтно-импульсная модуляция бывает аналоговой и цифровой.

Аналоговая широтно-импульсная модуляция

Как уже упоминалось выше, частота сигнала и его амплитуда при ШИМ всегда постоянны. Один из важнейших параметров сигнала ШИМ – это коэффициент заполнения, равный отношению длительности импульса t к периоду импульса T. D = t/T. Так, если имеем сигнал ШИМ с длительностью импульса 300 мкс и периодом импульса 1000 мкс, коэффициент заполнения составит 300/1000 = 0,3. Коэффициент заполнения также выражается в процентах, для чего коэффициент заполнения умножается на 100%. По примеру выше процентный коэффициент заполнения составляет 0,3 х 100% = 30%.

Скважность импульса – это отношение периода импульсов к их длительности, т.е. величина, обратная коэффициенту заполнения. S = T/t.

Частота сигнала определяется как величина, обратная периоду импульса, и представляет собой количество полных импульсов за 1 секунду. Для примера выше при периоде 1000 мкс = 0,001 с, частота составляет F = 1/0,001 – 1000 (Гц).

Смысл ШИМ заключается в регулировании среднего значения напряжения путем изменения коэффициента заполнения. Среднее значение напряжения равно произведению коэффициента заполнения и амплитуды напряжения. Так, при коэффициенте заполнения 0,3 и амплитуде напряжения 12 В среднее значение напряжения составит 0,3 х 12 = 3,6 (В). При изменении коэффициента заполнения в теоретически возможных пределах от 0% до 100% напряжение будет изменяться от 0 до 12 В, т.е. Широтно-импульсная модуляция позволяет регулировать напряжение в пределах от 0 до амплитуды сигнала. Что и используется для регулирования скорости вращения электродвигателя постоянного тока или яркости свечения светильника.

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

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

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

При управлении посредством ШИМ скорости вращения двигателя постоянного тока частота ШИМ должна быть очень высокой, и лежать за пределами слышимых звуковых частот, т.е. превышать 15-20 кГц, в противном случае двигатель будет «звучать», издавая раздражающий слух писк с частотой ШИМ. От частоты зависит и стабильность работы двигателя. Низкочастотный сигнал ШИМ с невысоким коэффициентом заполнения приведет к нестабильной работе двигателя и даже возможной его остановке.

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

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

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

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

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

Цифровая широтно-импульсная модуляция

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

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

В качестве источника сигнала цифровой ШИМ можно использовать COM-порт компьютера с 10-битовым сигналом на выходе. С учетом 8 информационных битов и 2 битов старт/стоп, в сигнале COM-порта присутствует от 1 до 9 «единичек», что позволяет регулировать напряжение в пределах 10-90% напряжения питания с шагом в 10%.

Похожие темы:

electrosam.ru

ШИМ (PWM) — генератор

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

* ВНИМАНИЕ! под катом видны грязные руки на фото и видео!

Суть состоит в том, что на некий например электромагнит подается не постоянный ток, а сигнал с некоторой частотой, при этом для плавного управления меняется соотношение высокого и низкого уровня за период. То есть если у нас 30% периода на привод будет подаваться питание, а 70% — нет, то он откроется меньше, чем если бы на него подавалось питание 70% времени, а 30% он отдыхал. За счет инерции привод не успевает полностью открыться либо закрыться, соответственно работает плавно. Данный принцип, повторюсь, используется весьма широко, везде где нужно обеспечить плавное регулирование. Два примера применения я покажу ниже.

Итак, данный девайс имеет размеры 79х43х24 (ШхВхГ), установочное отверстие 72х39, плюс выборки по бокам для защелок.

Клеммники не особо высокого качества, что и неудивительно; подписаны. 4 контакта: + и — питания, — и сигнал ШИМ. Минусы объединены. По питанию стоит диод.

Внутренний мир прост и незатейлив:

Тут у нас драйвер дисплея HT1621, микроконтроллер Nuvotek N76E003AT20, стабилизатор напряжения M5333B и выходной транзистор с маркировкой 1АМ — надо полагать это 3904.

На передней панели ЖКИ с на удивление неплохими углами обзора и 4 кнопки: частота+- и коэффициент заполнения +-

Посмотрим как оно работает.

Вот на самой низкой частоте для понимания принципов ШИМ-регулировки, кто не знает:

Индикация частоты следующим образом: герцы — без точки, килогерцы — с точкой, больше сотни килогерц — с двумя точками.Максимальная частота — 150кГц. Инкремент по 1% ШИМ и по единице младшего разряда, то есть 1Гц, либо 0.01кГц, либо 0.1кГц, либо 1кГц, либо 10кГц, в зависимости от частоты.

И сразу осциллки на высоких частотах, 20кГц, 50кГц, 100кГц, 150кГц.

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

А теперь осциллки на промежуточных частотах, если кому это интересно:


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

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

Но у нас тут явно недостаточная мощность для управления форсунками, значит придётся ставить выходные ключи. Типа такого:

Возможно, придётся заменить выходной транзистор в самом устройстве, ну и надо подобрать силовые транзисторы получше, возможно мои любимые IRFZ44 — жаль, закончились. Собственно, на данном этапе устройство собрано на 50% — я впаял два первых попавшихся полевика, кажется IRF630 — ну потому что больше одинаковых нету у меня 🙁 чисто для проверки идеи и картинок/видосиков для обзора.

Далее нам понадобится корпус. Примерно такой:

Ну и 3Д-принтер для его изготовления. Плату делал по фоторезистивной технологии описанной в прошлом обзоре.

Ну и сразу результат.

Внутренности:

И наружа:

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

Выключатели: верхний подает питание на всю схему, нижний отключает выходной каскад.

А теперь — примеры работы. проверка РХХ

И режим самопрокачки форсунки

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

mysku.ru

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

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

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

Скорости (или частоты) , при которой питание должно переключиться может значительно варьироваться в зависимости от нагрузки и применения. Так , например, переключение должно быть сделано несколько раз в минуту в электрической печи; 120  Гц в лампе диммер; от нескольких килогерц (кГц) и десятков кГц для привода двигателя; а также в десятки и сотни кГц в аудио усилителей и компьютерных блоков питания. Основное преимущество является то , что ШЕЙ потеря мощности в переключающих устройствах является очень низкой. Когда переключатель находится в выключенном нет практически никакого тока, и когда он включен , и мощность передается в нагрузку, нет почти никакого падения напряжения на коммутаторе. Потери мощности, будучи продуктом напряжения и тока, таким образом , в обоих случаях , близких к нулю. PWM также хорошо работает с цифровым управлением, которые из — за их включение / выключение природы, можно легко установить необходимый рабочий цикл. PWM также используется в некоторых системах связи , где его рабочий цикл был использован для передачи информации по каналу связи.

Рабочий цикл

Термин цикл характеризует долю «на» времени на регулярные промежутки времени , или «период» времени; цикл низкой пошлины соответствует малой мощности, потому что питание выключено в течение большей части времени. Рабочий цикл выражается в процентах, 100% быть полностью включено. Когда цифровой сигнал на половину времени , и от другой половины времени, цифровой сигнал имеет скважность 50% и напоминает «квадрат» волну. Когда цифровой сигнал тратит больше времени во включенном состоянии , чем выключенном состоянии, имеет рабочий цикл> 50%. Когда цифровой сигнал проводит больше времени в выключенном состоянии , чем включенном состоянии, он имеет рабочий цикл <50%. Вот наглядная , который иллюстрирует эти три сценария:

история

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

Одним из первых приложений ШИМ был в Sinclair X10, 10 Вт аудио усилитель доступен в виде набора в 1960 — х годах. Примерно в то же время PWM начал использоваться в управлении двигателем переменного тока.

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

Принцип

Рисунок 1:. Пульсовой волны , показывая определения , и D.Yмин{\ Displaystyle у _ {\ текст {мин}}}YМаксимум{\ Displaystyle у _ {\ текст {макс}}}

Широтно-импульсной модуляции использует прямоугольную пульсовой волны , ширина импульса которого модулируется в результате изменения среднего значения сигнала. Если мы рассмотрим формы импульсов с периодом , низкое значение , высокое значение , и рабочий цикл D (смотри рисунок 1), среднее значение сигнала определяется по формуле: е(T){\ Displaystyle е (т)}T{\ Displaystyle Т}Yмин{\ Displaystyle у _ {\ текст {мин}}}YМаксимум{\ Displaystyle у _ {\ текст {макс}}}

Y¯знак равно1T∫0Tе(T)dT{\ Displaystyle {\ бар {у}} = {\ гидроразрыва {1} {T}} \ Int _ {0} ^ {Т} е (т) \, дт}

Как это пульсовая волна, его значение для и для . Выше выражение становится: е(T){\ Displaystyle е (т)}YМаксимум{\ Displaystyle у _ {\ текст {макс}}}0<T<D⋅T{\ Displaystyle 0 <т <D \ CDOT Т}Yмин{\ Displaystyle у _ {\ текст {мин}}}D⋅T<T<T{\ Displaystyle D \ CDOT Т <т <Т}

Y¯знак равно1T(∫0DTYМаксимумdT+∫DTTYминdT)знак равно1T(D⋅T⋅YМаксимум+T(1-D)Yмин)знак равноD⋅YМаксимум+(1-D)Yмин{\ Displaystyle {\ начинаются {выровнены} {\ бар {у}} & = {\ гидроразрыва {1} {T}} \ влево (\ Int _ {0} ^ {ДТ} у _ {\ текст {макс}} \ , дт + \ Int _ {дТ} ^ {Т} у _ {\ текст {мин}} \, дт \ справа) \\ & = {\ гидроразрыва {1} {T}} \ влево (D \ CDOT Т \ CDOT у- {\ текст {макс}} + T \ влево (1-D \ справа) у _ {\ текст {мин}} \ справа) \\ & = D \ CDOT у _ {\ текст {макс}} + \ влево (1- D \ справа) у _ {\ {текст мин}} \ {конец выровнен}}}

Это последнее выражение может быть довольно упрощены во многих случаях , когда как . Исходя из этого, среднее значение сигнала ( ) напрямую зависит от рабочего цикла D. Yминзнак равно0{\ Displaystyle у _ {\ текст {мин}} = 0}Y¯знак равноD⋅YМаксимум{\ Displaystyle {\ бар {у}} = D \ CDOT у _ {\ текст {макс}}}Y¯{\ Displaystyle {\ бар {у}}}

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

Самый простой способ для генерации сигнала ШИМ является intersective метод, который требует только пилообразной или треугольной формы волны (легко генерируется с помощью простого генератора ) и компаратор . Когда значение опорного сигнала (красная синусоидальная волна на рисунке 2) больше , чем сигнал модуляции (синий), сигнал ШЕГО (пурпурный) находится в высоком состоянии, в противном случае она находится в низком состоянии.

дельта

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

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

Дельта-сигма

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

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

Космический вектор модуляции

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

Непосредственное управление моментом (DTC)

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

Пропорциональное

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

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

Типы

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

Три типа широтно-импульсной модуляции (ШИМ) возможны:

  1. Импульсов центр может быть закреплен в центре временного окна , и оба края импульса перемещен , чтобы сжать или расширить ширину.
  2. Передняя кромка может быть проведена в передней кромки окна и хвостовой кромке модулированной.
  3. Задний край может быть фиксированным и передняя кромка модулируется.

Спектр

В результате чего спектры (из трех случаев) похожи, и каждые содержит постоянный компонент-базовую боковую полосу , содержащую модулирующий сигнал и фазы модулированных несущие в каждой гармонике частоты импульса. Амплитуды гармонических групп ограничены по огибающей ( синку функции ) и простираются до бесконечности. Бесконечная полоса пропускания обусловлена нелинейной операции широтно-импульсного модулятора. В результате цифровой ШИМ страдает от наложения спектров искажений , которые существенно уменьшить его применимость для современной системы связи . Ограничивая пропускную способность ядра ШИМ, эффект наложения спектров можно избежать. грех⁡Икс/Икс{\ Displaystyle \ грех х / х}

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

теорема дискретизации ШИМ

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

• Найквиста-Шеннона Sampling теорема: «Если у вас есть сигнал , который идеально полоса ограничена полосой пропускания F 0 , то вы можете собрать всю информацию , есть в этом сигнале путем выборки его в дискретные моменты времени, пока ваша частота дискретизации больше 2f 0 «.

Приложения

Сервоприводы

ШИЙ используются для управления сервомеханизмами ; см сервоуправление .

связь

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

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

          _      _      _      _      _      _      _      _     
         | |    | |    | |    | |    | |    | |    | |    | |    
Clock    | |    | |    | |    | |    | |    | |    | |    | |    
       __| |____| |____| |____| |____| |____| |____| |____| |____

                 _      __     ____          ____   _
PWM signal      | |    |  |   |    |        |    | | |
                | |    |  |   |    |        |    | | |
       _________| |____|  |___|    |________|    |_| |___________

Data       0     1       2      4      0      4     1      0

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

                _      __     ___    _____   _      _____   __     _   
               | |    |  |   |   |  |     | | |    |     | |  |   | | 
PWM signal     | |    |  |   |   |  |     | | |    |     | |  |   | |  
             __| |____|  |___|   |__|     |_| |____|     |_|  |___| |_____

Data            0       1      2       4     0        4      1     0

подача энергии

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

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

Современные полупроводниковые переключатели , такие как МОП — транзисторов или с изолированным затвором биполярные транзисторы (IGBT) хорошо подходят компоненты для контроллеров высокой эффективности. Преобразователи частоты используются для управления двигателями переменного тока может иметь КПД , превышающий 98%. Импульсные источники питания имеют более низкую эффективность из — за низкие уровни выходного напряжения (часто даже меньше , чем 2 В для микропроцессоров необходимы) , но все же эффективность более чем на 70-80% может быть достигнута.

С регулируемой скоростью контроллеры вентиляторов компьютера обычно используют PWM, поскольку она является гораздо более эффективным по сравнению с потенциометром или реостатом . (Ни один из последних практична в эксплуатации в электронном виде ; они требуют небольшого приводного двигателя.)

СВЕТОРЕГУЛЯТОРЫ для домашнего использования используют определенный тип управления ШИМ. Главное использование свет диммеры обычно включают в себя электронную схему , которая подавляет протекание тока во определенных участках каждого цикла линейного напряжения переменного тока. Регулировка яркости света , излучаемого источником света , тогда просто вопрос установки на каком напряжении (или фазы) в сети переменного тока полупериода диммер начинает оказывать электрический ток к источнику света (например, используя электронный переключатель , таких как симистор ). В этом случае цикл ШИЙ представляет собой отношение времени проводимости к продолжительности половины цикла переменного тока , определяемой частотой линейного напряжения переменного тока (50 Гц или 60 Гц , в зависимости от страны).

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

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

регулирование напряжения

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

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

Звуковые эффекты и усиление

PWM иногда используется в звуковой (музыки) синтеза, в частности вычитательном синтеза , так как это дает звуковой эффект , похожий на хор или слегка расстроенные осцилляторы играли вместе. (На самом деле, ШИМ эквивалентна разности двух пилообразных волн с одним из них перевернутой. [1] ) Соотношение между высоким и низким уровнем , как правило , модулированный с низкой частоты генератора . Кроме того, изменяя рабочий цикл импульсного сигнала в субтрактивном-синтезе инструменте создает полезные тембральные вариации. Некоторые синтезаторы имеют рабочий цикл триммер для их прямоугольных выходов, а триммер может быть установлен на слухе; точка 50% (правда , прямоугольная волна) была отличительной, потому что четные гармоники , по существу исчезают на уровне 50%. Импульсные волны, как правило , 50%, 25% и 12,5%, составляют саундтреки классических видеоигр .

Новый класс аудио усилителей , основанных на принципе ШИМ становится популярным. Названный класса D усилители , они производят ШИЙ эквивалент аналогового входного сигнала , который подается на громкоговоритель через соответствующий сетевой фильтр , чтобы блокировать носитель и восстановить исходный звук. Эти усилители характеризуются очень хорошие показатели эффективности (≥ 90%) и компактный размер / легкий вес для больших выходных мощностей. В течение нескольких десятилетий, промышленные и военные усилители PWM были в общем пользовании, часто для управления серводвигателями . Поле-градиентные катушки в МРТ машины приводятся в движение относительно высокой мощности PWM усилителей.

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

В более поздние времена, Direct Stream Digital метод звука кодирование был введен, который использует обобщенную форму широтно-импульсную модуляцию , называется модуляция плотности импульса , при достаточно высокой частоты дискретизации ( как правило , в порядке МГц) , чтобы покрыть все акустические частоты диапазон с достаточной точностью. Этот метод используется в SACD формате, а также воспроизведение кодированного аудиосигнала, по существу , аналогичен способу , используемому в классе D-усилителей.

электрический

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

Смотрите также

Рекомендации

внешняя ссылка

ru.qwertyu.wiki

Отправить ответ

avatar
  Подписаться  
Уведомление о