Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР2 / Анисимов_2.docx
Скачиваний:
24
Добавлен:
08.04.2022
Размер:
4.56 Mб
Скачать
  1. Широтно-импульсная модуляция. Понятие широтно-импульсной модуляции. Различные режимы широтно-импульсной модуляции. Режим быстрый шим (Fast pwm). Шим без фазового сдвига (Phase Correct pwm).

Понятие ШИМ.

Широтно-импульсная модуляция (ШИМ) (Pulse-width modulation - PWM) – приближение желаемого сигнала (многоуровневого или непрерывного) к действительным бинарным сигналам с двумя фиксированными уровнями – ноль или единица, так чтобы их значения за некоторый промежуток времени в среднем были равны.

Формально этот процесс можно записать в следующем виде:

где x(t) – желаемый входной сигнал в пределе от t1 до t2, ∆Ti – продолжительность i -го ШИМ-импульса с амплитудой A; ∆Ti подбирается таким образом, чтобы суммарные площади (энергии) обеих величин были приблизительно равны за достаточно продолжительный промежуток времени.

Для наших МК: простой и эффективный способ задания аналогового сигнала цифровым методом (по сути, даёт нам возможность сделать простое подобие ЦАП, который не входит в состав периферии 8-битных AVR МК, за исключением семейства XMega).

В аналоговом варианте преобразование синусоидального сигнала в ШИМ-последовательность и обратно схематически выглядит так:

  • на один из входов компаратора подается исследуемый аналоговый сигнал Uвх

  • на другой – сигнал опорной частоты Fоп, имеющий треугольную форму (рис. 4)

  • при совпадении уровней двух сигналов на входах компаратора его выход переключается, формируя в результате последовательность, состоящую из прямоугольных импульсов с несущей частотой Fоп, в длительности которых закодирован уровень исходного аналогового сигнала (т. е. его амплитуда)

  • если далее требуется получить исходный аналоговый сигнал, эту последовательность необходимо пропустить через фильтр нижних частот, чтобы отфильтровать опорную частоту и получить исходную синусоиду

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

Рис. 4. Принцип работы ШИМ-преобразователя

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

Меняя скважность сигнала (т. е. отношение длительности периода к длительности импульса) ШИМ-последовательности, можно плавно менять эту площадь, а значит и напряжение на выходе (рис. 5).

Рис. 5. Принцип ШИМ-преобразования

Во всех контроллерах семейства AVR режим широтно-импульсной модуляции достаточно легко реализовать с помощью таймеров.

Модуль для Attiny2313

Различные режимы широтно-импульсной модуляции.

Режим Fast PWM

В этом режиме таймер микроконтроллера считает от 0 до 255, после достижения переполнения счетный регистр сбрасывается в 0, и счет начинается снова (рис. 6). Когда значение в счетчике достигает значения, записанного заранее в регистр сравнения, то соответствующий ему вывод ОСхn сбрасывается в 0. При обнулении счетчика этот вывод устанавливается в 1.

В общем случае частота fшим на выходе ОСхn микроконтроллера в режиме быстрой модуляции составляет:

где Ftcx – тактовая частота таймера, полученная путем деления тактовой частоты нашего МК на коэффициент деления N, задаваемый с помощью соответствующих разрядов регистра управления TCCRnB.

Рис. 6. Формирование ШИМ-сигнала в режиме быстрой модуляции.

Как это выглядит на практике

У таймера T1 есть два особых регистра сравнения OCR1A и OCR1B. Когда значение в счётном регистре таймера достигает значения, находящегося в регистре сравнения, то могут возникнуть следующие аппаратные события:

  • Прерывание по совпадению

  • Изменение состояния внешнего выхода сравнения OC1A или OC1B (выводы)

Предположим, что мы настроили наш ШИМ генератор таким образом, чтобы в момент времени, когда значение в счетном регистре TCNT1 больше, чем в регистре сравнения, то на выходе у нас была логическая 1, а когда меньше, то 0. Что при этом произойдет? Таймер будет считать как ему и положено, от 0 до 255, с той частотой, которую мы настроим при помощи системы предделителя. После переполнения таймер сбрасывается в 0 и счёт продолжается заново. На выходе имеем прямоугольные импульсы. Если мы попробуем увеличить значение в регистре сравнения, то ширина импульсов станет уже (рис. 7).

Рис. 7. Изменение ширины импульсов

Теперь, меняя значение в регистре сравнения, можно менять скважность выходного ШИМ сигнала. А если пропустить этот ШИМ сигнал через сглаживающую RC цепочку (интегратор), то получим аналоговый сигнал.

ШИМ с корректной фазой

Phase Correct PWM - ШИМ с корректной (или точной) фазой (более продвинутый режим). В данном случае 16-разрядный счетчик (в 8-битном таймере данный режим недоступен) работает как реверсивный. При этом он непрерывно считает сначала от 0 до max значения модуля счета (который определяется либо заданной разрядностью, либо содержимым режима захвата), затем обратно до 0. При достижении 0 счет опять начинается в сторону увеличения, далее цикл повторяется. Вывод OCxn при первом совпадении сбрасывается в 0, при втором устанавливается обратно в 1 (рис. 8). Частота ШИМ при этом падает вдвое вследствие увеличения периода.

Рис. 8. Сравнение режимов работы ШИМ

Рассмотрим поподробнее регистры, ответственные за реализацию различных режимов ШИМ (табл. 1). Регистр TCCR0A – биты COM0A1:COM0A0 и COM0B1:COM0B0 определяют поведение выводов сравнения OC0A и OC0B соответственно.

Таблица 1. Режимы работы вывода Ocnx

COMnx1

COMnx0

Режим работы вывода Ocnx

0

0

Вывод не подсоединен к регистру сравнения

0

1

Поведение вывода зависит от режима, заданного в WGM

1

0

Прямой ШИМ (сброс при совпадении и установка при обнулении счета)

1

1

Инверсный ШИМ (сброс при обнулении и установка при совпадении)

Регистр TCCR0A – биты WGM01 и WGM00 (совместно с битами WGM02 и WGM03, которые находятся в регистре TCCR0B) задают режим работы генератора.

(На всякий случай вырезка управляющих регистров из даташита на Attiny2313) + сайт, где для 2313 расписаны все эти штуки прям хорошо Програмирование в AVR Studio 5 с самого начала. Часть 8 » Журнал практической электроники Датагор (Datagor Practical Electronics Magazine)

Соседние файлы в папке КР2