Фильтр нижних частот для преобразования ШИМ сигнала в аналоговое напряжение

Добавлено 5 декабря 2019 в 18:32

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

Вспомогательная информация

Предыдущая статья

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

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

\(\text{Необходимое напряжение ЦАП}=A\times \text{коэффициент заполнения}\)

где A («амплитуда») – напряжение высокого логического уровня.

Давайте начнем наше более подробное исследование ЦАП на базе ШИМ с рассмотрения представления ШИМ сигнала в частотной области. Вот схема LTspice:

Рисунок 1 Схема моделирования в LTspice
Рисунок 1 – Схема моделирования в LTspice

Как видно из характеристик PULSE, ширина импульса составляет 5 мкс, а период – 10 мкс. Таким образом, коэффициент заполнения составляет 50%, а несущая частота ШИМ сигнала составляет 100 кГц. Также обратите внимание, что A = 3,3 В, а время нарастания и спада составляет 10 нс. Вот сигнал во временной области:

Рисунок 2 Представление ШИМ сигнала во временной области
Рисунок 2 – Представление ШИМ сигнала во временной области

А вот и результаты быстрого преобразования Фурье (БПФ):

Рисунок 3 Представление рассматриваемого ШИМ сигнала в частотной области
Рисунок 3 – Представление рассматриваемого ШИМ сигнала в частотной области

Вы можете узнать в этой диаграмме спектр общего вида, который мы ожидаем увидеть от прямоугольного сигнала, то есть всплеск на несущей частоте, а затем уменьшающиеся по амплитуде гармоники на частотах, равных несущей частоте, умноженной на 3, несущей частоте, умноженной на 5, и так далее. Однако БПФ LTspice не показывает нам постоянной составляющей, которая не равна нулю, потому что этот прямоугольный сигнал не симметричен относительно оси x. Я изменил следующий график, чтобы включить компонент постоянной составляющей:

Рисунок 4 Измененное представление в частотной области, учитывающее наличие постоянной составляющей
Рисунок 4 – Измененное представление в частотной области, учитывающее наличие постоянной составляющей

Итак, нам нужны стабильные 1,65 В, расположенные в левом краю, и нам не нужен этот проблемный всплеск на частоте 100 кГц (а также все более высокочастотные всплески). В этот момент вы, вероятно, можете понять, зачем мы используем фильтр нижних частот в ЦАП на базе ШИМ: фильтр сохраняет компонент постоянной составляющей, подавляя всё остальное. Если бы у нас был идеальный фильтр, у нас было бы совершенно стабильное напряжение ЦАП – просто оглянемся на предыдущий график и представим фильтр с АЧХ в виде «кирпичной стены», которая на частоте 50 кГц переходит от отсутствия затухания к полному затуханию. Все не связанные с постоянной составляющей компоненты сигнала будут устранены, и мы получим постоянное напряжение на уровне 1,65 В.

В этот момент вам может быть интересно узнать, как меняется спектр при изменении ширины импульса. Что если частотные составляющие перемещаются так, что фильтр нижних частот становится менее эффективным? Рассмотрим следующие два результата БПФ для коэффициентов заполнения 10% и 90%:

Рисунок 5 Спектр ШИМ сигнала с коэффициентом заполнения 10%
Рисунок 5 – Спектр ШИМ сигнала с коэффициентом заполнения 10%
Рисунок 6 Спектр ШИМ сигнала с коэффициентом заполнения 90%
Рисунок 6 – Спектр ШИМ сигнала с коэффициентом заполнения 90%

Спектр, безусловно, изменяется относительно коэффициента заполнения 50%, но одно не меняется: первый всплеск находится на несущей частоте. Таким образом, независимо от коэффициента заполнения, мы имеем довольно большую полосу частот (в данном случае от постоянного напряжения до 100 кГц), в которой фильтр нижних частот может переходить от отсутствия затухания к существенному затуханию.

Пульсации и отклик при одном полюсе

Давайте посмотрим, какое качество ЦАП мы можем получить с помощью простейшего RC фильтра. Начнем с частоты среза (обозначаемой fср) в середине полосы от постоянной составляющей до частоты несущей:

\(f_{ср}=50\ кГц=\frac{1}{2\pi RC};\ выбираем\ C=10\ нФ\ \ \Rightarrow\ \ R\approx318\ Ом\)

Рисунок 7 Схема моделирования в LTspice: генератор ШИМ сигнала и RC фильтр нижних частот
Рисунок 7 – Схема моделирования в LTspice: генератор ШИМ сигнала и RC фильтр нижних частот
Рисунок 8 Осциллограмма напряжения, полученного на выходе фильтра нижних частот
Рисунок 8 – Пульсации напряжения, полученного на выходе фильтра нижних частот

