Программирование ARM Сравнение режимов ШИМ - обычного и центрированного Mon, December 09 2024  

Поделиться

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

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


Сравнение режимов ШИМ - обычного и центрированного Печать
Добавил(а) microsin   

Широтно-импульсная модуляция (ШИМ, в английской терминологии это Pulse-Width-Modulation, PWM) может использоваться для реализации цифро-аналогового преобразования (ЦАП, в английской терминологии digital-to-analog converter, DAC), что в конечном итоге позволяет синтезировать аналоговые сигналы с помощью микроконтроллера. Существует 2 основных режима генерации PWM - так называемый асимметричный, с импульсами, выровненными в одну сторону (например влево, left aligned asymmetric mode), и центрированный, когда изменение длительности импульсов выровнено посередине (centered symmetric mode). Здесь приведен перевод статьи [1].

Обычный ШИМ. Первый вариант ШИМ также часто называют быстрым (Fast PWM), в нем таймер/счетчик считает от 0 до своего максимума (например 255 для 8-битного таймера), и затем сбрасывается в 0, когда этот максимум достигнут (так называемое переполнение). Если представить себе процесс изменения значения счетчика, то получится пилообразный сигнал.

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

Left aligned PWM signal

Рис. 1. Обычный ШИМ (Left-Aligned PWM, или Fast PWM) и изменение значения его счетчика.

Центрированный ШИМ. В выровненном по середине режиме (его также называют корректным по фазе ШИМ, Phase correct PWM) таймер/счетчик тоже считает от 0 до своего максимума, но затем не сбрасывается в 0, а начинает считать в обратном направлении, вниз, до нуля. После этого цикл повторяется - снова счет до максимума и снова вниз до нуля. Таким образом, теперь значение счетчика выглядит как изменяющееся по закону треугольника, где правая и левая стороны получают скаты под одинаковым углом (см. рис. 2).

Centered PWM signal

Рис. 2. Центрированный ШИМ (Center-Aligned PWM) и изменение значения его счетчика.

Чтобы получить аналоговый сигнал из цифрового сигнала ШИМ, используют фильтр низких частот - ФНЧ. Фильтр подавляет высокочастотную составляющую в сигнале ШИМ, пропуская низкочастотную составляющую. В нашем цифровом сигнале ШИМ есть мгновенные изменения уровня импульсов, которые имеют (теоретически) бесконечно высокую частоту. Таким образом, эти части сигнала будут подавлены, и низкочастотные составляющие, наподобие средней постоянной составляющей (DC, нулевая частота) и её медленных изменений, беспрепятственно пройдут через ФНЧ.

Давайте рассмотрим пример - нужно синтезировать звуковой сигнал в диапазоне от 0 до 16 кГц (верхняя частота близка пределу слышимости человеческим ухом). Это значит, что частота среза фильтра должна быть больше 16 кГц. Однако в реальном мире не существует идеальных фильтров, у которых прямоугольная характеристика с бесконечно крутым спадом на частоте среза. Например, если мы построим простой RC-фильтр на резисторе и конденсаторе, то это будет так называемый фильтр первого порядка. Такой фильтр создает подавление уровня 20dB на декаду (20dB = изменению уровня в 10 раз, а декада это десятикратное изменение частоты). Т. е. если выбрать значения R и C, чтобы частота видимого спада была около 16 кГц, то на этой частоте коэффициент подавления составит 1.41. Частота в 10 раз больше, т. е. 160 кГц, будет подавлена в 10 раз, частота 1600 кГц в 100 раз и так далее. Мы можем создать фильтры с более крутой характеристикой, например ФНЧ второго порядка, с подавлением 40dB (в 100 раз) на декаду, но в любом случае можно получить лучшие результаты, если частота сигнала ШИМ будет намного выше максимальной частоты, которую нужно синтезировать.

В этой статье рассматриваются различия между центрированным ШИМ и обычным ШИМ, в контексте синтеза аналогового сигнала. Для этой цели в среде моделирования MATLAB/Simulink было создано два ШИМ-генератора и аналоговый фильтр (см. [3, 4]). Вы можете поэкспериментировать со скриптом модели, загрузив его в MATLAB/Simulink.

PWM simulink model

Рис. 3. Модель MATLAB/Simulink, позволяющая сравнить оба режима ШИМ.

Синтезируемый сигнал имеет частоту 5 кГц, а частота ШИМ составляет 70 кГц. Применен фильтр 1-го порядка с частотой среза 16 кГц. Можно увидеть, как сигнал ШИм фильтруется в обоих режимах (L = left-aligned mode, C = centered mode).

left vs center PWM DAC same freq time domain

Рис. 4. Сигналы ШИМ режимов L и C, когда частота ШИМ одинаковая.

Сигнал на выходе фильтра очень похож на синусоиду, но содержит "ошибки", которых нам не хотелось бы. Это гармоники сигнала ШИМ, потому что не очень качественный фильтр их все же пропускает. В домене времени (осциллограмма) мы не можем по-настоящему увидеть разницу между двумя режимами ШИМ, L и C. Давайте теперь посмотрим на выходной сигнал в домене частот (спектрограмма):

left vs center PWM DAC same freq

Рис. 5. Сравнение спектров синтезируемого синусообразного сигнала, когда у режимов Fast PWM и Center-Aligned PWM частота ШИМ одинаковая.

