Перейти к содержимому

Как из шим сделать аналоговый сигнал

  • автор:

Точный и быстрый преобразователь цифрового сигнала ШИМ в аналоговое напряжение

Широтно-импульсная модуляция (ШИМ) является распространенным методом формирования аналоговых напряжений с помощью цифровых устройств, таких, например, как микроконтроллеры или ПЛИС. В большинстве микроконтроллеров имеются специализированные периферийные блоки, предназначенные для формирования ШИМ, а для генерации сигналов ШИМ средствами ПЛИС достаточно написать лишь несколько строк RTL-кода. Эта технология исключительно проста и практична в случаях, когда требования к параметрам аналоговых сигналов не слишком строги, поскольку для ее реализации требуется всего один выход микросхемы, а количество необходимых строк программного кода, несоизмеримо меньше того, что потребовалось бы в случае использования цифро-аналогового преобразователя (ЦАП) с интерфейсом SPI или I 2 C. На Рисунке 1 приведен типичный пример приложения с цифровым выводом, выходной сигнал которого превращается в аналоговое напряжение с помощью фильтра.

Рисунок 1. Простейший преобразователь ШИМ-аналог.

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

Этот преобразователь ШИМ-аналог лучше?

Рисунок 2 иллюстрирует попытку исправить эти недостатки. Благодаря выходному буферу появилась возможность использования в фильтре высокоомных резисторов при сохранении низкого импеданса аналогового выхода. За счет использования внешнего КМОП буфера, получающего питание от прецизионного опорного источника, повысилась точность коэффициента передачи, так как границами изменения сигнала ШИМ теперь стали земля и точное положительное напряжение. Эта схема, безусловно, работоспособна, однако требует большого количества компонентов, не позволяет сделать время установления лучше, чем 1.1 с, и не содержит никаких механизмов, с помощью которых было бы возможно «удерживать» аналоговое напряжение при отключенном сигнале ШИМ.

Рисунок 2. Усовершенствованный преобразователь ШИМ-аналог.

Усовершенствованный преобразователь ШИМ-аналог

Микросхемы LTC2644 и LTC2645 представляют собой сдвоенный и счетверенный преобразователи ШИМ-напряжение на основе ЦАП, содержащие внутренний источник опорного напряжения со стабильностью 10 ppm/°C и обеспечивающие 8-, 10- или 12-разрядную точность преобразования сигналов ШИМ. LTC2644 и LTC2645 снимают все перечисленные проблемы прямым измерением коэффициента заполнения входного сигнала ШИМ и отправкой соответствующего 8-, 10- или 12-разрядного кода на высокоточный ЦАП по каждому нарастающему фронту (Рисунок 3).

Рисунок 3. 4-канальный преобразователь ШИМ-аналог.

Внутренний источник опорного напряжения 1.25 В определяет полную шкалу выходных напряжений 2.5 В. Иное значение напряжения полной шкалы можно получить, используя внешний источник опорного напряжения. Для установки уровня входного цифрового сигнала используется отдельный вывод IOVCC, позволяющий напрямую подключать к микросхемам как ПЛИС с напряжением питания 1.8 В, так и 5-вольтовые микроконтроллеры, а также устройства с любым другим напряжением питания, лежащим внутри этого диапазона. В техническом описании гарантируются отличные точностные характеристики:

  • напряжение смещения 5 мВ,
  • максимальная ошибка усиления 0.8%,
  • максимальная интегральная нелинейность 2.5 единицы младшего разряда (12 бит).

Время установления, отсчитанное от переднего фронта входного сигнала ШИМ до момента, когда уровень выходного напряжения достигает точности 0.024% (веса единицы младшего разряда 12-битного ЦАП), составляет 8 мкс. Для 12-битных версий микросхем диапазон частот входных сигналов ШИМ составляет 30 Гц … 6.25 кГц.

Многообразие режимов выхода

На Рисунке 4 показано типичное приложение с подстройкой питания, основанное на использовании еще одной уникальной функции LTC2644. Подключение вывода IDLSEL к напряжению высокого уровня устанавливает режим выборки/хранения, в котором выходы при включении схемы будут находиться в высокоимпедансном состоянии (без подстройки), а непрерывный входной сигнал высокого уровня переведет его в режим постоянного удержания, в то время как непрерывный сигнал низкого уровня установит состояние высокого импеданса. Таким образом, при включении схемы можно выполнить однократную подстройку напряжения питания, подав на вход напряжение высокого уровня после однократного импульса ШИМ. Низким уровнем на входе ШИМ схему можно аккуратно вывести из режима подстройки. Соединением выводов IDLSEL и GND задается «прозрачный режим», в котором продолжительное удержание высокого уровня на входе устанавливает на выходе полную шкалу напряжений, а удержание низкого уровня – нулевую шкалу.

