Программирование AVR Подавление пульсаций ЦАП ШИМ с помощью аналогового вычитания Fri, December 13 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Подавление пульсаций ЦАП ШИМ с помощью аналогового вычитания Печать
Добавил(а) microsin   

Каждая система цифро-аналогового преобразования (ЦАП, английская аббревиатура DAC) на основе широтно-импульсной модуляции (ШИМ, PWM) нуждается в аналоговой фильтрации выходного сигнала, чтобы отделить спектр импульсов ШИМ от спектра формируемого сигнала. Самый простой способ такой фильтрации - ФНЧ на основе RC-цепочки, у которого размах пульсаций импульсов ШИМ (для самого плохого случая, когда скважность ШИМ составляет 50%), составит (подразумевается, что постоянная времени RC больше периода импульсов ШИМ TPWM):

Vripple / Vfullscale = TPWM / 4·RC

Примечание: здесь приведен перевод статьи Stephen Woodward [1] с дополнением из статьи [3].

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

Tsettle = RC·ln(Vfullscale / Vripple) = TPWM · Vfullscale ·ln(Vfullscale / Vripple) / (4·Vripple)

Эту зависимость можно продемонстрировать на примере 8-битного ШИМ. Если взять:

Vripple / Vfullscale = 1/256; RC = 64·TPWM

... то получится:

Tsettle = 64·ln(256)·TPWM = 355·TPWM

Получается, что даже для довольно быстрого ШИМ 32 кГц (TPWM = 31 мкс) предсказуемое время запаздывания нарастания уровня на выходе составит 11 мс (что соответствует полезному сигналу 90 Гц).

Очевидно, что если время установки выходного сигнала является критическим параметром для ЦАП, то необходимо что-то улучшить в схеме и/или применить более сложную схему фильтрации. Один из таких подобных вариантов синхронного фильтра показан в статье [2].

Однако не в каждом приложении допустимо применять такое сложное решение. Идея решения, предлагаемое в этой статье, касается приложений среднего класса. Как показано на рис. 1, решение добавляет к базовому ФНЧ на R1C1 дополнительный инвертор и элементы R2 и C2, которые смешивают с противоположным знаком полезный сигнал и импульсы пульсаций. В результате получается относительно чистый выходной полезный сигнал, который намного лучше, который получился бы на основе простого RC-фильтра.

PWM ripple cancellation idea fig01

Рис. 1. Формы сигнала и схема подавителя пульсаций ШИМ.

Однако насколько чистый получится этот "относительно чистый сигнал", и насколько быстрее получится нарастание полезного сигнала на выходе? Если принять R2=R1, и R2=C1, то уровень пульсаций и время установки в новой схеме получатся следующие:

Vripple / Vfullscale = (TPWM / 4·RC)2

Tsettle = TPWM ·ln(Vfullscale / Vripple )·(Vfullscale / 16·Vripple )1/2

И для случая 8-битного ШИМ (сигналы которого показаны на рис. 1) получится, если принять RC = 4·TPWM:

Tsettle = 22·TPWM = 0.69 мс

На частоте ШИМ 32 кГц эта схема работает в 16 раз быстрее. Для многих приложений это может оказаться очень хорошим вариантом для компромисса между сложностью схемы и производительностью ШИМ для ЦАП.

[Улучшение работы схемы]

Основной принцип работы показанной выше схемы - пассивное суммирование (с помощью резисторов R1 и R2) основного сигнала ШИМ и инверсного сигнала ШИМ (проходящего через C2) с последующим усреднением на выходном конденсаторе C1. Результирующее частичное подавление позволяет применить меньшую постоянную времени выходного фильтра.

Однако недостаток такой схемы суммирования токов, который ограничивает скорость работы, состоит в том, что сразу после ступенчатого изменения входного сигнала PWM токи R1 и R2 будут противоположными по знаку, но одинаковыми по амплитуде, так что их мгновенная сумма в этот момент окажется равной 0. Как следствие, на C1 нечему интегрироваться, и выходной сигнал DAC не может начать реагировать на изменение шага, пока C2 не начнет заряжатьcя, уменьшая ток через R2, делая тем самым токи R1 и R2 неодинаковыми, в результате на C1 должен появиться выходной сигнал. Этот нежелательный нулевой интервал показан на рис. 2 как временная задержка, которая видна на переднем фронте нарастания выходного сигнала.

PWM ripple cancellation idea fig02

Рис. 2. Ответ выходного сигнала на вычитание токов пульсаций.

Это ограничение скорости отклика выхода DAC вероятно преодолеть не получится из-за применяемой топологии суммирования токов на резисторах. Хотя эта схема фильтра все еще намного эффективнее, чем обычный простой RC-фильтр, однако она недостаточно быстрая, как она могла (должна) бы быть.

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

PWM ripple cancellation idea fig03

Рис. 3. Новая схема подавления пульсаций с вычитанием напряжений.

Работа новой схемы основана на последовательном соединении конденсаторов C1 (который создает компоненту постоянного напряжения PWM) и C2 (предоставляет компонент инвертированного напряжения пульсаций). Оказывается, что подавление пульсаций, адекватное 8-битной разрешающей способности, происходит в том случае, если постоянная времени R1C1 равна 2Tpwm, т. е. удвоенному периоду PWM. Например, 512 мкс для 8-битной PWM, счетчик которой работает на частоте 1 МГц (период ШИМ = 256 / 1000000 = 256 мкс). При увеличении частоты тактирования пропорционально уменьшаются и постоянная времени.

Обратите внимание, что количество компонентов не увеличилось - остался один инвертер (например, 1/6 корпуса SN74HC04), 2 резистора и 2 конденсатора.

Рис. 4 показывает ступенчатый ответ на изменение скважности PWM, который теперь сразу начинается в момент T = 0, в отличие от задержки, показанной на рис. 2, когда применялся токовый принцип подавления пульсаций.

PWM ripple cancellation idea fig04

Рис. 4. Работа схемы, основанная на вычитании напряжений.

На рис. 5 показано сравнение работы старой (красный график) и новой схемы (зеленый график). Время нарастания отклика у старой схемы ~23 периода PWM, а у новой схемы ~16 периодов PWM. Увеличение скорости отклика на 44% представляется очень полезным, если учесть, что схема не усложнилась и количество компонентов не увеличилось.

PWM ripple cancellation idea fig05

Рис. 5. Сравнение скорости работы старой и новой схемы.

[Ссылки]

1. Cancel PWM DAC ripple with analog subtraction site:edn.com.
2. Быстрый синхронный фильтр для ЦАП на основе ШИМ.
3. Cancel PWM DAC ripple with analog subtraction revisited site:ednasia.com.
4Быстрый PWM DAC без выходных пульсаций.
5. Phased-array PWM DAC site:edn.com.
6. Cancel PWM DAC ripple with analog subtraction but no inverter site:edn.com.

 

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


Защитный код
Обновить

Top of Page