Генератор PWM

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

Довольно долго рылся в поисках подходящей схемы, но все, что попадалось, или использует операционники, или 555-й таймер. Эти варианты имеют множество недостатков, в частности с их помощью высокочастотный PWM получить тоже не просто, к тому же рабочее «окно» управляющего напряжение сдвинуто вверх, причем довольно сильно. Пришлось почесать репу и нарисовать нужную схему самому. Получилась вот такая вот штука:

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

UPDATE Когда снимал параметры, не посмотрел, что был впаян триггер не LVC серии (а AHC или AHCT). С LVC-шкой параметры немного другие (поскольку другие пороги у триггера) — размах пилы от ~50мв до ~2.9В и, судя по даташиту, при питании от 5.5В порог не может превышать 3.33В, что практически идеально вписывается в диапазон напряжений, который может сгенерить МК при питании от 3.3В. Да, диапазон частот тоже несколько другой (тоже из-за порога). Прикидка показывает формулу для частоты примерно 1/(0.55RC).
  • +7
  • 16 августа 2012, 01:38
  • evsi

Комментарии (114)

RSS свернуть / развернуть
А чем не устроил какой-нить готовый ШИМ-контроллер?
0
  • avatar
  • Vga
  • 16 августа 2012, 02:03
Например?
0
Не знаю. Что-то из ориентированных на источники питания микросхем, быть может.
0
Я очень долго копался в информации на них. С IRU3037 даже экспериментировал. Заточка под источники питания дает себя знать. Либо диапазон PWM меньше 100% (у многих вообще < 50), либо всякие встроенные защиты под ногами путаются. У той же IRU3037, например, управляющие напряжение меньше 0.4 (или 0.6, не помню на вскидку) не воспринимаются и на выходах 0 (защита от КЗ).
0
У Texas Instruments, например, есть параметрический поиск. Другое дело, что не всё, что они выпускают можно найти в продаже.
0
Именно. Например, у Linear Technology есть генератор PWM управляемый напряжением LTC6992. Все замечательно, но купить его у нас невозможно :(
0
0
Я в курсе. Предположим, я ее куплю и использую. Много людей смогут повторить конструкцию?
0
Это нужно было всего лишь 1.3 Mhz?
+1
  • avatar
  • a9d
  • 16 августа 2012, 02:35
1.3МГц мне с головой.
0
Долго пытался сообразить, что же скрывается за фразой
в частности с их помощь высокочастотный PWM тоже не просто
0
Обычные операционники на частотах порядка мегагерца работают не очень хорошо, а те, что работают совсем не дешевы.
0
Это понятно. Я про то, что в данной фразе съедены окончания и даже целые слова…
0
Точно. Поправил, спасибо.
0
жесть конечно. Самый дешёвый msp430gxxxx в DIPе. 16Мгц и не одного элемента обвязки (встроенный DCO).
0
Хмм. И как на нем сделать генератор PWM на, скажем, 500кГц с, хотя бы, 10-битной разрядностью?
0
Возможно, я чего то не знаю, но причём тут разрядность? 16Мгц = минимальный шаг 62.5нс. Вот и делайте любой ШИМ с минимальным шагом 62.5нс. МК стоит 30р.
0
Спасибо, конечно, за идею, но 5 разрядов (то есть всего 32различных значения) для частоты PWM в 500кГц мне как-то маловато. К тому же я и так использую контроллер с частотой 72МГц для управления и если бы меня устраивал PWM, который он генерит, я бы потратил на генератор 0р и не заморачивался.
0
в таких случаях используют сигма-дельта модуляцию, а не широтно- импульсную. можно на spi интерфейсе сделать. тем более в msp есть dma на USCI.
0
В «таких» это в каких? Мне с выхода генератора надо полумост переключать. Как мне тут поможет дельта-сигма модуляция. Мне правда очень интересно.
0
таких, это когда надо большую разрядность на высокой частоте.
При этом для PWM частота модулятора должна быть в 2^N раз выше частоты сигнала, а для сигма-дельта модуляции при оверсэмплинге по частоте в 128..256 раз можно уже и 24 разряда получить.
0
Мне очень большую разрядность не нужно, 10 разрядов с головой. Да и частота сигнала у меня мала, на самом деле. Если быть совсем точным, то там вообще постоянное напряжение (если не учитывать обратную связь по току в нагрузке). Кроме того, я пока не понимаю, как с помощью дельта-сигма модуляции я смогу управлять полумостом, точнее — синхронным преобразователем.
0
для pwm 10 бит и 500кГц нужна частота модулятора в 500МГц.
c сигма-дельта модуляцией соотношение частот гораздо меньше:
как пример:
sydney.edu.au/engineering/electrical/people/philip.leong/UserFiles/File/papers/dac_fpt03.pdf
при частоте модулятора всего в 64 раз выше частоты сигнала (6МГц тактовой против 96кГц сигнала) получают SNRы лучше 100дБ.
для PWM чтобы получить 1e-5 (чуть больше 16 разрядов) на 96кГц понадобилась бы частота модулятора 960 МГц.

вот еще реализация на МК:
www.ti.com/lit/an/slyt076/slyt076.pdf

>Кроме того, я пока не понимаю, как с помощью дельта-сигма модуляции я смогу управлять полумостом:
можно погуглить «sigma delta class D»
0
для PWM чтобы получить 1e-5 (чуть больше 16 разрядов) на 96кГц понадобилась бы частота модулятора 960 МГц. 9.6ГГц
0
Итоговая схема (источник тока) не совсем похожа на ЦАП, да и требования несколько другие. Ближайший аналог этой схемы — синхронный стабилизатор напряжения, а там дельта-сигма варианты мне не попадались.
0
модулятор становится ЦАПом лишь после аналогового фильтра, хоть ШИМ, хоть сигмадельта, а до фильтра это просто последовательность 0 и 1.
а уж будет ли потом эта последовательнось подана на RC фильтр для получения среднего напряжения, или на ключи коммутирующие ток — без разницы.

просто сигма-дельта модулятор имеет «среднюю» частоту переключения выше чем у PWM, и для получения одинаковой разрядности на той же частоте сигнала требуется гораздо меньшая частота модулятора чем у ШИМ.
поэтому вполне можно получить 10бит на 500кГц при частоте модулятора в десяток мегагерц.
0
модулятор становится ЦАПом лишь после аналогового фильтра, хоть ШИМ, хоть сигмадельта, а до фильтра это просто последовательность 0 и 1.
а уж будет ли потом эта последовательнось подана на RC фильтр для получения среднего напряжения, или на ключи коммутирующие ток — без разницы.
Это понятно (к слову, фильтр на выходе таки есть, так что с этой точки зрения это, все-таки, ЦАП). Но я имел в виду другое: задача как можно точнее восстановить сигнал тут не стоит, а нелинейность преобразования компенсируется петлей обратной связи по току в нагрузке. Разрешение нужно только для того, что бы избежать больших колебаний тока в нагрузке из-за дискретности управляющего воздействия.
просто сигма-дельта модулятор имеет «среднюю» частоту переключения выше чем у PWM, и для получения одинаковой разрядности на той же частоте сигнала требуется гораздо меньшая частота модулятора чем у ШИМ.
Да, я уже погуглил чуток, освежил память.
0
для pwm 10 бит и 500кГц нужна частота модулятора в 500МГц.
Это если счетчиком делать. Схема в топике справляется с этим без труда. Мне ведь линейность не принципиальна.
можно погуглить «sigma delta class D»
Спасибо, погуглю.
0
а deadtime уже учел? или это драйвер полумоста сделает?
0
Да, драйвер это делает сам, причем у того драйвера, который я подобрал (NCP5351) deadtime адаптивный, его не надо подбирать.
0
То есть теперь вместо HIPа у тебя стоят две этих микрухи?
0
Угу. С ними все заметно проще, и разводка, и выбор транзисторов и настройка. Все-таки способность быстро раскачивать транзисторы с емкостью затвора 6нан и адаптивный дедтайм сильно облегчают жизнь.
0
Еще и дешевле=_=.

А транзисторы подбираются просто по нужному току стока и минимальному заряду затвора?
0
Еще по скорости переключения и по сопротивлению в открытом состоянии.
0
А все драйвера полумоста работают как синхронные преобразователи?
0
Все драйверы полумоста умеют переключать транзисторы, а вот что именно транзисторы коммутируют — вопрос отдельный. В данном случае это индуктивность, которая, при таком включении, образует синхронный преобразователь. Но могла бы быть, например, обмотка BLDC или шаговика.
0
Ясно. Просто встал вопрос найти ближайший аналог(элитан согласен продать за смешные деньги, но только партией от 30 штук, на всю жизнь хватит).
0
Ближайший аналог чего именно? NCP5351?
0
Да, для данного случая. Но там ниже ты уже ответил, так что не надо.
0
Аналогов больше, на самом деле. У Linear Technology есть куча разных драйверов, у TI тоже. Другой вопрос, что у нас они все экзотика. NCP-шки и то заказывать пришлось…
0
а как вы к ir2104 относитесь?
0
Никак. Она для таких задач не годится. С натяжкой подойдет IR2184.
0
а что с ней не так, deadtime большое?
0
Не только. Она может «закачать» в затвор только очень маленький ток. Сравните 0.2А у IR2104, 1.8A у IR2184, 2.5А у HIP4081A и 4A у NCP5351. Этот ток, в свою очередь, непосредственно влияет с какой скоростью заряжается или разряжается емкость затвора у транзистора и, соответственно, насколько быстро он открывается или закрывается. Ну и, наконец, скорость открытия/закрытия не посредственно влияет на то, с какой максимальной частотой может работать полумост без возникновения сквозного тока.
0
«непосредственно», конечно же.
0
Ясно, спасибо. Чорт, нет в жизни счастья -в платане что-то нету NCP5351, а IR2184 больно медленная:(
0
Да, у нас тоже не фонтан с этим. Но HIP4081 купить вполне можно, а NCP5351 пришлось заказывать.
а IR2184 больно медленная:(
Да, 2181 и 2183 побыстрее будут.
0
напряжение максимальное то тоже нужно учитывать!
0
В общем случае да, безусловно. Но я оцениваю применимость драйверов к конкретной задаче, а тут напряжение маленькое (12В), все перечисленные драйвера его держат.
0
использую Тини45 с PLL она до 50 чтоль мегагерц раскачивается на периферию.
0
У стм-ок вообще 72(а то и 120 или 165)МГц. Только этот вариант мне не нравится.
0
А нельзя взять что-нибудь типа UC3842? Там уже всё есть — и генератор пилы и ОУ. Посмотрите, как в самодельных сварочниках сделано. Вместо резистора регулировки тока — фильтрованный ШИМ с МК.
0
У них максимум 50% коэффициент заполнения.
0
3842,43-100%
3844,45-50%
0
Вспомнил из-за чего я от них отказался: а) наличие dead-time, причем довольно большого(поскольку драйвер внешний, то это лишее, к тому же минимум 300нс это явный перебор), б) медленное нарастание и спад, в) достаточно высокое напряжение питания, что усложняет согласование с драйвером.
0
Понятно. А если с дохлых материнок, видюх снять? За пару-тройку баксов можно купить на запчасти. Тем более, что эта техника сейчас расходный материал, особенно видеокарты. Да и даташиты на большинство контроллеров найти не проблема.
0
У меня сейчас дохлых материнок и видюх нету. К тому же там сейчас, обычно, ставят многофазные преобразователи. Тема весьма перспективная, но я пока не готов за нее браться, тут бы нынешний источник тока до ума довести :)
0
[думает] может все-таки вот это смутило:

Operating Frequency up to 500KHz
?:) они ж все-таки больше для сетевых источников.

зы. а что за дед-тайм в UC384x? или имеешь ввиду, скажем так, «время отклика»?
0
Да, это. И длинные фронты. Насчет дедтайма в конкретно этих чипах я прогнал. Но типовой duty cycle там меньше 100%.
0
Насчет дедтайма в конкретно этих чипах я прогнал

неправда!!! это я че-та затупил:) даже не то, чтобы затупил, просто мертвое время — оно у меня больше с двухтактными ассоциируется, чтобы сквозняка не было. но в реальности — да, получить 100% от UC384x (да думаю, и от других, у которых RC-генератор) в принципе нереально. надо же, чтобы конденсатор разрядился перед началом нового периода — а это в любом случае хоть и малое, но время.
0
Да, мертвое время это к двухтактникам. А насчет 100% и RC, так там связи нет, все упирается в компаратор и амплитуду пилы. Если минимальное напряжение на входе компаратора ниже минимума пилы, а максимальное выше, то получим диапазон от 0 до 100%.
+1
Это для источника тока для гальваники? :)
Пока что заложил в управлялку C8051F410, на 50 МГц его PCA может выдать почти 200 кГц, 8 бит там вроде хватит.
Но эта идея красивше, спасибо! Можно здорово сэкономить на МК, поставив любой STM8L с ЦАП (хотя смысл в той экономии — на одни только мосфеты свыше 60 грн. ушло).
0
  • avatar
  • Katz
  • 16 августа 2012, 09:52