Не очень хорошо... Очевидно, нам нужно большее затухание, чем сейчас. Давайте переместим частоту среза на 1 кГц:

Рисунок 9 Схема моделирования в LTspice: генератор ШИМ сигнала и RC фильтр нижних частот с частотой среза 1 кГц
Рисунок 9 – Схема моделирования в LTspice: генератор ШИМ сигнала и RC фильтр нижних частот с частотой среза 1 кГц
Рисунок 10 Осциллограмма напряжения, полученного на выходе фильтра нижних частот с частотой среза 1 кГц
Рисунок 10 – Время установления напряжения, полученного на выходе фильтра нижних частот с частотой среза 1 кГц

Теперь пульсации значительно уменьшились, но вы, вероятно, заметили, что у нас возникла новая проблема: выходной сигнал достаточно долго достигает требуемого напряжения ЦАП. Это происходит потому, что более высокое сопротивление в RC фильтре не только снижает частоту среза, но также увеличивает постоянную времени – большее сопротивление означает меньший ток, протекающий к конденсатору, и, следовательно, конденсатор заряжается медленнее. Следующий график помогает показать ограничение, накладываемое этим действием на ЦАП:

Рисунок 11 Осциллограмма напряжения
Рисунок 11 – Время установления напряжения

На этом графике вы видите довольно плохое «время установления», которое представляет собой характеристику, которая показывает, как быстро ЦАП может установить свой выходной сигнал на новое запрограммированное напряжение. График показывает, что, когда выходной сигнал увеличивается или уменьшается на половину диапазона полной шкалы, эта конкретная схема приводит к времени установления почти 1 мс. Не поймите меня неправильно, во многих приложениях время 1 мс было бы вполне приемлемым, но это не меняет того факта, что эта производительность установления никак не сравнится с тем, что вы ожидаете увидеть от типового ЦАП.

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

  • Компромисс № 1: более низкая частота среза означает меньшие пульсации и большее время установления; более высокая частота среза означает большие пульсации и меньшее время установления. Поэтому вы должны подумать о своем приложении и решить, хотите ли вы, чтобы ЦАП быстрее реагировал на изменения или был менее подвержен пульсациям выходного сигнала.

Два полюса лучше одного?

Давайте посмотрим на результаты работы двухполюсного фильтра для тех же двух частот среза. Следующая схема представляет собой RLC фильтр с критическим затуханием с fср ≈ 50 кГц:

Рисунок 12 Схема моделирования в LTspice: генератор ШИМ сигнала и RLC фильтр нижних частот с частотой среза 50 кГц
Рисунок 12 – Схема моделирования в LTspice: генератор ШИМ сигнала и RLC фильтр нижних частот с частотой среза 50 кГц
Рисунок 13 Осциллограмма напряжения, полученного на выходе RLC фильтра нижних частот с частотой среза 50 кГц
Рисунок 13 – Пульсации напряжения, полученного на выходе RLC фильтра нижних частот с частотой среза 50 кГц

Как и ожидалось, это значительное улучшение по сравнению с однополюсным фильтром 50 кГц; размах пульсаций уменьшился с примерно 2,15 В до менее чем 900 мВ.

Вот схема для RLC фильтра с критическим затуханием с fср ≈ 1 кГц:

Рисунок 14 Схема моделирования в LTspice: генератор ШИМ сигнала и RLC фильтр нижних частот с частотой среза 1 кГц
Рисунок 14 – Схема моделирования в LTspice: генератор ШИМ сигнала и RLC фильтр нижних частот с частотой среза 1 кГц
Рисунок 15 Осциллограмма напряжения, полученного на выходе RLC фильтра нижних частот с частотой среза 1 кГц
Рисунок 15 – Пульсации напряжения, полученного на выходе RLC фильтра нижних частот с частотой среза 1 кГц

Здесь мы почти устранили пульсации; если бы вы увеличили масштаб, то обнаружили бы, что размах пульсаций составляет всего около 500 мкВ. Но теперь у нас снова есть проблема со временем установления (вспомните компромисс № 1):

Рисунок 16 Осциллограмма напряжения на выходе RLC фильтра нижних частот с частотой среза 1 кГц
Рисунок 16 – Время установления напряжения на выходе RLC фильтра нижних частот с частотой среза 1 кГц

