Модуль ШИМ для микроконтроллера TMS320F28035
Описание принципа ШИМ
Модуль ePWM (Enhanced Pulse-Width Modulator) позволяет генерировать ШИМ-сигнал сложной формы с минимальным задействованием процессора.
ePWM модуль может изменять уровень GPIO процессора в автоматическом режиме, без необходимости вручную задавать уровень сигнала. Каждый модуль может управлять двумя выводами. Всего в микроконтроллере F28035 есть 6 таких модулей.
Этот модуль имеет множество гибких настроек, позволяющих задать частоту и форму несущего сигнала, его синхронизацию с внешними сигналами, реакцию на возникновение аварийной ситуации, автоматическое управление двумя выводами в комплиментарном режиме с обеспечением мёртвого времени и множество других опций.
Аббревиатура ШИМ расшифровывается как «широтно-импульсный модулятор», или модуляция. В зарубежной литературе – Pulse-Width Modulator (PWM). На микроконтроллере TMS320F28035 модуль ШИМ называется – ePWM, где буква «e» означает «enhanced», то есть усовершенствованный. Подразумевается усовершенствование по сравнению с версиями модулей ШИМ в предыдущих моделях микроконтроллеров (TMS320F2407, TMS320F2812 и тд). Модуль ШИМ предназначен для формирования управляющих сигналов силовых ключей. Эти сигналы по сути представляют собой последовательность импульсов высокого уровня и низкого, то есть логические «0» и «1». Высокий сигнал открывает ключ, низкий закрывает. Либо наоборот, в зависимости от того, как организована схема драйвера ключа.
Для формирования ШИМ сигнала нужны две составляющие – несущий сигнал и задание. Несущий сигнал является периодическим сигналом. Его период называют «период ШИМ». На рисунке 1 несущий сигнал имеет «пилообразную» форму. Синусоидальный сигнал задания сравнивается с несущим сигналом. В тот момент, когда оба сигнала одинаковы при растущем несущем сигнале, выходной сигнал ШИМ меняет свой уровень с «1» на «0»; когда несущий сигнал достигает максимума и сбрасывается, выходной сигнал также сбрасывается. Реализация может быть и другой – несущий сигнал может быть не «растущим», а «падающим» или «треугольным»; выходной сигнал может меняться не с «1» на «0» при сравнении, а наоборот. Основной принцип остаётся неизменным: при сравнении несущего сигнала с сигналом задания, меняется выходной сигнал.
В цифровом виде роль несущего сигнала выполняет счётчик (таймер), который работает в автоматическом режиме. Счёт можно настроить разными способами: «вверх» (от нуля до периода, как на рисунке выше), «вниз» (от периода до нуля), или «вверх-вниз» (от нуля до периода, а затем обратно до нуля). В качестве сигнала задания выступает какое-либо число, которое задаёт программист, и с которым сравнивается значение счётчика. Такое число называется уставкой сравнения. При этом у каждого модуля ePWM есть две независимые уставки сравнения A и B, что даёт возможность сформировать сразу два выходных сигнала – EPWMxA и EPWMxB (здесь x – номер ePWM-модуля). Эти выходные сигналы могут быть выведены на выводы микроконтроллера вместо определённых GPIO. Например, для модуля ePWM1 канал A можно вывести вместо GPIO0, а канал B вместо GPIO1.
Модули ШИМ на микроконтроллере F28035
На микроконтроллере TMS320F28035 присутствуют 6 модулей ШИМ (ePWM), все они идентичны и могут работать независимо друг от друга; программист может задействовать столько модулей, сколько ему нужно. Как уже упоминалось, каждый модуль ePWM имеет два выходных канала A и B; другими словами, один модуль может формировать сразу два выходных сигнала. Эти два сигнала могут зависеть или не зависть друг от друга, например, канал B может автоматически принимать сигнал, комплементарный (противоположный) сигналу A с выдержкой мёртвого времени между ними – такой подход позволяет упростить организацию сигналов управления стойкой инвертора.
Структура модуля ШИМ
Модуль ePWM состоит из нескольких подмодулей. Его структура и отношения между подмодулями показаны на рисунке 2:
Краткое описание подмодулей:
- счётчик (Time-Base) выполняет функцию создания несущего сигнала для ШИМ;
- подмодуль сравнения (Counter Compare) непрерывно проверяет текущее значение счётчика и сравнивает его с двумя заданными уставками CMPA и CMPB. Когда счётчик равен одной из этих уставок, подмодуль сравнения генерирует событие сравнения, то есть выдаёт импульс, означающий, что счётчик сравнялся с уставкой;
- подмодуль действия (Action Qualifier) определяет, какие события в какие действия должны быть преобразованы. Например, «Событие «Счётчик равен уставке CMPA при счете вверх» должно установить высокий уровень канала А» и т.п.;
- подмодуль мёртвого времени (Dead Band) позволяет вносить задержку на включение или выключение каналов A и/или B. Таким образом можно создать паузу между отключением ключа в нижней стойке инвертора и включением верхнего, чтобы избежать протекания сквозных токов в стойке. Подразумевается, что оба ключа управляются каналами A и B одного модуля ePWM. Кроме того, этот модуль позволяет автоматически создавать на одном из каналов сигнал, комплементарный другому;
- подмодуль запуска событий (Event Trigger) позволяет генерировать прерывания и запускать АЦП по событиям, приходящим от модуля сравнения (достижение счётчиком нуля или периода, сравнение счётчика с уставками). Это похоже на поведение подмодуля действия с той разницей, что вместо изменения состояния каналов A и B запускается АЦП или прерывание;
- подмодуль реакции на аварию (Trip Zone) позволяет мгновенно отключать силовые ключи при появлении определённого сигнала (низкого или высокого) на определенном выводе микроконтроллера. На этот вывод обычно заводят сигнал аппаратной аварии с драйвера ключа;
- подмодуль PWM Chopper позволяет преобразовать высокий сигнал канала A или B в последовательность коротких импульсов для случая, если драйвера ключей управляются через трансформатор для обеспечения гальванической развязки;
- подмодуль Digital Compare обеспечивает интерфейс между модулем ePWM и компаратором и позволяет настраивать реакцию ePWM на сигналы компаратора. Компаратор – это одно из периферийных устройств микроконтроллера, которое сравнивает аналоговый сигнал на своём входе с заданной уставкой и выдаёт сигнал, если вход сравняется или превысит уставку.
Настройка модуля ШИМ
Под настройкой модуля ШИМ подразумевается настройка всех или нескольких его подмодулей. Каждый подмодуль имеет по несколько регистров для конфигурации. Все регистры подмодулей объединяются в группу регистров с названием «EPwmXRegs», где X означает номер модуля ePWM.
Список использованной литературы
1. Datasheet для TMS320F28035-EP Piccolo Microcontroller
2. Особенности реализации векторной ШИМ для микропроцессоров TMS320