Это для источника тока для гальваники? :)
Да.
Но эта идея красивше, спасибо! Можно здорово сэкономить на МК, поставив любой STM8L с ЦАП
И даже без ЦАП, там и низкочастотный PWM сгодится.
(хотя смысл в той экономии — на одни только мосфеты свыше 60 грн. ушло)
Хмм что-то дороговато. Это на какие, если не секрет?
0
Те самые IRF7842, я их 8 шт. взял в имраде. 8252 дешевле и покруче вроде, но не захотели везти. :(
0
У имрада есть IRF3717, которые ничем не хуже (для этой задачи, так даже лучше — меньше сопротивление канала и меньше емкость затвора), но стоят меньше 6грн за штуку.
Если переключиться на другие корпуса, то можно подобрать кучу разных вариантов. Например, IRLR3717 (забавно, что циферки совпадают :) ), которые в том же имраде по 7грн за штуку.
0
Кстати, IRLR3717 весьма приятные транзисторы. Довольно редкое сочетание малого сопротивления в открытом состоянии и (относительно) небольшой емкости затвора дополненное коротким временем переключения. Да и цена не кусачая вовсе.
0
а что если смотреть на аудиоусилители класса D?
0
  • avatar
  • woddy
  • 16 августа 2012, 12:12
Да, я уже думал об этом, но еще не копал в этом направлении.
0
Глупый вопрос, а зачем шим такой высокой частоты?
0
  • avatar
  • crab
  • 16 августа 2012, 14:43
