В конце данной главы в разделе самостоятельных заданий (задание 12) мы предложим Вам определить параметры инициализации модуля ШИМ самостоятельно. А пока приведем два примера.
Определим параметры настройки модуля PWM для генерации ШИМ-сигнала с частотой 976 Гц и коэффициентом заполнения 66,7%.
Частоту тактирования канала ШИМ выберем равной 8МГц/32 = 250 кГц. Этой частотой будем тактировать 8-разрядный счетчик канала. Для формирования частоты 976 Гц потребуется 256 отсчетов частоты 250 кГц, что соответствует максимально возможному коэффициенту счета 8-разрядного счетчика периода канала.
Для формирования сигнала с коэффициентом заполнения 66,7% следует установить код периода, равный 256 отсчетам, а код коэффициента заполнения — 171 отсчету. Для формирования ШИМ-сигнала будем использовать канал 0 модуля PWM.
Программный фрагмент init_pwm.c производит начальную установку регистров специальных функций модуля PWM для генерации на выходе PP0 ШИМ-сигнала с частотой 976 Гц и коэффициентом заполнения 66,7%:
/*--------------------------------------------------------*/
/* Функция init_pwm задает начальные установки модуля PWM */
/*--------------------------------------------------------*/
void ini_pwm(void) {
PWTST = 0x00; /*выбрать нормальный режим работы модуля PWM*/
PWCTL = 0х00; /*выбрать режим фронтовой ШИМ*/
PWCLK = 0x28 /*канал 0 в 8разрядном режиме, коэфф. деления*/
/* частоты E_CLOСK равен 32*/
PWPOL = 0х01; /*установить высокий активный уровень сигнала*/
DDRP = 0хFF; /*настроить порт P на вывод*/
PWEN = 0x01; /*разрешить работу канала 0 модуля PWM */
PWPER0 = 255; /*установить код периода*/
PWDTY0 = 171 /*установить код коэффициента заполнения*/
}
/*--------------------------------------------------------*/
В начале раздела 4.24, мы рассматривали пример использования широтно-импульсной модуляции для управления серводвигателем. Для напоминания структурная схема управления серводвигателем приведена на рис. 4.114. В рассматриваемом примере серводвигатель приводит в движение рулевой механизм радиоуправляемой модели автомобиля. Вращение серводвигателя обеспечивает отклонение рулевого механизма на определенный угол от центрального положения. Этот угол определяется средним значением напряжения, которое прикладывается к двигателю. Напряжение регулируется способом широтноимпульсной модуляции, тогда среднее значение напряжения прямопропорционально коэффициенту заполнения ШИМ-сигнала. Значение коэффициента заполнения передается по радиоканалу. Изменение длительности импульсов напряжения, прикладываемого к серводвигателю, при сохранении частоты следования импульсов вызывает поворот рулевого механизма на определенный угол. Допустимый для рулевого управления диапазон регулирования коэффициента заполнения составляет от 4,5 до 10 %. При этом частота следования импульсов напряжения на двигателе должна составлять 50 Гц.
Рис. 4.114.
Использование ШИМ для поворота рулевого колеса радиоуправляемой модели автомобиля.Определим параметры настройки модуля PWM для генерации ШИМ-сигнала с частотой 50 Гц и коэффициентом заполнения 4,5…10,0 %. Предположим, что частота импульсной последовательности E_CLOСK равна 8 МГц. Тогда период следования импульсов E_CLOСK составляет:
Период следования формируемого ШИМ-сигнала составляет:
Число периодов импульсной последовательности E_CLOСK, которое должно быть отсчитано для формирования периода ШИМ-сигнала, составляет:
Подсчитанное число слишком велико, чтобы его можно было разместить не только в 8-разрядном, но и 16-разрядном регистре. Поэтому при конфигурации модуля PWM необходимо воспользоваться программируемым делителем частоты E_CLOСK. Максимальное значение коэффициента этого делителя составляет 128: