Что такое шим выход
Перейти к содержимому

Что такое шим выход

  • автор:

ШИМ сигнал

Очень часто в робототехнике возникает необходимость плавно управлять каким-то процессом, будь то яркость светодиода, мощность обогревателя или скорость вращения моторчика. Вполне очевидно, что управление напрямую связано с изменением напряжения на потребителе: и светодиод будет по-другому светить, и моторчик крутиться с другой скоростью. Но проблема в том, что управлять напряжением может только такая штука, как ЦАП – цифро-аналоговый преобразователь, а в нашем микроконтроллере встроенного ЦАПа нет, у нас есть только цифровой сигнал, т.е. либо вкл, либо выкл: Можно ли добиться плавного управления цифровым сигналом? Можно! Представьте себе вентилятор, вращающийся на полной мощности, напряжение постоянное. Представим теперь, что секунду напряжение подаётся, и секунду – нет, и так продолжается “по кругу”. Вентилятор начнёт крутиться в два раза медленнее, но мы скорее всего будем замечать моменты включения и выключения, особенно если вентилятор маленький и быстро останавливается. Теперь давайте включать напряжение на 0.5 секунды, а на остальные 1.5 секунды – выключать. Вентилятор будет крутиться со скоростью 25% от максимальной. Мы с вами смогли представить так называемый ШИМ сигнал, широтно-импульсную модуляцию:
С лампочкой накаливания оно тоже будет работать, она ведь весьма инертна, но вот со светодиодом мы будем видеть, как он включается и выключается, потому что он практически не имеет задержки включения/выключения. Что же делать? Всё очень просто, поднять частоту. В мысленном эксперименте у нас был период 2 секунды, что есть 0.5 Гц. А теперь представьте себе такой сигнал с частотой скажем 1000 Гц. Или 25’000 Гц (25 кГц). Теперь роль играет инертность глаза, он не заметит вспышек на такой частоте, для него это будет просто уменьшение яркости.

Задача решена! Изменяя так называемое “заполнение” ШИМ сигнала можно менять “суммарное” (интегрированное) напряжение за некоторый период. Чем больше заполнение ШИМ, тем выше напряжение. Но не выше напряжения, которое мы “ШИМим”: При помощи ШИМ сигнала можно даже модулировать сложные аналоговые сигналы, например – синусоиду. На картинке ниже показан ШИМ (снизу) и этот же ШИМ после фильтров: Вот таким образом кстати и работают инвертеры DC-AC. Возвращаясь к свойствам ШИМ сигнала, их всего два: частота (frequency) и заполнение (duty), с ними мы разобрались. Давайте перейдём к генерации ШИМ при помощи Arduino.

ШИМ пины

Взглянем на распиновку популярных плат Arduino Nano и Wemos Mini:

blank

blank

Пины, на которых можно запустить ШИМ сигнал стандартными средствами Arduino, помечены как PWM:

  • На Arduino Nano есть 6 таких пинов. Дело в том, что ШИМ сигнал генерируется отдельными аппаратными блоками (таймерами), поэтому их количество ограничено. В то же время генерация ШИМ на повышенной частоте не нагружает микроконтроллер, сигнал генерируется самостоятельно.
  • На Wemos Mini можно запустить ШИМ на любом пине, кроме GPIO16. Здесь генерация ШИМ реализована программно, поэтому работает на любом пине, но использование одновременно нескольких пинов на повышенной частоте будет тормозить работу микроконтроллера.

Включаем ШИМ

Для генерации ШИМ у нас есть готовая функция analogWrite(pin, duty) :

  • pin – PWM пин (см. распиновку выше). Нумерация пинов такая же, как в уроке про цифровые пины.
  • duty – заполнение ШИМ сигнала. По умолчанию имеет разрядность 8 бит, то есть принимает значение 0.. 255. Примечание: у esp8266 на версии ядра до 3.0 разрядность была 10 бит, то есть 0.. 1023.

Совместим эти знания с прошлым уроком и попробуем менять яркость светодиода, подключенного через резистор к пину D3 (Arduino Nano). Потенциометр подключен к пину A0:

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

Особенности Arduino Nano

Стандартные параметры ШИМ сигнала:

Таймер Пины Частота Разрядность
Timer 0 D5 и D6 976 Гц 8 бит (0.. 255)
Timer 1 D9 и D10 488 Гц 8 бит (0.. 255)
Timer 2 D3 и D11 488 Гц 8 бит (0.. 255)

Про изменение частоты и разрядности мы поговорим в отдельном уроке.

Особенности Wemos Mini

Частота ШИМ по умолчанию 1 кГц.

  • Частоту можно настроить в analogWriteFreq(100.. 40000 Гц) .

Разрядность ШИМ по умолчанию 8 бит (0.. 255) на версиях ядра 3.x. На ранних версиях – 10 бит (0.. 1023). Скажем спасибо индусам за совместимость.

  • Разрядность можно настроить в analogWriteResolution(4. 16 бит) .

Программный ШИМ

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

Что такое ШИМ и почему мерцает OLED? РАЗБОР

ШИМ, все вокруг говорят про ШИМ. Ну фиг знает — я его не вижу. Что хотите сказать, если понижу яркость дисплея, это как-то будет меня утомлять? Кажется тут есть в чём разобраться!

Сегодня мы объясним как на самом деле работает ШИМ. Узнаем сколько FPS видит человек, а сколько муха. Проведём тесты ШИМ на осциллографе. И, конечно, расскажем как избавиться от ШИМа на Samsung и на iPhone.

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

Почему так? Дело в том, что в отличие от большинства IPS-экранов большинство OLED-матриц мерцают. Примерно как дешевые люминесцентные лампы. И это не очень хорошо сказывается на зрении.

Но стоп! Лично у меня нет никаких проблем с OLED-дисплеями, да и мои друзья ходят с OLED и не жалуются.

Действительно, по статистике большинство (примерно 90%) людей не ощущают мерцания OLED-дисплеев. Мы даже провели опрос: Устают ли у Вас глаза от OLED дисплеев? Устают ли у вас глаза от IPS дисплеев? И получили вот такие результаты: примерно четверть — 27% сообщила, что у них глаза устают. Меньшинство, но всё же — четверть!

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

ШИМ в кинопроекторах

Чтобы ответить на этот вопрос давайте поговорим про кино. В старых кинопроекторах, в которых еще были бобины с плёнкой, крутили кино со скоростью 24 кадра в секунду.

Так вот, для того чтобы при смене кадров изображение не смазывалось и вы не видели момент перемотки пленки, в этот момент поток света перекрывался. Это приводило к адскому мерцанию, так как изображение постоянно обрывал «черный кадр».

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

Такое чередование изображения и дополнительных “черных кадров” позволяло искусственно увеличить частоту мерцания до 48 раз в секунду. Чего было достаточно, чтобы обмануть мозг. Видя постоянно мелькающую картинку, мозг просто «отключает» восприятия мерцания и мы видим плавную картинку. Кстати в немом кино, где использовалась частота 16 К/с, вообще перекрывали 3 раза и получилось мерцание — 48 раз в секунду.

Сколько мы видим кадров?

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

Кстати, у собак и кошек этот порог выше — в районе 70-80 Гц, а у мух так вообще 250-300 Гц.

Что же это получается, игровые мониторы 144 Гц и выше — это всё маркетинг? Нет, 60 кадров в секунду — это минимальный порог, при котором человек перестает видеть мерцание.
А люди с натренированным зрением, например, пилоты истребителей на тестированиях различают кадры, появившиеся на 4 мс. Что соответствует 250 кадрам в секунду. К хардкорным геймерам это тоже относится.

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

Но в целом если верить ГОСТАм: Пульсация освещенности свыше 300 Гц не оказывает влияния на общую и зрительную работоспособность. ГОСТ Р 54945-2012

Зачем нужен ШИМ?

Итак, со зрением разобрались. Но зачем вообще мерцают OLED-дисплеи и на какой частоте?

Сначала ответим на вопрос “Зачем?”

Существует два способа регулировки яркости дисплея:

Первый и самый очевидный способ, при помощи понижения напряжения. Чем меньше мы подаем энергии на дисплей, тем меньше он светится.

Именно так регулируется яркость в большинстве IPS-дисплеев в наших смартфонах, ноутбуках и мониторах.