Что бы индуктивность можно было ставить поменьше номиналом. Там, помимо индуктивности как таковой начинает играть роль сопротивлени намотки. При больших токах чуть ли не каждый миллиом на счету. Да и запихать нужное количество витков толстого провода получится только в большой сердечник.
0
Ну я потом тоже на индуктивность подумал, но за уточнение все равно спасибо.

Тогда еще вопрос, а можно ли генерировать пилу R-2R цапом с контроллера? Ну, просто так.
0
Хотя стоп, какой r-2r, в 103м же встроенный =_=.
0
а смысл?
0
В принципе можно, но зачем? Пилу такой частоты и разрешения, какая нужна для ШИМа он все равно не выдаст.
0
То есть нельзя. Ок, такой ответ меня устроит.
0
Как Вы знаете, на высоких частотах начинает проявляться скин-эффект. Возможно, что те милиомы, которые Вы выйграли уменьшением количества витков, покроются увеличением сопротивления за счет скин-эффекта. Было бы очень интересно и познавательно, если бы Вы подобрали оптимальную (по КПД, хотя интереснее именно потери в индуктивности) частоту для Вашего источника и сообщили интересующимся :)
0
Ну методы борьбы с этим явлением достаточно хорошо известны — вместо одного провода применяется несколько свитых вместе. Тут частоты относительно не высокие, так что провода используются достаточно толстые. Но если будут заметны проблемы, то я могу и самодельный литцендрат свить нужной толщины.
0
Вот решаю сейчас подобную задачу, разве что схема преобразователя у меня другая (сепик). Частота ШИМа около 500кГц, при этом разрядность получается около 200 единиц, то есть чуть меньше 8 разрядов. При этом точность выходного напряжения/тока нужна существенно выше. И пока я остановился на таком варианте, что с помощью шима малой разрядности можно задавать некоторое среднее значение, меняя значение каждый такт шима. Грубо говоря если мы будем по очереди выдавать импульсы длинной 100 и 101, то среднее получится 100.5. А учитывая что частота шима очень высокая, получим небольшие пульсации на выходе которые довольно легко сгладить. Осталось только написать систему управления всем этим :)
+2
Да, любопытное решение. Похоже на смесь PWM с сигма-дельта модуляцией :)
0
Решение, в общем-то, стандартное. Называется оверсэмплинг.
0
Может апликуха покажется интересной
caxapa.ru/upload/files/f01bd03c69337521075335f88b402b769ec6d321
0
Где-то тут была тема про много светодиодов, там использовался т.н. BAM, почему бы его не попробовать?
По поводу высокой частоты, разобрал как-то блок питания ксеноновой лампы, так там катушка состоит из полутора печатных витков, вытравленных прямо на двуслойной плате (с одним переходным отверстием) а в 3 прорези внутри и по сторонам этого витка вставлен ш-образный сердечник, широкий и низкий. Не знаю, какая там частота, но влияние скин-эффекта явно будет невелико, и размер тоже.
0
Где-то тут была тема про много светодиодов, там использовался т.н. BAM, почему бы его не попробовать?
BAM как раз расчитан на низкую частоту и большое количество устройств. Тут все наоборот — частота высокая, а устройство одно.
Схема в топике нужна для того, что бы избежать необходимости ставить высокоскоростной МК из-за одной примитивной функции — генерации PWM. С остальным там справится, пожалуй, любой МК у которого есть ЦАП (и даже ЦАП можно навесить внешний).

