Перейти к содержанию

ЦАП на ШИМ: расчёт RC-фильтра

Задайте амплитуду, заполнение и частоту ШИМ и номиналы RC-фильтра — калькулятор посчитает среднее напряжение, размах пульсаций, частоту среза и время установления. По тактовой частоте МК он оценит разрешение ШИМ и сравнит с ним пульсации.

Исходные данные

В

напряжение питания выхода

%

490 Гц, 1 кГц, 62,5 кГц

RC-фильтр

Ом

10 мкФ, 100n

Разрешение таймера (необязательно)

1, 8, 64…

Результат

Среднее напряжение
2,5 В
Пульсации после фильтра
12,5 мВразмах, 0,25 % амплитуды
Частота среза фильтра
1,592 Гцτ = RC = 100 мс
Разрешение ШИМ
7,97 бит250 шагов по 20 мВ
Пульсации в шагах ШИМ
0,625
Установление до шага
552 мспосле скачка заполнения от 0 до 100 %

ШИМ-сигнал содержит постоянную составляющую D · U и гармоники частоты ШИМ. Фильтр нижних частот пропускает постоянную составляющую и подавляет гармоники — так из цифрового вывода микроконтроллера получается простой ЦАП.

Формулы

Среднее напряжение и размах пульсаций после одного RC-звена в установившемся режиме:

Uср=D⋅U,ΔU=U⋅(1−e−DT/τ)(1−e−(1−D)T/τ)1−e−T/τ,U_{ср} = D \cdot U, \qquad \Delta U = U \cdot \frac{\left(1 - e^{-DT/\tau}\right)\left(1 - e^{-(1-D)T/\tau}\right)}{1 - e^{-T/\tau}},

где T — период ШИМ, τ = RC. Когда τ много больше T, формула упрощается:

ΔU≈U⋅D (1−D)⋅Tτ,ΔUmax≈U T4τ при D=0,5.\Delta U \approx U \cdot D \, (1 - D) \cdot \frac{T}{\tau}, \qquad \Delta U_{max} \approx \frac{U \, T}{4 \tau} \ \text{при}\ D = 0{,}5 .

Время установления после скачка до точности ε: t = τ · ln(1/ε). Для точности в один шаг n-битного ШИМ ε = 2−n, и t = τ · n · ln 2.

Компромисс

  • Пульсации обратно пропорциональны τ и частоте ШИМ.
  • Быстродействие обратно пропорционально τ: каждое изменение заполнения выход отрабатывает за несколько τ.
  • Разрешение таймерного ШИМ — fclk / (N · fШИМ) шагов: чем выше частота ШИМ, тем меньше шагов.

Пример: 16 МГц, предделитель 64, ШИМ 1 кГц — 250 шагов, почти 8 бит. С фильтром 10 кОм и 10 мкФ (τ = 0,1 с) пульсации при 50 % составляют 12,5 мВ — около 0,6 шага, но установление до шага занимает 0,55 с. ШИМ на 62,5 кГц без предделителя даёт 256 шагов, и уже фильтр с τ = 1 мс оставляет пульсации 20 мВ — около одного шага — при установлении за 6 мс, почти в 100 раз быстрее.

Второе звено и буфер

Если одного RC мало, ставят два звена подряд: второе ослабляет пульсации ещё примерно во столько же раз, а время установления растёт меньше, чем при одном звене с той же итоговой фильтрацией. Резистор второго звена берут в 10 раз больше первого, чтобы оно не нагружало первое.

Выход RC-фильтра высокоомный. Если ЦАП нагружен, после фильтра ставят повторитель на ОУ — подробнее в статье об операционном усилителе. Частоту среза одного звена удобно проверить в калькуляторе RC-фильтра, настройку таймера под нужную частоту ШИМ — в калькуляторе таймеров.

Частые вопросы

Как получить аналоговое напряжение из ШИМ?

Пропустить ШИМ через фильтр нижних частот, обычно RC: на выходе останется среднее значение D · U, где D — коэффициент заполнения, U — амплитуда. Частота среза фильтра должна быть намного ниже частоты ШИМ, тогда пульсации малы. Нагружать такой ЦАП нельзя: выход RC-цепи высокоомный, при нагрузке ставят повторитель на ОУ.

Как выбрать R и C для фильтра ШИМ?

Чем больше постоянная времени τ = RC по сравнению с периодом ШИМ, тем меньше пульсации, но тем медленнее выход следует за изменением заполнения. При 50 % заполнения размах пульсаций примерно U · T / (4τ): для 5 В, 1 кГц и τ = 0,1 с это 12,5 мВ, а установление до шага 8-битного ШИМ займёт около 0,55 с. Если нужно и быстро, и гладко, поднимают частоту ШИМ или ставят второе RC-звено.

Какое разрешение у ШИМ микроконтроллера?

Число шагов — тактовая частота, делённая на предделитель и на частоту ШИМ. При 16 МГц без предделителя на частоте 62,5 кГц это 256 шагов — 8 бит; чтобы получить 10 бит, частоту ШИМ придётся снизить вчетверо. Отсюда главный компромисс ЦАП на ШИМ: разрешение против частоты, а значит, против пульсаций.

Почему пульсации максимальны при 50 % заполнения?

При τ ≫ T размах пульсаций пропорционален D · (1 − D): конденсатор заряжается часть периода D и разряжается часть 1 − D. Произведение наибольшее при D = 0,5 и падает до нуля при 0 и 100 %, когда ШИМ превращается в постоянный уровень.

Источники

  1. Microchip. AN538: Using PWM to Generate Analog Output — ЦАП на ШИМ микроконтроллера с RC-фильтром, выбор частоты и фильтра
  2. Texas Instruments. SPRAA88: Using PWM Output as a Digital-to-Analog Converter on a TMS320F280x DSP — спектр ШИМ, пульсации после фильтра и компромисс между пульсациями и быстродействием
Встроить калькулятор на свой сайт

Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах

<iframe src="https://gaw.ru/embed/pwm/" title="ЦАП на ШИМ: расчёт RC-фильтра" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/pwm/">ЦАП на ШИМ: расчёт RC-фильтра</a> — GAW.ru</p>
Автоподстройка высоты рамки

Если сайт разрешает скрипты, добавьте этот код один раз в любом месте страницы: рамка будет менять высоту вместе с результатом расчёта.

<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>

Обновлено . Нашли ошибку в расчёте? Напишите нам.