Но почему бы на OLED-дисплеях не делать также? На самом деле можно, и так даже делали раньше. Например в смартфоне LG G Flex 2 использовался именно такой подход. Но есть проблема! На OLED-дисплеях при уменьшении напряжения сильно страдает картинка. Возникает так называемый мура-эффект, более известный как эффект “наждачной бумаги”. Мы подробно рассказывали об этом в материале про OLED.

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

Так, стоп, что еще за импульс? Дело в том, что напряжение в дисплеях, использующих ШИМ, не постоянное, а прерывистое. Оно подаётся при помощи вот таких всплесков или импульсов.

Количество импульсов в секунду называется частотой и измеряется в Гц. А время, которое занимает каждый цикл пульсации, называется периодом.

К примеру, возьмем частоту 250 Гц, в этом случае период будет 4 мс. Частота и период — это фиксированные значения, и с изменением яркости дисплея они не меняются. А вот ширина каждого импульса — это как раз то, что мы можем регулировать. Это значение называется рабочим циклом, и он выражается в процентах.

Если рабочий цикл 100%, импульс будет длиться 100% своего периода, то есть 4 мс. Это соответствует 100% яркости дисплея. Если мы сократим ширину импульса до 50% или 2 мс, воспринимаемая яркость дисплея также упадет до 50%. А на яркости 1% фактически 99% будет отображаться просто черный экран, но наше зрение это интерпретирует как просто очень тусклую картинку. Получается, чем меньше яркость дисплея, тем более выражен эффект мерцания. И тем это вреднее для глаз.

Частота ШИМ в разных дисплеях

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

А какая частота ШИМ в OLED?

Тут всё зависит от конкретной модели, но есть определенные закономерности. Во-первых, желательно чтобы частота ШИМ была кратной частоте обновления дисплея. Потому на 60 Гц или 120 Гц дисплеях, как правило частота ШИМ — 240 Гц, а на 90 Гц дисплеях 360 Гц.

Мы решили убедиться в этом самостоятельно и отправились в Санкт-Петербург. Там ребята из компании ЛЛС подготовили для нас осциллограф с высокоскоростным фотодетектором.

Так мы проверили на ШИМ на iPhone 11 Pro и Pixel 4.

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

В Pixel 4 вплоть до 70% яркости мы не обнаружили ШИМа совсем, видно только обновление экрана 90 Гц. А дальше начинается ШИМ с частотой 360 Гц. Но так как частота обновления экрана в Pixel 4 после 40% падает до 60 Гц, видно как каждый четвёртый импульс немного скачет. Это потому что частота обновления не совпадает с частотой модуляции.

  • Galaxy S20 — 242.7 Гц
  • Galaxy S20 Ultra — 240.4 Гц
  • Google Pixel 2 — 245.1 Гц
  • Google Pixel 2 XL — 242.7 Гц
  • Google Pixel 3a — 271.1 Гц
  • Google Pixel 3a XL — 242.7 Гц
  • Google Pixel 4 — 367.6 Гц
  • Google Pixel 4 XL — 367.6 Гц
  • Huawei P30 — 240.4 Гц
  • Huawei P30 Pro — 231.5 Гц
  • Huawei P40 — 245 Гц
  • Huawei P40 Pro — 365 Гц
  • iPhone 11 Pro — 290.7 Гц
  • iPhone 11 Pro Max — 245.1 Гц
  • iPhone XS — 240.4 Гц
  • iPhone XS Max — 240.4 Гц
  • OnePlus 5T — 242.7 Гц
  • OnePlus 6T — 240 Гц
  • OnePlus 7 — 200 Гц
  • OnePlus 7 Pro — 122 Гц
  • OnePlus 7T Pro — 294 Гц
  • OnePlus 8 Pro — 258 Гц
  • Samsung Galaxy A50 — 119 Гц
  • Samsung Galaxy A51 — 242.7 Гц
  • Samsung Galaxy A71 — 247.5 Гц
  • Samsung Galaxy S10e — 232 Гц
  • Xiaomi Mi 10 — 362.3 Гц
  • Xiaomi Mi 8 — 238 Гц
  • Xiaomi Mi 8 Explorer Edition — 100 Гц

Samsung Galaxy A50:

