AVR443: Управление трехфазным бесколлекторным электродвигателем постоянного тока с использованием датчиков
Отличительные особенности:
- Время реагирования на изменение состояния выходов датчика Холла не более 5 мкс
- Теоретическая максимальная частота вращения 1600 тыс. об/мин.
- Детекция токовой перегрузки и опрокида двигателя
- Поддержка замкнутого контура стабилизации
- Доступность связи через УАППП, TWI и SPI
1. Введение
Области применения бесколлекторных электродвигателей постоянного тока (БКЭПТ) непрерывно увеличиваются. Причинами для этого являются превосходное соотношение массогабаритных характеристик и мощности БКЭПТ, их превосходные характеристики разгона, минимум затрат на техническое обслуживание и генерация малых акустических и электрических шумов относительно универсальных (коллекторных) электродвигателей постоянного тока (ЭПТ).
В универсальных ЭПТ коллекторный узел управляет коммутацией обмоток в нужный момент времени. В БКЭПТ коммутацией управляет электроника. Для определения момента коммутации электроника может использовать или датчики положения или обратную э.д.с., генерируемую обмотками. Датчики положения наиболее часто используются в приложениях, где пусковой момент существенно варьируется или где требуется его высокое значение. Датчики положения обычно используются в приложениях, где двигатель используется для позиционирования. Управление БКЭПТ без датчиков используется в тех случаях, когда пусковой момент существенно не изменяется и когда отсутствует необходимость в управлении позиционированием, как, например, в вентиляторах.
В данных рекомендациях по применению описывается управление БКЭПТ с использованием датчиков положения на эффекте Холла (для простоты далее упоминаются как датчики Холла). В рассматриваемой реализации учитывается, как управление направлением, так и управление частотой вращения с разомкнутым контуром.
Рисунок 1.1. ATmega48 управляет БКЭПТ с использованием датчиков Холла
2. Принцип действия
Управление БКЭПТ с использованием датчиков положение можно реализовать путем использования микроконтроллерных встроенных аппаратных ресурсов, в т.ч. аналогово-цифровой преобразователь и таймер с ШИМ-выходом. Микроконтроллер Atmel ATmega48 охватывает в достаточной мере требования управления БКЭПТ, при этом оставляя ресурсы и для решения других задач. К числу прочих задач можно, например, отнести связь посредством протоколов УАПП, SPI или TWI.
Трехфазный БКЭПТ состоит из статора с определенным количеством обмоток. Фундаментальный трехфазный БКЭПТ использует три обмотки (см. рисунок 1.1). Обычно эти обмотки обозначаются, как U, V и W. У многих двигателей фундаментальное число обмоток размножается в целях уменьшения шага вращения и снижения пульсаций вращающего момента.
Ротор БКЭПТ состоит из четного числа постоянных магнитов. Количество полюсов магнитов в роторе также определяет размер шага вращения и пульсации вращающего момента. Большее число полюсов дает меньшие шаги вращения и меньшие пульсации вращающего момента. На рисунке 2.1 показаны различные конфигурации двигателей с более чем одним фундаментальным наборов обмоток и несколькими полюсами.
Рисунок 2.1. БКЭПТ различных типов (двигатель (a) содержит два фундаментальных набора обмоток и четыре полюса, двигатель (b) использует три набора обмоток и восемь полюсов, а двигатель (c) построен на четырех наборах обмоток и восьми полюсах)
Тот факт, что обмотки установлены стационарно, а магниты вращаются, делает БКЭПТ более легкими относительно ротора обычного универсального ЭПТ, в котором обмотки располагаются на роторе.
2.1. Функционирование фундаментального БКЭПТ
В целях упрощения описания работы трехфазного БКЭПТ рассмотрим его функционирование только с тремя обмотками.
Чтобы вызвать вращение ротора необходимо пропустить ток через обмотки статора в определенной последовательности, задавая вращение в одном направлении, например, по часовой стрелке. Изменение последовательности коммутации приводит к реверсированию двигателя (вращение в противоположном направлении). Следует понимать, что последовательность определяет направление электрического тока в обмотках и, следовательно, магнитного поля, генерируемого каждой обмоткой. Направление тока определяет ориентацию магнитного поля, генерируемого обмотками. Магнитное поле притягивает и отталкивает постоянные магниты ротора. Путем изменения тока в обмотках и, как следствие, полярности магнитных полей в нужный момент и в нужной последовательности инициируется вращение двигателя. Смена протекаемого через обмотки тока, вызывающая вращение двигателя, называется коммутацией.
Трехфазные БКЭПТ характеризуются шестью состояниями коммутации. Когда все шесть состояний в последовательности коммутации выполнены, то для продолжения вращения последовательность повторяется. Последовательность определяет полное электрическое вращение. У двигателей с несколькими полюсами электрическое вращение не соответствует механическому вращению. Четырехполюсный БКЭПТ использует четыре электрических цикла вращения для выполнения одного механического вращения.
Наиболее элементарной схемой управления коммутацией БКЭПТ является схема включения-отключения, т.е. когда обмотка либо пропускает ток (в одном из направлений) либо нет. Подключение обмоток к шинам питания вызывает протекание тока (выполняется с помощью драйверного каскада). Данный способ называется трапецеидальной коммутацией или блочной коммутацией. Альтернативным методом является использование синусоидальной формы напряжений питания. В данных рекомендациях охватывается только способ блочной коммутации.
Сила магнитного поля определяет мощность и скорость двигателя. Изменением силы тока через обмотки можно добиться изменения частоты вращения и вращающего момента двигателя. Наиболее типичный способ регулировки силы тока - это управление средним значением тока через обмотки, что выполняется путем импульсной модуляции напряжения питания обмоток за счет задания длительностей подачи и снятия напряжения питания, таким образом, чтобы добиться требуемого среднего значения напряжения и, как следствие, среднего тока.
Рисунок 2.2. Электрический ток, протекающий через обмотки/магнитное поле, генерированное обмотками U, V и W в ходе изменения 6 коммутационных состояний, а также выходные сигналы датчиков Холла
Процесс коммутации БКЭПТ управляется электроникой. Самый простой способ управления коммутацией - поиск соответствия требуемого состояния выходов в зависимости от состояния датчиков положения, расположенных внутри двигателя. Обычно используются датчики Холла. Датчики Холла изменяют состояние своих выходов, когда необходимо выполнить переключение обмоток (см. рисунок 2.2). Совсем просто!
Другой функцией электроники при управлении БКЭПТ является гарантирование постоянства частоты вращения, как при управлении по замкнутому контуру, так и при разомкнутом контуре управления. В любом из этих случае рекомендуется определять опрокид двигателя и токовую перегрузку.
2.2 Реализация: управление БКЭПТ с использование датчиков Холла
Реализации подлежит устройство управления БКЭПТ с разомкнутым контуром. Измеряется ток двигателя, частота вращения, должна быть предусмотрена возможность реагирования на токовую перегрузку и опрокид двигателя. Три ШИМ-канала подключаются к нижней части схемы управления для управления частотой вращения. На рисунке 2.3 показан типичный каскад управления БКЭПТ.
Рисунок 2.3. Типичная мостовая схема управления трехфазным БКЭПТ
Фактический каскад управления отличается от продемонстрированного ранее наличием элементов, позволяющих управлять верхними ключами непосредственно от логических сигналов микроконтроллера. На рисунке 2.4 показана схема драйвера для одной обмотки. При необходимости можно реализовать любую другую схему. Исходным состоянием является отключение всех драйверов. Каскад управления может непрерывно отдавать ток приблизительно 2А при напряжении 12В.
Рисунок 2.4. Схема драйвера для обмоток U, V и W (показан только драйвер обмотки U)
Три ШИМ-канала, OC0A, OC0B и OC2B, управляют нижними ключами мостовой схемы (например, UL на рисунке 2.4). Это дает возможность управления электрическим током с помощью аппаратных возможностей генерации ШИМ-сигналов при минимальном использовании таймерных ресурсов. В этом случае управление скоростью выполняется за счет варьирования рабочим циклом ШИМ-сигнала.
Также возможно реализовать ШИМ-управление верхними ключами моста, но это потребует задействования всех таймеров микроконтроллера ATmega48. Кроме того, в этом случае необходимо предусмотреть схему защиты от возникновения сквозного тока или реализовать программную генерацию задержки неперекрытия. ШИМ-управление обеими частями моста может понадобиться, если используется активное торможение для более равномерного распределения рассеиваемой мощности между полевыми транзисторами. Однако в большинстве приложений это не требуется.
Один канал АЦП используется для измерения электрического тока. АЦП обладает разрешающей способностью 10 разрядов и использует внешний источник опорного напряжения 2.5В, что соответствует точности приблизительно 2.4 мВ, чего вполне достаточно для определения токовой перегрузки, т.к. падение напряжения на шунте сопротивлением 0.22 Ом при токе 1А равно 220 мВ. При необходимости запуск преобразования АЦП может синхронизироваться с ШИМ для измерения тока в период, когда не выполняется коммутация, или же работать непрерывно на заданной фиксированной частоте. Второй канал АЦП используется для измерения напряжения, поступающего с потенциометра, используемый для задания частоты вращения двигателя.
Выходы датчиков Холла подключены к трем выводам порта B, каждый из которых настроен на генерацию прерывания по изменению состояния. Если состояние датчика Холла изменяется, то инициируется выполнение процедуры обработки прерывания, в которой изменяется состояние коммутации в зависимости от состояния датчика Холла. Обратите внимание, что для подключения датчиков Холла были умышленно выбраны младшие вывода порта в целях оптимизации быстродействия обработки.
Обзор задействованных ресурсов приведен в таблице 2.1.
Таблица 2.1. Ресурсы, используемые для управления двигателем
Ресурсы |
Назначение |
АЦП |
Измерение тока |
PORTD[3] - таймер-счетчик 2: OC2B |
Управление нижней частью драйвера- обмотка W |
PORTD[5,6] - таймер-счетчик 0: OC0[A,B] |
Управление нижней частью драйвера |
PORTD[7,4,2] |
Управление верхней частью драйвера |
Следует обратить внимание, что при необходимости доступны коммуникационные аппаратные ресурсы, в т.ч. УАПП, SPI и TWI. Также обратите внимание, что не рекомендуется использовать прерывания для организации связи до рассмотрения потенциального влияния на время реагирования процесса коммутации.
2.3 Описание программного обеспечения
Программа полностью написана на языке Си с использованием компилятора IAR EWAVR 3.20C (бесплатная версия, генерирующая двоичной код до 4 кбайт). Ниже приведены функции, доступные в данной реализации. Блок-схема приведена только для наиболее важной функции - процедуры обработки прерывания по изменению состояния выводов, которая изменяет состояние коммутации при изменении состояния выходов датчиков Холла.
Обратите внимание, что резервирование регистров для некоторых переменных гарантирует быстроту выполнения прерывания.
void Init_MC_timers( void )
Инициализирует таймер 0 и таймер 2 для работы в режиме ШИМ с коррекцией фазы и частоты (симметричная ШИМ). В качестве основной частоты устанавливается 32 кГц (может быть снижена, если требуется более низкая разрешающая способность управления скоростью). Функцией также гарантируется синхронность счета таймерами.
void Init_MC_Pin_Change_Interrupt( void )
Конфигурирует выводы, используемые для контроля выходных сигналов датчиков Холла, для генерации прерывания в случае изменения состояния датчиков Холла (нарастающий или падающий фронт).
void Init_ADC( void )
Устанавливает значение предделителя АЦП равным 4, что соответствует максимальной частоте преобразования, равной частоте ЦПУ поделенной на 52 (13*4). С учетом того, что АЦП выполняет измерение напряжения задатчика скорости и напряжения на токоизмерительном шунте, то задержка реагирования на токовую перегрузку равна двух периодам оцифровки.
void Set_Direction( unsigned char direction )
Устанавливает указатель таблицы коммутации на таблицу вращения по часовой стрелки или против. Обратите внимание, что не рекомендуется изменять направление вращения без предварительного снижения скорости, а лучше полной его остановки.
void Set_Speed( unsigned char speed )
Обновляет регистры сравнения таймеров 0 и 2, которые управляют рабочим циклом ШИМ-выходов и, следовательно, частотой вращения двигателя. Используемый метод гарантирует, что все ШИМ-каналы функционируют с одинаковым рабочим циклом.
unsigned char Get_Speed( void )
Возвращает значение частоты вращения ротора. Не реализована.
__interrupt void PCINT0_ISR( void )
Обновляет ШИМ-выходы, управляющие нижней частью драйвера и линии ввода-вывода, управляющие верхней частью драйвера. В целях оптимизации быстродействия обработки прерывания переменные, используемые в прерывании, хранятся в зарезервированных регистрах (выделены специально для данной цели). Кроме этого, информация, необходимая для коммутации размещается в таблицах таким образом, что к ней можно осуществить доступ, используя состояние датчиков Холла в качестве смещения. Прерывание описано в виде блок-схемы на рисунке 2.5.
void Release_motor( void )
Отключает выходы управления AVR-микроконтроллера, подключенные к драйверному каскаду. Этим отключаются драйверы в целях гарантирования того, что через обмотки двигателя не протекает электрический ток. Не реализовывалась.
Рисунок 2.5. Блок-схема выполнения коммутации при возникновении прерывания по изменению состояния выводов
2.4 Характеристики текущей реализации
- 8-разрядная разрешающая способность управления скоростью.
- Размер кода приблизительно 500 байт (в текущей реализации 350 байт).
- Время реагирования на изменение состояния датчиков Холла не более 5 мкс.
- Процедура обработки прерывания по изменению состояния выводов (ввод состояния датчиков Холла) выполняется примерно 50 тактов ЦПУ. На тактовой частоте 8МГц это дает теоретический максимум 1600 тыс. об./мин. (8МГц/(50 тактов * 6 состояний коммутации) * 60 сек/мин), если не рассматривать выполнение функций защиты от токовой перегрузки и передачи данных.
Документация:
|
|
Engl 426 Kb Исходный файл |
|
|
173 Kb Программа |
реклама в интернете
|