Тепловая или механическая инерция большинства мощных нагрузок такова, что даже при относительно низкой частоте переключения (обычно не менее 100 Гц) «выбросы» будут сглаживаться. Низкие частоты переключения более эффективны, поскольку энергия рассеивается при каждом переключении. Если же ШИМ используется для более привычного цифро-аналогового преобразования, например, в аудиотехнике, то для снижения уровня высокочастотных гармоник полученный сигнал следует пропустить через фильтр нижних частот. При этом для отсечения нежелательных гармоник и уменьшения необходимой степени фильтрации частота выборок должна быть как минимум в 10 раз больше максимальной частоты аналогового сигнала (см. Рис. 14.3 на стр. 494).
Рис. 13.9.
Формирование ШИМ-сигнала обычно осуществляется с использованием счетчика и схемы сравнения. Выход управляется защелкой, которая устанавливается при каждом переполнении таймера. Сброс защелки производится при достижении счетчиком числа, соответствующего коэффициенту заполнения. Чем больше это число, тем больше доля времени, в течение которого на выводе будет присутствовать ВЫСОКИЙ уровень.
В качестве примера рассмотрим 3-битный счетчик, в котором длительность рабочего импульса задана равной Ь’011’:
В этом примере ВЫСОКИЙ уровень на выводе будет присутствовать в течение трех тактов, что даст нам коэффициент заполнения, равный 3/8 или 37.5 %. Изменяя это число, можно регулировать среднюю мощность от 0 до 87.5 % с шагом 1/8.
В микроконтроллерах PIC для формирования таких сигналов используются модули ССР. При работе модуля в режиме ШИМ в качестве основного счетчика используется Таймер 2, а число, определяющее коэффициент заполнения, загружается через регистр с двойным буферированием в 10-битный компаратор. На Рис. 13.10 показана структурная схема модуля ССР1 в режиме ШИМ, формирующего сигнал на соответствующем выводе. При наличии в микроконтроллере модуля ССР2 он может использоваться аналогичным образом, только сигнал в этом случае будет формироваться на выходе ССР2. Любой из выводов, используемый для формирования ШИМ-сигнала, должен быть сконфигурирован как выход сбросом соответствующего бита регистра TRIS. Несмотря на то что оба модуля ССР могут работать параллельно с различными значениями коэффициента заполнения, период формируемых этими модулями ШИМ-сигналов будет одинаковым, поскольку они используют один и тот же Таймер 2.
Рис 13.10.
Период
Временная развертка осуществляется Таймером 2, как было показано на Рис. 13.8. Величина периода переполнения зависит от длительности машинного цикла 4 х
(4 x
Например, при 16-МГц резонаторе, коэффициенте деления 16 и значении h’63’ = d’99’ в регистре PR2 получим
Период = (4 х 1/16) х 16 х (99 + 1) = 400 мкс
При каждом переходе Таймера 2 через значение, записанное в регистре периода, происходит три события:
1. Таймер 2 сбрасывается в 0 (если PR2 не равен 0).
2. Защелка модуля ССР устанавливается, и на выводе ССР1 появляется ВЫСОКИЙ уровень.
3. 10-битное значение, представляющее собой длительность рабочего импульса в следующем периоде ШИМ-сигнала, копируется из ведущего регистра в ведомый.
Скважность
Значение, подаваемое на 10-битный компаратор ШИМ, хранится в двухуровневом 10-битном регистре. Значение, загружаемое программой, хранится в регистре CCPR1L (8 старших битов) и в битах CCP1C0N[5:4] (два младших бита) — на Рис. 13.10 все эти биты вместе названы ведущим регистром. Содержимое ведущего регистра можно изменить в любой момент времени, выполнив две команды movwf. Это значение продвигается по конвейеру и поступает на компаратор только в конце каждого периода. Такое решение уменьшает вероятность появления выбросов в середине периода из-за произвольного характера изменений содержимого ведущего регистра относительно состояния Таймера 2. Роль ведомого регистра выполняет регистр CCPR1H совместно с 2-битной внутренней защелкой. При работе в режиме ШИМ регистр CCPR1H доступен только для чтения. Это сделано специально, чтобы исключить прямой доступ к значению, определяющему скважность сигнала.