P.S. жаль, что LTC6992 купить негде, очень уж удобная штука и не надо было бы кулибинством заниматься…
0
В rcscomponents что на эту тему говорят? В принципе, они могут привезти всё, что есть на digikey, но долго получается.
0
Отправил запрос на днях, обещали поискать. Но закладывать этот чип в конструкцию значит сделать ее практически неповторябельной.
0
Хм.

Привезти тебе кулек нахаляву?
0
Это у них на складе или под заказ?

P.S. Кулек не кулек, а от десятка-другого я бы не отказался. В любом корпусе, лишь бы с индексом -1 в конце.
0
На складе. То есть в данном случае 20 дней они это будут комплектовать и еще 2 недели оно будет ехать ко мне. Если это не слишком медленно-- я делаю заказ.
0
Обновил чуток.
0
  • avatar
  • evsi
  • 18 августа 2012, 13:53
А если семлом?:)
0
«Ппереведи...» (с) к/ф :)
0
Бесплатные образцы же :)
0
Пробовал. Написали «отправлено» и уже месяц тишина.
0
Через польшу? Может ваша почта тупит :).Просто сам недавно получил от линеара
0
Через польшу?
Без понятия.
Может ваша почта тупит :)
На нашу почту грех жаловаться после тех ужасов, которые рассказывают о российской :) А если серьезно, то сильного тупления за ней не замечено.
0
Да, проверил. Почему-то через Финляндию.
0
ну через польшу обычно идет около месяца-полтора.А через Финляндию даже не знаю если придет :)Хотя должно.В общем ждите письма счастья :)
0
ОК, спасибо, буду знать.
0
Вот в на одной микросхеме по вашему техзаданию ) На 8 ноге еще есть vref 5v правда не сильно нагружаемое
0
Спасибо, надо будет посмотреть.
0
Забыл еще резистор последовательно входу. Там делитель для входного ОУ необходим. 2выв — это инв. вход. На этом ОУ можно ФНЧ построить для входного ШИМ
Ну, в общем, пожалуйста )
0
Выход тоже придется делить, насколько я понимаю. Там за этим генератором еще логика есть, а она 5-вольтовая.
0
если так, то обрастает элементами. А как оконечнй каскад очень даже хорошо, особенно нагрузить на затвор полевика
0
если так, то обрастает элементами.
Угу. Надо будет прикинуть площадь на плате.
А как оконечнй каскад очень даже хорошо, особенно нагрузить на затвор полевика
Это да.
0
Ребята, это все ясно, схема прикольно сделана, вопрос: что приходит с мк в данном случае? или мк просто подает 0,1 таким образом регулируя заполнение, снимая показания, например АЦП?
0
C МК приходит PWM либо сигнал с ЦАП-а (если есть). Прикол в том, что частоты PWM c МК и того, чем он управляет полностью развязаны. То есть, например, с помощью «ардуиновского» PWM с частотой ~500Гц можно регулировать PWM с частотой, например, 500Кгц.
0
на схему нужно подавать постоянное напряжение в дипазоне размаха пилы от ~50мв до ~2.9В
0
Я все понимаю, но поясните пожалуйста, как будут выглядеть осциллограммы, ато как включить понятно, а как все-таки регулировать скважность, вот прикинуть не могу.
0
Пока входное напряжение ниже нижнего порога, на выходе будет 0. Когда оно превысит нижний порог, появятся «иголочки», которые будут расширяться по мере роста входного напряжения. Наконец, когда входное напряжение превысит верхний порог, на выходе всегда будет 1.
Если использовать для управления PWM сигнал, то его надо отфильтровать, скажем, обычная RC цепочка вполне подойдет. На выходе фильтра, в зависимости от скважности входного PWM сигнала, будет постоянное напряжение от 0 до (почти) напряжения питания. Если входной PWM генерится 5В микроконтроллером, то при скважности ~60% этого PWM получится около 3В постоянного напряжения и на выходе генератора из топика будет 100% скважность. Примерно так.
0
Спасибо большое за пояснение.
0
триггера Шмидта
Может все таки Триггер Шмитта? :)
0
Спасибо, поправил.
0
Всё правильно сделал. Микроконтроллер здесь от лукавого будет. Единственное, конденсатор заряжать лучше от источника тока. Тогда пила более ровной будет
0
По большому счету она сильно ровная не нужна, хотя да, можно, конечно.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.