На самом деле, частоту мерцания OLED-дисплеев можно увеличить, пусть не до 2000 Гц, но хотя бы до 500 Гц. Кстати, именно такая частота ШИМ была в древнем Windows Phone — Lumia 950. Но это удорожает производство, а так как страдающих людей мало, производители воровать у себя из кармана не готовы.

Кстати, практически все современные LCD-телевизоры тоже ШИМят на частоте 240 Гц. И в теликах этот эффект даже более заметен, чем в телефонах.

Разве что SONY не поскупились установить в свои LCD модели контроллеры управления яркостью либо совсем без мерцания, либо с мерцанием на частоте 720 Гц.

Как проверить ШИМ самому?

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

На самом деле очень просто! Вам нужно снять экран на видео в замедленной съемке 240 к/с или больше. Сейчас почти любой телефон так может. Если на всех значениях яркости вы не увидите мерцания в виде перемещающихся полос. Значит ШИМа нет.

Что такое DC Dimming?

Тем не менее проблема есть и первой её осознал Xiaomi, представив функцию DC Dimming в Black Shark 2 Pro. Эта тема настолько хорошо зашла, что очень быстро подсуетились OnePlus, OPPO и Huawei. И начиная с прошлого года во всех флагманах точно есть DC Dimming.

Само название расшифровывается как Direct Current Dimming, что переводится как затемнение постоянным током. Иными словами в этом случае яркость регулируется как и положено снижением напряжения.

СТОП! Но также нельзя! Картинка же убьется! На самое деле, так нельзя было делать раньше, потому как качество OLED-дисплеев оставляло желать лучшего. Но теперь всё иначе.

Уже давно многие производители стали использовать гибридный способ регулировки яркости. Например на iPhone до 50% яркости используется снижение напряжения, и только потом включается ШИМ. А телефоны с функцией DC Dimming пошли дальше и стали регулировать яркость исключительно снижением напряжения.

Да, включив DC Dimming на низких яркостях могут немного поплыть цвета и появиться шум. Но это совсем не критично.

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

По нашим замерам на Xiaomi Mi 10 ШИМ с включенным DC Dimming исчезает полностью! А значит ваши глазки смогут отдохнуть.

Убираем ШИМ для всех

Но что делать, если вам DC Dimming не завезли? Например у вас Samsung, который ШИМит даже на 100% яркости, или iPhone который начинает ШИМить на 50%?

На самом деле решение есть и оно программное. Имя ему экранные фильтры!

Android. Например, на любой Android можно поставить программу OLED Saver. Она умеет накладывать полупрозрачный серый фильтр поверх всего изображения. Регулируя прозрачность фильтра, регулируется яркость. Это программа умеет имитировать функцию автояркости. Можно довольно быстро из шторки регулировать прозрачность фильтра и настроить автозапуск после перезагрузки.

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

iPhone. А на iPhone вообще есть специальный режим встроенный в систему. Он называется “понижение точки белого” и прячется в разделе “Универсальный Доступ”. Путь такой: Настройки > Универсальный доступ > Дисплей и размер текста > Понижение точки белого

А чтобы постоянно не лезть в настройки можно назначить включение режима на тройное нажатие кнопки питания с помощью такого пути: Настройки > Универсальный доступ > Быстрая команда.

В iOS 14 можно даже назначить тоже самое на постукивание по задней крышке. Но я бы не рекомендовал так делать, будут ложные срабатывания.

Ну и напоследок можно вынести ярлык с этой функцией в пункт управления. Для этого идём в Настройки > Пункт управления и перетаскиваем иконку “Команды для универсального доступа”.

Итоги

Что в итоге? ШИМ, конечно, зло. Хоть я его и не вижу, и мои глаза не устают, эта штука всё равно напрягает мозг. А с возрастом может появиться и усталость глаз.

С другой стороны, благодаря ШИМ вообще стал возможен прогресс в развитии технологии OLED. Если б его не было сидели бы мы на IPS и о всех прелестях классных OLED-дисплеев даже бы и не знали.

Очень надеемся, что DC Dimming станет стандартом и мы забудем о ШИМ в смартфонах и телевизорах точно также, как забыли о нём в настольных мониторах с появлением Flicker Free мониторов от BenQ. Это, кстати, та же самая технология что и DC Dimming.

В основу ролика легла статья с портала deep-review.com и материал Олега Афонина для журнала Хакер. Ребята проделали отличную работу, а мы продолжаем их дело.