В этот момент вы можете подумать о том, как можно улучшить этот фильтр для достижения быстрого отклика в сочетании с низкими пульсациями. Возможно, вы заметили, что для предыдущей схемы требовалось 2,2 миллигенри – это огромная индуктивность. А что насчёт активного фильтра? Фильтр Саллена-Ки? Может быть, фильтр Саллена-Ки после RC фильтра? Подождите, почему бы просто не использовать фильтр с переключаемым конденсатором? Четыре полюса, или даже пять или семь... Это подводит нас ко второму компромиссу:

  • Компромисс № 2: Фильтры высшего порядка улучшают производительность, но они также увеличивают стоимость и сложность. Вместо того, чтобы тратить время и деньги на внедрение причудливого фильтра для посредственного ЦАП на базе ШИМ, мы просто должны использовать внешний ЦАП! На мой взгляд, вы не должны выходить за пределы одного полюса. Внешние ЦАП (и микроконтроллеры со встроенными ЦАП) настолько широко доступны, что ЦАП на базе ШИМ теряет свою привлекательность, если вы не можете удовлетворить свои требования к производительности с помощью RC фильтра.

Простой способ улучшить ваш ЦАП на базе ШИМ

Мы не должны падать духом из-за компромисса № 2, потому что есть простой способ получить больше производительности от RC фильтра: просто увеличьте частоту ШИМ сигнала! Помните, что спектр ШИМ сигнала в полосе от постоянной составляющей до частоты несущей пуст. Таким образом, более высокая частота несущей означает более широкую полосу, в которой АЧХ фильтра может постепенно спадать – тот же фильтр, то же время установления, большее затухание. Давайте вернемся к нашему RC фильтру с fср ≈ 50 кГц и увеличим частоту несущей до 10 МГц. Вот результаты:

Рисунок 17 Время установления напряжения на выходе ЦАП на базе ШИМ с тактовой частотой 10 МГц RC фильтром с частотой среза 50 кГц
Рисунок 17 – Время установления напряжения на выходе ЦАП на базе ШИМ с тактовой частотой 10 МГц RC фильтром с частотой среза 50 кГц
Рисунок 18 Пульсации на выходе ЦАП на базе ШИМ с тактовой частотой 10 МГц RC фильтром с частотой среза 50 кГц
Рисунок 18 – Пульсации на выходе ЦАП на базе ШИМ с тактовой частотой 10 МГц RC фильтром с частотой среза 50 кГц

Время установления составляет всего около 15 мкс, а пульсации составляют всего 25 мВ (по сравнению с 2,15 В, когда мы использовали фильтр 50 кГц и частоту несущей 100 кГц).

Практические ограничения

Прежде чем мы закончим, я должен отметить, что эти идеализированные симуляции не раскрывают основного источника неидеальной производительности ЦАП базе ШИМ, а именно ненадежных и, следовательно, непредсказуемых напряжений высокого и низкого логических уровней. Напряжение на аналоговом выходе прямо пропорционально амплитуде цифрового ШИМ сигнала, и, таким образом, изменения реальных напряжений высокого и низкого логических уровней ШИМ сигнала приведут к соответствующим изменениям выходного напряжения ЦАП. Эта проблема особенно актуальна для приложений с питанием от батареек; если микроконтроллер питается напрямую от батареи, напряжение высокого логического уровня по мере разряда батареи будет постепенно уменьшаться. Однако даже при стабилизированном питании вы можете не знать точное напряжение питания – стабилизатор с точностью ±2% означает, что точность выходного напряжения ЦАП будет (в лучшем случае) ±2%. И даже если у вас очень точный стабилизатор напряжения, и нет значительных отклонений в напряжении питания, вызванных разрядом батареи или изменениями условий окружающей среды, тем не менее, на реальные напряжения высокого и низкого логических уровней может влиять рабочее состояние устройства, генерирующего ШИМ сигнал (обычно микроконтроллер). Одним из способов решения этой проблемы является использование внешней буферной микросхемы, которая поможет ШИМ сигналу поддерживать предсказуемые уровни напряжения, но в этот момент вы снова находитесь на компромиссной территории – вы потратите 40 с небольшим центов на буферную микросхему или 71 цент на крошечный 8-разрядный ЦАП?

Заключение

Мы рассмотрели два основных компромисса, которые влияют на проект ЦАП на базе ШИМ, и увидели, что более высокая частота несущей – это отличный способ улучшить его производительность. С высокоскоростным микроконтроллером, который обеспечивает 16-разрядное разрешение ШИМ, вы можете реализовать довольно приличный ЦАП, добавив просто RC фильтр. В следующей статье мы будем использовать стартовый набор SAM4S Xplained Pro, чтобы изучить более практическую сторону цифро-аналогового преобразования на базе широтно-импульсной модуляции.

Теги

DAC / ЦАП (цифро-аналоговый преобразователь)PWM / ШИМ (широтно-импульсная модуляция)Время установления ЦАПКоэффициент заполненияФНЧ (фильтр нижних частот)

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.