Этот график в основном показывает, какие частоты вносят свой вклад в выходной сигнал. Можно увидеть большой пик на частоте 5 кГц, это та частота, которая "полезная". Если бы этот синусоидальный сигнал был идеальный, то тут был бы виден только пик на 5 кГц с амплитудой 1, и ничего больше. Но как можно видеть, в спектре есть и другие, небольшие пики. Это гармоники, которые вносят ошибку в наш выходной сигнал. Самый большой пик находится на 70 кГц, это частота ШИМ.

В случае обычной ШИМ (left-aligned PWM) присутствуют дополнительные гармоники на частотах 70 кГц +- 5*N кГц, т. е. наша частота ШИМ и умноженная на коэффициент N синтезируемая частота. У центрированной ШИМ (center-aligned PWM) также есть гармоники, но их меньше: они находятся на частотах 70kHz +- 10*N кГц, т. е. на коэффициент N умножается удвоенная частота синтезируемого сигнала. Также видно, что на меньших частотах помех также меньше, например уровень помехи 50 кГц значительно меньше у ШИМ-режима C, чем у ШИМ-режима L.

Можно сделать вывод, что center-aligned PWM всегда лучше для такого применения, но... Мы уже видели, что чем выше частота по отношению к частоте синтезируемого сигнала, тем дальше гармоники находятся в спектре, что приводит к более чистому сигналу на выходе фильтра. Однако в реальном приложении частота ШИМ, которая может быть использована в микроконтроллере, ограничена. В случае left-adjusted PWM, частота ШИМ равна частоте тактирования таймера (например основная тактовая частота микроконтроллера), поделенной на максимальное значение счетчика (например, 256 для 8-битного счетчика). Но в случае centered PWM, максимальная частота ШИМ получается в 2 раза ниже, потому что счетчик считает сначала вверх, потом вниз вместо того, чтобы после счета вверх сбрасываться и начинать счет снова вверх. Таким образом, для анализа ситуации, которая может произойти в нормальном мире, мы должны сравнить результат L-режима ШИМ с частотой, в 2 раза выше, чем у C-режима ШИМ. Ниже показаны результаты моделирования центрированного ШИМ (center-aligned PWM) на 70 кГц и выровненного влево ШИМ (left-adjusted PWM) на 140 кГц. Фильтр в для обоих ШИМ применен одинаковый.

left vs center PWM DAC left twice center freq time domain

Рис. 6. Сигналы ШИМ режимов L и C, когда частота режима L (Fast PWM) в 2 раза выше, чем у режима C (Center-Aligned PWM).

На осциллограмме видно, что сигнал, синтезируемый left-adjusted PWM, выглядит более плавным. Спектрограмма подтверждает это:

left vs center PWM DAC same freq

Рис. 7. Сравнение спектров синтезируемого синусообразного сигнала, когда у Fast PWM частота в 2 раза выше, чем у Center-Aligned PWM.

Поскольку частота у left-adjusted PWM в 2 раза выше (140 кГц), гармоники сдвигаются на спектре в сторону более высоких частот. Так что если наше приложение заключается в синтезе звука, то применение left-adjusted PWM на повышенной частоте выгоднее, потому что будет меньше гармоник в слышимом диапазоне частот. Однако для некоторых других приложений, таких как управление силовым драйвером, это не будет преимуществом, потому что гармоники только смещаются вправо по спектру, но не уменьшаются.

Можно сделать 2 основных вывода:

• Существует обратная зависимость между разрядностью счетчика и максимально достижимой частотой ШИМ. Если мы используем меньшее максимальное значение счета (например 255 для 8-битного счетчика вместо 65535 для 16-битного), то получим меньшую разрешающую способность по амплитуде (т. е. будут меньше "шажки" уровня на периоде ШИМ), однако более высокую частоту ШИМ с меньшим количеством гармоник, и наоборот. Т. е. всегда нужен выбор компромисса между максимальным значением счета и частотой ШИМ.
• Какой режим ШИМ лучше использовать - left-aligned PWM или center-aligned PWM - зависит от конкретного приложения. У центрированного режима меньше гармоник, однако у него меньше максимальная частота ШИМ, т. е. гармоники будут находиться ближе к основному синтезируемому сигналу, и их будет сложнее отфильтровать.

Получается, что для синтеза звука left-aligned PWM лучше, потому что можно использовать более высокую частоту ШИМ, потому что более высокочастотные гармоники легче фильтровать. В электронных устройствах, регулирующих мощность, centered PWM режим выгоднее. Когда происходит управление силовыми транзисторами MOSFET, потери на нагрев увеличиваются с ростом частоты переключения. Поскольку у центрированного режима ШИМ меньше гармоник и на более низкой частоте переключения по сравнению с обычным ШИМ, и как следствие получается меньше потерь энергии в драйвере.

В следующей статье [2] рассматривается пример реализации ШИМ на микроконтроллере STM32F103 для проигрывания звука.

[Ссылки]

1. PWM centered vs. left-aligned mode site:marcelmg.github.io.
2. Синтез звуковых сигналов с помощью ШИМ.
3. MarcelMG MATLAB_PWM_analysis site:github.com.
4200305Left-vs-Centered-PWM.zip - исходный код.

 

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


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

Top of Page