Спасибо компании ЛЛС за оборудование и теплый приём в Питере! Очень приятно вместе с вами делать крутой науч-поп контент. На этом сегодня всё!

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 все аналогично, с поправкой на другое расположение джамперов:

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

;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ти разрядные поэтому грузить надо оба байта сразу. Не забыв запретить прерывания (это важно. ибо атомарный доступ)

CLI OUTI OCR1AH,0 OUTI OCR1AL,85 OUTI OCR1BH,0 OUTI OCR1BL,128 SEI

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

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

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

; 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) и посмотрим на то как будет меняться скважность.

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

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

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

;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ми разрядный.

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

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

; 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

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

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

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

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

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

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

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

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

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

Характеристики ШИМ

Для Широтно-модулированного сигнала характеристик всего две:

  1. Частота следования импульсов
  2. Скважность импульсов, или коэффициент заполнения. По сути это одно и то же. Разница лишь в обозначении: для скважности -это D, для заполнения используем литеру S. Коэффициент заполнения = единица / период сигнала T

T – Период сигнала

F – Частота сигнала

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

Частота сигнала = 50 кГц.

Период сигнала = 20 мкс.

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

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

Формирование ШИМ-сигналов

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

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

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

Выходное управляющее напряжение (OUT)

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

шим контроллеры для блоков питания

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

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

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

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

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

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

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

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

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

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

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

Ещё о функциях контроллеров ШИМ

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

  • Опорное напряжение (VREF). Фабричные изделия для удобства обычно дополняются функцией выработки стабильного опорного напряжения. Специалисты заводов-изготовителей рекомендуют соединять данный вывод с общим проводом через емкость не менее 1 мкФ для повышения качества и возможности стабилизации опорного напряжения.

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

  • Ограничение тока (ILIM). Если показатели напряжения на данном выводе существенно превышают установленное (как правило, около 1 В), то контроллер автоматически закрывает силовые ключи. В случаях, когда показатель напряжения превышает второе пороговое значение (в пределах 1,5-2 В), устройство тут же обнуляет напряжение на подключении к мягкому старту.
  • Мягкий старт (SS). Показатель напряжения на данном выходе определяет максимально допустимую ширину будущих модулируемых импульсов. На данный вывод подает ток установленной величины. Если между ним и всеобщим кабелем вмонтировать дополнительную емкость, то она будет медленно, но уверенно заряжаться, что приведет к постепенному расширению каждого импульса от минимума вплоть до окончательного расчетного значения. Благодаря этому можно обеспечить плавное, а не стремительное нарастание величин тока и напряжения в общей схеме устройства, благодаря чему такая система и заслужила свое название “мягкий старт”. При этом, если специально ввести ограничение по напряжению на данном выводе, допустим, подключив делитель напряжения и систему диодов, можно и вовсе ограничить превышение импульсами некоего задаваемого значения ширины.

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

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

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

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

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

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

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

Цифровая ШИМ

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

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

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

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

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

Как работает шим контроллер в блоке питания
Как работает шим контроллер в блоке питания

Микросхема ШИМ с силовым ключом в одном корпусе

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

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

ШИМ pwm контроллер: принцип работы, область применения, характеристики

LM2596 включает в себя все технические решения, описанные выше, плюс в неё еще интегрирован силовой ключ на ток до 3 Ампер.

Структура микросхемы LM2596

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

Еще один пример блока питания для светодиодных лент на ШИМ-контроллере 5L0380R – У неё всего 4 вывода. Как можно заметить в схеме отсутствует силовой ключ. Естественно он в микросхеме, а сама микросхема выполнена в корпусе транзистора и крепится на радиатор.

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

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

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

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

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

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

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

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

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

Расположение и назначение выводов микросхемы.

Это не инвертирующий (положительный) вход усилителя ошибки 1.
Если входное напряжение на нём будет ниже, чем напряжение на выводе 2, то на выходе этого усилителя ошибки 1, напряжения не будет (выход будет иметь низкий уровень) и он не будет оказывать никакого влияния на ширину (скважность) выходных импульсов.
Если на этом выводе напряжение будет выше, чем на выводе 2, то на выходе этого усилителя 1, появится напряжение (выход усилителя 1, будет иметь высокий уровень) и ширина (скважность) выходных импульсов будет уменьшаться тем больше, чем выше выходное напряжение этого усилителя (максимум 3,3 вольта).

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

