Компоненты и технологии, № 4'2004
Окончание. Начало в № 32004
Применение модуля захвата, сравнения, ШИМ
в контроллерах Microchip
В предыдущей части статьи были рассмотрены особенности применения модуля захвата, сравнения и ШИМ (Capture/Compare/PWM — ССР) компании Microchip Technology Inc. — ведущего производителя 8-разрядных микроконтроллеров. Мы продолжаем рассматривать возможные примеры использования модуля CCP в микроконтроллерах PICmicro в практических задачах.
Илья Афанасьев
Применение широтно-импульсной модуляции (ШИМ)
Широтно-импульсная модуляция, рассматриваемая в следующих примерах, используется в разных задачах — от формирования звукового сигнала и управления яркостью светодиодов до управления скоростью вращения электромотора. Все эти задачи основываются на базовом принципе ШИМ-сигнала — чем больше скважность импульсов, тем больше среднее значение напряжения (рис. 1). Зависимость среднего напряжения от величины скважности является линейной:
VCP = скважность х Умак^с
Модуль ССР в микроконтроллерах Microchip может формировать ШИМ-сигнал с 10-разрядной точностью на выводе CCPx-микроконтроллера. Расширенный модуль ЕССР может формировать ШИМ на одном из 4 выводов Р1А... P1D в следующих режимах:
• одиночный выход (только на выводе P1A);
• управление полумостом (только на выводах P1A и P1B);
84
• управление мостом (возможность реверсирования двигателя).
В мостовом режиме управления доступны четыре варианта работы:
• РА1А, Р1С активный уровень «1»; Р1В, РШ активный уровень «1»;
• РА1А, Р1С активный уровень «1»; Р1В, РШ активный уровень «0»;
• РА1А, Р1С активный уровень «0»; Р1В, РШ активный уровень «1»;
• РА1А, Р1С активный уровень «0»; Р1В, РШ активный уровень «0».
Пример #10. Выбор частоты ШИМ Частота ШИМ зависит от различных факторов. При увеличении частоты увеличиваются потери на переключение, емкость и индуктивность нагрузки влияет на изменение формы сигнала. Поэтому в микромощных устройствах следует выбирать минимально возможную частоту ШИМ, а в схемах с емкостной или индуктивной нагрузкой выбирать частоту исходя из анализа схемы.
Управление электродвигателями
ШИМ применяется для управления двигателями в импульсном режиме. По характеристикам двигателя необходимо подобрать значение частоты ШИМ, чтобы обеспечить оптимальные характеристики электропривода. При выборе задающей частоты важным критерием являются акустические шумы, создаваемые двигателем при работе. Коллекторные двигатели могут создавать звуковой шум на частотах от 20 Гц до 4 кГц. Для исключения этого нежелательного эффекта нужно выбирать частоту выше 4 кГц. На таких частотах акустического шума уже не будет, так как механические части имеют более низкие резонансные частоты.
Светодиоды и устройства освещения
ШИМ часто используется для изменения яркости световых приборов. Эффект мерцания может быть заметен на частотах ниже 50 Гц, поэтому на практике частота ШИМ выбирается около 100 Гц или выше.
-------www.finestreet.ru-----------------------
e
Компоненты и технологии, № 4'2004
двигателем постоянного тока с использованием модуля ССР
Скорость вращения двигателя пропорциональна скважности ШИМ на выводе контроллера ССР1 (рис. 2). Рассмотрим, как нужно сконфигурировать микроконтроллер Р1С16Б628 для формирования ШИМ с частотой 20 кГц и 50-процентной скважностью. Тактовая частота контроллера 20 МГц.
1. Выбираем величину предделителя Таймера 2:
Бpwм = бо8с/(№2+1) х 4 х х предделитель) = 19531 Гц,
при РИ2 = 255 и предделитель = 1.
Полученная частота несколько ниже, чем 20 кГц, таким образом, величина предделите-ля подходит.
2. Вычисляем величину регистра периода РИ2: РБ2 = Б05С/(Б№М х 4 х ргасакг) - 1 = 249
3. Вычисляем значение регистра скважности ССРИ1Ь и ССРС0Ы<5:4>:
ССРт:ССР1С0Ы<5:4> = = скважность х 0х3ББ = 0х1ББ ССРМЬ = 0х1ББ >> 2 = 0х7Б, ССР1С0Ы<5:4> = 3
4. Конфигурируем модуль ССР в режим генерации ШИМ:
ССР1С0Ы = Ъ001111000'.
Пример #12. Реверсивное управление коллекторным двигателем постоянного тока с использованием модуля ЕССР Модуль ЕССР имеет опции для управления коллекторными двигателями постоянного тока. На рис. 3 приведена схема подключения мостовой схемы управления двигателем. Выводы модуля ЕССР Р1А... РШ могут работать в режиме управления мостовой схемой и задавать скорость и направление вращения. Для примера, изображенного на рис. 3, модуль ЕССР конфигурируется так: Р1А, Р1С активный уровень «1»; Р1В, РШ активный уровень «1» (ССР1С0Ы<3:1>). Это сделано для того, чтобы М08БЕТ-драйверы (ТС428) открывали выходные ключи. В таблице ука-
--------------------www.finestreet.ru-
ля и выходами ШИМ. Таблица
Режим Р1А Р1В Р1С РЮ CCP1CON
вперед 1 Х Х ШИМ b01xx1100
назад Х ШИМ 1 Х b11xx1100
инерция Х Х Х Х не важно
торможение Х 1 1 Х не важно
Пример #13. Управление шаговым двигателем в режиме микрошага
Шаговые двигатели занимают уникальную нишу среди всего многообразия применений двигателей. Шаговые двигатели используются в системах измерения (в качестве индикаторов параметров) и в системах управления позиционированием исполнительных механизмов. Часто возникает необходимость управлять шаговым двигателем в режиме микрошага. Применение микроконтроллера дает много преимуществ: возможность управлять скоростью движения вала, то есть варьировать ускорением и торможением, точно позиционировать объект управления. Микроконтроллер PIC16F648 идеально подходит для большинства таких задач управления шаговым двигателем. Этот дешевый 14-вы-водной контроллер имеет 2К слов Flash-памяти программ, восемь каналов 10-разрядного АЦП, два аналоговых компаратора и модуль ECCP. Таким образом, используя только периферию контроллера, можно управлять шаговым двигателем с помощью специализированного модуля ШИМ — ECCP и реализовать защиту по току с помощью встроенного компаратора.
Подробное описание алгоритма управления шаговым двигателем и пример программы опубликованы на сайте Microchip в документе AN906 «Stepper Motor Control Using the PIC16F684».
Пример #14. Формирование аналогового сигнала
Выход ШИМ может применяться для цифро-аналогового преобразования с помощью нескольких внешних элементов. Преобразование ШИМ-сигнала в аналоговый осуществляется на основе фильтра ФНЧ (рис. 4). Для исключения появления в выходном сигнале нежелательных гармоник необходимо, чтобы частота модуляции (FPWM) была намного выше, чем частота выходного сигнала (FBW):
причем, чем больше значение К, тем меньше гармоник.
Для расчета фильтра применяется следующая формула:
RC = 1/(2nFBW)
Выбрав значение емкости С, вычисляют значение резистора R. Подавление частоты ШИМ в выходном сигнале определяется выражением:
-10xlog[1 + (2nFpwMRC)2] (дБ)
Если подавление недостаточное, то увеличивают коэффициент К, увеличивая тем самым частоту модуляции. Подробное описание примера реализации есть в документе AN538 «Using PWM to Generate Analog Output in PIC17C42» на сайте Microchip.
Пример #15. Повышающий преобразователь напряжения
Широтно-импульсная модуляция используется в преобразователях напряжения, например в повышающих схемах (рис. 5). Работу схемы можно разделить на две фазы. В первой фазе, когда на выходе ШИМ активный единичный уровень, происходит накопление энергии в катушке Ь1 путем подключения ее вывода на «землю» транзистором Т1. Во второй фазе на выходе ШИМ нулевой уровень, который запирает транзистор. Ток из катушки течет через диод Б1 на конденсатор накопления С2 и на нагрузку. При этом напряжение на нагрузке получается выше напряжения питания. Расчет необходимых характеристик схемы производится по формулам:
ив^ивх = 1/(1-В),
где Б — скважность импульсов ШИМ.
-------------------------------- 85
e
Компоненты и технологии, № 4'2004
PIC16F684
->VCC
LI
680мкГ
CCP1
ANO
R3
10K
C2 47мкф R2 4,7k
~5^T>
Рис. S. Повышающий преобразователь напряжения
I
Выбор значения индуктивности производится на основе максимального выходного тока:
L = Uex(1-D)DT/2Il
выыХ
где Т — период ШИМ.
При расчете максимальная скважность Б принимается не более 75%, а частота ШИМ — 10...100 кГц. Также необходимо рассчитать пульсации тока:
1пульс = UeXDT/L
Если ток пульсаций превышает значение тока насыщения индуктивности, то необходимо выбрать более высокое значение индуктивности.
Скважность ШИМ вычисляется контроллером по закону ПИД, что позволяет поддерживать выходное напряжение при изменении нагрузки. Более подробно данный метод описан в примере AN258 «Low Cost USB Microcontroller Programmer» на сайте Microchip.
Пример #16. Управление яркостью светодиодов
Для изменения яркости светодиодов можно использовать ШИМ. Для этого на выход ССР подключается светодиод через резистор, ограничивающий максимальный ток. Изменяя скважность импульсов с помощью регистра CCPRxL в широких пределах (00...FF), можно менять яркость свечения. Необходимо отметить, что частота ШИМ должна быть не менее 100 Гц для устранения мерцания.
Пример #17. Протокол передачи данных Х-10. Синтез несущей частоты
Для передачи информации по электросетям, например, передачи данных внутри квартиры по силовой проводке 220 В, часто используется протокол Х-10. На основную частоту (50/60 Гц) накладывается модулированный сигнал более высокой частоты (120 кГц). Для получения такой частоты в контроллере можно применять модуль ССР в режиме ШИМ. На рис. 6 показана реализация передатчика.
В соответствии со спецификацией Х-10 частота 120 кГц должна иметь отклонения не более 2 кГц. Получение точного значения частоты в модуле ССР обусловлено примене-
нием системного кварца частотой 7,68 МГц. Подключение несущей частоты осуществляется в момент перехода сетевого напряжения через ноль.
В примере AN236 «Х-10 Home Automation Using the PIC16F877A» можно найти более детальное описание протокола и исходные коды программ.
Совместное использование модулей захвата, сравнения, ШИМ
Модуль ССР (ЕССР) в контроллерах Microchip может программироваться «на лету», за счет чего эти модули могут выполнять различные функции в одном и том же устройстве в зависимости от алгоритма работы. Рассмотрим возможности гибкого изменения функций на конкретных примерах.
Пример #18. Автоопределение скорости передачи RS-232
Интерфейс связи RS-232 имеет различные скорости передачи. Возможность устройства
определять скорость связи и автоматически настраивать приемник и передатчик требует наличие в программе устройства соответствующих процедур.
Во многих новых контроллерах Microchip существует аппаратный модуль EUSART с возможностью автоматического определения скорости приема данных и подстройки скорости передачи, возможностью работы в режиме SLEEP и другими функциями, необходимыми для реализации таких протоколов, как LIN.
В тех контроллерах, где нет аппаратного модуля USART, модуль ССР можно использовать в режиме захвата для автоматического определения скорости связи и затем перенастроить в режим сравнения для формирования или приема данных через RS-232. Для работы алгоритма автоопределения скорости необходим калибровочный байт, с которого начинается передача данных от одного устройства к другому. Один из возможных калибровочных символов изображен на рис. 7. Известные временные параметры калибровочного символа позволяют принимающему устройству определить и настроить скорость передачи интерфейса RS-232.
Алгоритм определения скорости передачи по калибровочному символу:
1. Настраиваем модуль ССР на захват по спаду (определение стартового бита).
2. Когда стартовый бит определен, сохраняем значение регистра CCPR1.
3. Настраиваем модуль ССР на захват по фронту (определение стопового бита).
4. Когда стоповый бит определен, сохраняем значение регистра CCPR1.
5. Определяем разность между значениями CCPR1, полученными в п. 4 и в п. 2. Это время 8 битовых интервалов.
6. Разность сдвигаем на три бита вправо для деления на 8. Полученное значение — время битового интервала.
7. Сдвигаем еще на один бит вправо. Получаем время половины битового интервала. Примеры программ для организации приема и передачи информации по последовательному каналу, а также процедуры автоопределения скорости передачи есть в AN712 «RS-232 Autobaud for the PIC16C5X Devices».
Пример #19. АЦП двойного интегрирования
Модуль ССР позволяет построить АЦП двойного интегрирования на основе внешнего интегратора. На рис. 8 представлена схема такого устройства. Интегрирование входного сигнала ивх осуществляется за фиксированный промежуток времени Т1. Затем на вход интегратора подается иоп и измеряется время, за которое на выходе интегратора появится нулевой уровень. По временам Т1 и Т2,
Старт-бит
00000000
1 Стоп-бит
ЬЭВ УБВ
Рис. 7. Калибровочный символ для автоопределения скорости передачи RS-232
- www.finestreet.ru -
а также по можно вычислить
e
Компоненты и технологии, № 4'2004
Для задания времени Т1 нужно использовать режим сравнения модуля ССР, а для определения Т2 — режим захвата. Кратко алгоритм можно представить так:
1. Настраиваем ССР на режим сравнения, используем триггер специального события.
2. Подключаем ивх на вход интегратора.
3. Отсчитываем Т1. Это время определяется параметрами интегратора.
4. По прерыванию от ССР подключаем на вход интегратора иоп и задаем режим захвата модуля ССР по спаду.
5. По прерыванию от ССР фиксируем время Т2.
6. Вычисляем величину ивх.
PIC16F684
Рис. 8. АЦП двойного интегрирования с применением модуля ССР
Uex = UonT2/T1
Благодаря большому разнообразию контроллеров Microchip и их программной и аппаратной совместимости все описанные примеры могут быть легко перенесены на тот
или иной контроллер в зависимости от требований разрабатываемой системы. Компания Microchip постоянно расширяет номенклатуру контроллеров как в сторону уменьшения числа выводов и увеличения периферийных устройств, так и в сторону мощных
контроллеров с большим объемом памяти и с максимально возможной периферией. Подробности о новейших микроконтроллерах, а также новые примеры использования можно найти на сайте компании Microchip Technology www.microchip.com.
- www.finestreet.ru-
87