Рисунок 4. Приложение с подстройкой питания.

Заключение

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

Введение

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

1. Принцип генерации аналогового сигнала с помощью ШИМ (PWM)

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

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

1.1 Характеристики сигнала

Максимальная амплитуда выходного аналогового сигнала будет определяться амплитудой логической единицы цифрового ШИМ сигнала. Если микроконтроллер питается от +5 В, то грубо говоря, амплитуда выходного аналогового сигнала будет от 0 до 5 В.

Минимальный шаг изменения аналогового сигнала (разрешение) будет определяться выражением:

где Umax максимальная амплитуда аналогового сигнала (В), а n — разрядность счетчика реализующего ШИМ.

Например, ШИМ сигнал формируется с помощью программного 8-ми разрядного счетчика. Количество градаций ШИМ сигнала, которые можно получить с помощью этого счетчика, равно 2^8 = 256. Тогда разрешение аналогового сигнала при Umax = 5 В будет равно

dUa = 5/256 = 0,0195 В.

Частота ШИМ сигнала будет определять так:

где Fcpu — тактовая частота микроконтроллера (Гц), K — коэффициент предделителя счетчика, n — разрядность счетчика.

Например, тактовая частота микроконтроллера 8 МГц, коэффициент предделителя равен 8, разрядность счетчика 8 бит. Тогда частота выходного ШИМ сигнала будет равна:

Частота выходного аналогового сигнала будет определяться выражением:

Fa = Fpwm/Ns = Fcpu/(K*2^n*Ns),

где Fpwm — частота ЩИМ сигнала, а Ns — количество отсчетов аналогового сигнала.

Например, ШИМ сигнал реализуется на 8-ми разрядном счетчике с коэффициентом предделителя равным 8 и тактовой частотой микроконтроллера 8 МГц. В памяти микроконтроллера записано 32 отсчета синусоидального сигнала, которые представляют собой один его период. Тогда частота выходной синусоиды будет равна:

Fa = 8000000/(8*2^8 * 32) =

Разрядность ЦАП`a сделанного на основе ШИМ эквивалентна разрядности используемого счетчика.

1.2 Аппаратная реализация ШИМ

Все современные микроконтроллеры имеют в своем составе таймеры/счетчики. Один или несколько режимов этих таймеров предназначены для генерации ШИМ сигнала. Как правило этот сигнал генерируется на специальных выводах. Например, у микроконтроллера mega16 фирмы Atmel 8-ми разрядный таймер/счетчик Т0 имеет два режима генерации ШИМ сигнала (быстрый ШИМ и ШИМ с точной фазой), а для вывода сигнала используется пин порта B — OC0 (PINB3).

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

1.3 Программная реализация ШИМ

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

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

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

Ниже приведен пример кода, который выполняет функцию генерацию аналогового сигнала с помощью аппаратной и программной широтно-импульсной модуляции. Код написан для микроконтроллера atmega16, тактовая частота 8 МГц, компилятор IAR. На выходах PB2 и PB3 генерируются две синусоиды (разной частоты) из 32 двух отсчетов.

1.4 Фильтр для ШИМ

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

Рассмотрим пример. ШИМ сигнал генерируется аппаратным 8-ми разрядным счетчиком с коэффициентом предделителя равным 8, тактовая частота микроконтроллера 8МГц, количество отсчетов аналогового сигнала — 32.

Частота ШИМ сигнала будет равна:

Fpwm = Fcpu/(K*2^n) = 8000000/(8*256) =

Частота аналогового сигнала будет равна:

Fa = Fpwm/Ns = 3906/32 = 122 Гц

Выберем частоту среза равную 200 Гц и рассчитаем номиналы пассивного низкочастотного RC фильтра. Частота среза такого фильтра определяется выражением:

где R — номинал резистора (Ом), а C -емкость конденсатора (Ф).

Задавшись номиналом одного из компонентов можно вычислить номинал второго. Для резистора номиналом 1 кОм, емкость конденсатора будет равна:

C = 1/(2*Pi*Fc*R) = 1/(6.28 * 1000*200) =

Выбираем ближайшее значение из ряда E12 — 0.82 мкФ. При таких номиналах фильтра мы получим уже похожий аналоговый сигнал.

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

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

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

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

Как из шима получить постоянное напряжение.

Как получить из шима постоянное напряжение, знает каждый начинающий электронщик. Всё просто, надо пропустить шим через фильтр низких частот(в простейшем случае RC цепочка) и на выходе фильтра получим постоянное напряжение, не так ли?

На самом деле, как мне кажется всё гораздо интереснее, при попытке получить из шима постоянное напряжение появляются следующие вопросы:

Как подобрать номиналы элементов фильтра?

Сгладиться ли шим полностью или останутся пульсации?

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

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

Как из шима получить постоянное напряжение.

Как из шима получить постоянное напряжение.

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

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

Как из шима получить постоянное напряжение.

Как из шима получить постоянное напряжение.

Ух ты, что-то начинает проясняться, у нас появилась постоянная составляющая. То есть в наши рассуждения закралась ошибка и заключается она в том, что конденсатор заряжается от 0 до 63% за время равное R*C(T), а разряжается он от 63% до 5% за время больше чем 2T , ниже графики, поясняющие это.

Как из шима получить постоянное напряжение.

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

Теперь, когда мы нашли ошибку в наших размышлениях давайте, проанализируем что происходило, в первом эксперименте. Известно, что полная зарядка или разрядка конденсатора происходит за время равное 5T, а зарядка до 95% и разрядка до 5% примерно за 3T. Так как постоянная времени RC цепочки(которую мы использовали как ФНЧ) была мала, то за один период шима конденсатор успевал, почти полностью зарядиться и разрядиться.

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

Итак вывод, постоянная времени RC цепочки должна быть равна или больше периода шима, тогда за один период не будет происходить полный заряд-разряд конденсатора. Если же ещё на порядок увеличить постоянную времени RC цепочки, то увеличится время переходного процесса и уменьшаться пульсации. Время переходного процесса — это промежуток времени, за которое напряжение на конденсаторе изменится от 0 до некоторой постоянной величины. Данный вывод приведен для общего понимания.

Теперь примерно, понимая как вообще получают из шима постоянное напряжение, давайте перейдём к реальной задаче.
Необходимо на одном из входов ОУ формировать опорное напряжение с помощью шима и ФНЧ, логическая единица у шима составляет 3 вольта, частота шима 10KHz, допустимый уровень пульсаций 30 милливольт. Считаем, что входы ОУ ток не потребляют, в качестве ФНЧ возьмём фильтр первого порядка, реализованный на RC цепочке.

Самый простой путь — это взять RC цепочку, у которой Т на два порядка больше величины шима и посмотреть какие будут пульсаций и дальше подбирать номиналы фильтра, но это есть не что иное, как метод научного тыка, а хотелось бы всё по-честному рассчитать.

Как из шима получить постоянное напряжение.

Как из шима получить постоянное напряжение.

Известно, что крутизна спада у фильтра первого порядка составляет 20дб/декаду и ослабление сигнала на 40дб, соответствует увеличению частоты на две декады. (20дб/декаду — уменьшение амплитуды в 10 раз(20дб), при увеличении частоты в 10 раз(декада).

Как из шима получить постоянное напряжение.

Зная, что частота среза фильтра должна быть на две декады(в 100 раз) меньше частоты шимы, можно её рассчитать 10KHz/100 = 100Hz.

Номиналы фильтра можно подобрать пользуясь известной формулой.

Как из шима получить постоянное напряжение.

Как из шима получить постоянное напряжение.

Как из шима получить постоянное напряжение.

Как из шима получить постоянное напряжение.

У данного генератора импульсная система питания, которая сильно шумит, это можно видеть во втором канале, но если присмотреться, то видно, что амплитуда пульсаций на осциллограмме примерно 40 милливольт, то есть немного отличается от расчётной, но это нормально так, как шим содержит высшие гармоники, которые вносят свой вклад и спад не везде равен 20дб/декаду, это видно на ЛАЧХ. Несмотря на
некоторые допущения, мне этот расчёт показался очень простым и понятным, ведь мы с помощью простых логических размышлений и школьных формул, решили такую интересную задачу. При решении данной задачи важно понять именно физический смысл, что мы по сути на АЧХ абстрактного фильтра находим точку, которая соответствует нужному подавлению сигнала, вторая координата точки — это частота, она должна быть равна частоте шима. Таким образом мы находим одну из точек АЧХ фильтра, пользуясь этой точкой находим частоту среза, а зная её мы находим номиналы фильтра, вот и всё.

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

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