Усилитель ошибки, это обычный ОУ с коэффициентом усиления порядка = 70..95дБ по постоянному напряжению, (Ку = 1 на частоте 350 кГц). Диапазон входных напряжений ОУ простирается от -0.3В и до напряжения питания, минус 2В. То есть максимальное входное напряжение должно быть ниже напряжения питания минимум на два вольта.

Это выходы усилителей ошибки 1 и 2, соединённых с этим выводом через диоды (схема ИЛИ). Если напряжение на выходе какого-либо усилителя меняется с низкого на высокий уровень, то на выводе 3 оно также переходит в высокий.
Если напряжение на этом выводе превысит 3,3 В, то импульсы на выходе микросхемы пропадают (нулевая скважность).
Если напряжение на этом выводе близко к 0 В, тогда длительность выходных импульсов (скважность) будет максимальна.

Вывод 3 обычно используется для обеспечения ОС усилителей, но если это необходимо, то вывод 3 может быть использован и в качестве входного, для обеспечения изменения ширины импульсов.
Если напряжение на нем высокое (>

3,5 В), то импульсы на выходе МС будут отсутствовать. Блок питания не запустится ни при каких обстоятельствах.

Он управляет диапазоном изменения “мёртвого” времени (англ. Dead-Time Control), в принципе это та же самая скважность.
Если напряжение на нем будет близко к 0 В, то на выходе микросхемы будут, как минимально возможные, так и максимальные по ширине импульсы, что соответственно может задаваться другими входными сигналами (усилители ошибок, вывод 3).
Если напряжение на этом выводе будет около 1,5 В, то ширина выходных импульсов будет в районе 50% от их максимальной ширины.
Если напряжение на этом выводе превысит 3,3 В, то импульсы на выходе МС будут отсутствовать. Блок питания не запустится ни при каких обстоятельствах.
Но стоит не забывать, что при увеличении “мёртвого” времени, диапазон регулировки ШИМ будет уменьшаться.

Изменяя напряжение на выводе 4, можно задавать фиксированную ширину “мёртвого” времени (R-R делителем), осуществить в БП режим мягкого старта (R-C цепочкой), обеспечить дистанционное выключение МС (ключ), а также можно использовать этот вывод, как линейный управляющий вход.

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

Да, ещё если посмотреть рисунок с составом микросхемы, то мы видим, что вывод 4 соединён со входом компаратора регулировки мертвым временем (DA1) через источник напряжения, величиной 0,1-0,12 В. Для чего это сделано?
Это как раз и сделано для того, чтобы максимальная ширина (скважность) выходных импульсов никогда не была равна 100%, для обеспечения безопасной работы выходных (выходного) транзисторов.
То есть если “посадить” вывод 4 на общий провод, то на входе компаратора DA1 всё равно не будет нулевого напряжения, а будет напряжение как раз этой величины (0,1-0,12 В) и импульсы с генератора пилообразного напряжения (ГПН) появятся на выходе микросхемы только тогда, когда их амплитуда на выводе 5, превысит это напряжение. То есть микросхема имеет фиксированный максимальный порог скважности выходных импульсов, который не превысит для однотактного режима работы выходного каскада 95-96%, и для двухтактного режима работы выходного каскада – 47,5-48%.

Это вывод ГПН, он предназначен для подключения к нему времязадающего конденсатора Ct, второй конец которого подсоединяется к общему проводу. Ёмкость его выбирается обычно от 0,01 мкФ до 0,1 мкФ, в зависимости от выходной частоты ГПН импульсов ШИМ-контроллера. Как правило здесь используются конденсаторы высокого качества.
Выходную частоту ГПН можно как раз контролировать на этом выводе. Размах выходного напряжения генератора (амплитуда выходных импульсов) где-то в районе 3-х вольт.

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

Для двухтактного режима работы формула имеет следующий вид;

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

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

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

Это вывод эмиттера транзистора 1.

Это вывод эмиттера транзистора 2.

Это коллектор транзистора 2.

К этому выводу подсоединяется «плюс» источника питания TL494CN.

Это вывод выбора режима работы выходного каскада. Если этот вывод подсоединить к общему проводу, выходной каскад будет работать в однотактном режиме. Выходные сигналы на выводах транзисторных ключей будут одинаковыми.
Если подать на этот вывод напряжение +5 В (соединить между собой выводы 13 и 14), то выходные ключи будут работать в двухтактном режиме. Выходные сигналы на выводах транзисторных ключей будут противофазны и частота выходных импульсов будет в два раза меньше.

Это выход стабильного Источника Опорного Напряжения (ИОН), С выходным напряжением +5 В и выходным током до 10 мА, которое может быть использовано в качестве образцового для сравнения в усилителях ошибки, и в других целях.

Он работает точно так же, как и вывод 2. Если второй усилитель ошибки не используется, то вывод 15 просто подключают к 14-му выводу (опорное напряжение +5 В).

Он работает так же, как и вывод 1. Если второй усилитель ошибки не используется, то его обычно подключают к общему проводу (вывод 7).
С выводом 15, подключенным к +5 В и выводом 16, подключенным к общему проводу, выходное напряжение второго усилителя отсутствует, поэтому он не оказывает никакого влияния на работу микросхемы.

Отличительные особенности импульсных и линейных БП.

Существенным преимуществом импульсных источников питания перед линейными является хороший КПД (около 90%)

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

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

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

Количество этих ключей, зависит от предназначения самого ШИМ-контроллера. Например, простые обратноходовые схемы построены на 1-м силовом ключе, полу мостовые на 2-х, а мостовые преобразователи на 4-х ключах.

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

А вот если мы будем использовать полевые транзисторы с изолированным затвором (MOSFET) или IGBT транзисторы, то здесь уже немного сложнее. Выходной транзистор-ключ мало того что нужно открыть – путем заряда затвора, так нам его еще надо и закрыть, естественно разряжая затвор ключа. Для таких схем используются соответствующие ШИМ-контроллеры. У них на выходе стоит 2 транзистора – один заряжает затвор ключа, а другой разряжает, замыкая его на землю.

ШИМ pwm контроллер: принцип работы, область применения, характеристики

Arduino и ШИМ

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

На платах UNO/Nano/Pro Mini у нас есть три таймера-счётчика, у каждого таймера есть по два выхода на пины МК, то есть у нас есть 2*3=6 пинов, способных генерировать ШИМ сигнал. Для генерации ШИМ у нас есть готовая функция analogWrite(pin, duty)

  • pin – пин, являющийся выводом таймера. Для Нано/Уно это пины D3, D5, D6, D9, D10, D11. На некоторых платах они помечены * звёздочкой, а вообще для определения ШИМ пинов на любой другой модели Ардуино достаточно загуглить распиновку
  • duty – заполнение ШИМ сигнала. По умолчанию все “выходы” ШИМ у нас 8-битные, то есть duty может принимать значение с “разрешением” 8 бит, а это 0-255

Совместим эти знания с прошлым уроком и попробуем менять яркость светодиода, подключенного через резистор к пину D3. Потенциометр подключен к пину A0

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

Пару слов о “стандартном” ШИМ сигнале – мы получаем его с такими настройками, какие нам даёт библиотека Arduino.h, а настройки эти сильно занижены по сравнению с возможностями Arduino. Про “улучшение” ШИМ мы поговорим позже, а сейчас давайте глянем на характеристики ШИМ “из коробки”:

Таймер Пины Частота Разрешение
Timer 0 D5 и D6 976 Гц 8 бит (0-255)
Timer 1 D9 и D10 488 Гц 8 бит (0-255)
Timer 2 D3 и D11 488 Гц 8 бит (0-255)

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

ШИМ и микроконтроллеры

Простейший генератор ШИМ можно собрать и без всяких микроконтроллеров, только лишь с микросхемой таймера 555. Разумеется, любой микроконтроллер тоже умеет работать с ШИМ сигналом.

Например, у платы Ардуино имеется 6 контактов: 3, 5, 6, 9, 10 и 11, которые можно настроить для генерации аппаратного ШИМ. По-умолчанию, на контактах 5 и 6 частота сигнала будет 1кГц, на остальных — скромные 500Гц. Как ими пользоваться ШИМ на Ардуино подробно рассказывается на уроке «Ардуино: ШИМ» (скоро будет).

STM32F103 — гораздо более серьёзный микроконтроллер. У него целых 20 контактов имеют возможность генерации ШИМ. Частота этого микроконтроллера — 72МГц, что делает возможным плавное и точное управление моторами постоянного тока, не говоря уже о светодиодах. Узнаём подробности в уроке про STM32 и ШИМ.

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

Основные проблемы ШИМ-преобразователей

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

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

Диагностика неисправностей

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

Схемы ШИМ-контроллеров

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

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

Как сделать устройство управления своими руками

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

Расчет контроллера

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

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

ШИМ pwm контроллер: принцип работы, область применения, характеристики

Подготовительные работы

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

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

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

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

Сборка устройства

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

Как работает шим контроллер в блоке питания
Как работает шим контроллер в блоке питания

Как работает шим контроллер в блоке питания

Схемные решения для сборки своими руками

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

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

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

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

ШИМ pwm контроллер: принцип работы, область применения, характеристики

Схема контроллера, вычерченная неким электронщиком своими руками. Здесь всё просто и понятно без лишних слов. Собственно, как и в самой технологичности решения. Минимум деталей – максимум сбережений (+)

Схема носит название «балластная», так как в ней используется дополнительная нагрузка в виде обычной лампочки накаливания. Таким образом, список деталей пополнится ещё одним элементом – лампой.

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

Работа «балластной» схемы с минусом

Действие автомобильного реле-регулятора напрямую связано с уровнем заряда аккумуляторной батареи. Если напряжение на клеммах АКБ поднимается выше 14.2 вольт, реле срабатывает и размыкает минусовую цепь силового транзистора.

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

Как действует «балластная» схема с плюсом

Слегка модернизированным вариантом «балластного» контроллера заряда для ветряка является вторая схема на реле-регуляторе с плюсовым управляющим контактом. Например, подойдут реле от автомобилей марки «ВАЗ».

Отличие от предыдущей схемы – применение твердотельного реле, например, GTH6048ZA2 на ток 60A вместо транзистора. Преимущества очевидны: схема выглядит ещё проще и при этом обладает большей надёжностью и эффективностью.

ШИМ pwm контроллер: принцип работы, область применения, характеристики

Ещё одно простейшее схемотехническое решение под сборку контроллера заряда АКБ ветрогенератора. Эффективность и надёжность схемы повышается за счёт применения в ней твердотельного реле (+)

Особенность этого простого решения – прямое подключение на клеммы аккумулятора генератора ветряка. Проводники контроллера заряда тоже «посажены» непосредственно на контакты аккумулятора.

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

Здесь балластной нагрузкой может выступать не только лампа накаливания. Вполне реально подключить любое иное устройство, рассчитанное на ток до 60 А. Например, электрический трубчатый нагреватель.

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

Усложнённый вариант схемы контроллера

Если предыдущий вариант схемного решения контроллера заряда АКБ только лишь напоминает устройство ШИМ (широтно-импульсная модуляция), здесь данный принцип реализуется конкретно.

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

Однако на монтажной плате всё выглядит не так сложно, как на бумажном листе.

ШИМ pwm контроллер: принцип работы, область применения, характеристики

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

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

Балластный резистор сделан в виде мощного сопротивления (намотка на керамике нихром). Для регулировки рабочего диапазона напряжений (11.5-18 Вт) в схеме используются переменные резисторы, включенные в цепь управления микроэлектронной сборки TL084.

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

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

Момент переключения триггера в одно из состояний определяется значениями переменных резисторов (Low V и High V) нижнего и верхнего порога напряжений.

Пока на клеммах аккумуляторной батареи присутствует напряжение, не превышающее 14.2 вольта (удовлетворяющее значению настройки R High V), выполняется заряд. Как только значения изменяются в сторону увеличения, операционный усилитель TL084 подаёт сигнал на базу транзистора, которым управляется реле.

ШИМ pwm контроллер: принцип работы, область применения, характеристики

Реализованный своими руками продукт по схеме с микросборкой TL084. Всё предельно просто, даже вместо качественной печатной платы выбрана плата под навесной монтаж. Такими моментами всегда радуют самодельные конструкции

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

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

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

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

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

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

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