AVR275
Управление трехфазовым вентильным электродвигателем на основе датчиков с помощью семейства AT90USB
Основные особенности:
- ответ на изменение показаний датчика Холла менее 3 мкс,
- теоретический максимум 3478К RPM (оборотов в минуту) (имеется в виду электрических RPM),
- поддержка замкнутого контура регулирования тока, остановки двигателя и обнаружения перегрузки,
- возможность связи по интерфейсам USB, UART, TWI и SPI.
Введение
Использование вентильных электродвигателей постоянно увеличивается. Причина очевидна: у вентильных электродвигателей хорошее соотношение между весом/размером и мощностью, отличные характеристики ускорения, они практически не требуют технического обслуживания и генерируют меньше акустического и электрического шумов по сравнению с универсальными (щеточными) электродвигателями постоянного тока.
В универсальных электродвигателях постоянного тока щетки управляют коммутацией посредством физического подключения обмоток в нужный момент. В вентильных электродвигателях коммутацией управляет электроника. Контролирующая электроника может иметь специальные входы для датчиков положения, показания которых и определяют время подключения, или может использовать противоэлектродвижущую силу, возникающую в самих обмотках. Датчики положения используются наиболее часто в приложениях, где пусковой момент сильно варьируется или где начальный пусковой момент должен быть большим. Датчики положения также часто используются в приложениях, где электродвигатель используется для позиционирования. Управление вентильными двигатели без помощи датчиков часто используется, если пусковой момент сильно не варьируется или если контроль положения не является целью, например, в вентиляторах.
Рис. 1.1. AT90USB управляет вентильным электродвигателем с помощью датчиков Холла
2. Логика работы
Управление вентильными электродвигателем с помощью датчиков может быть осуществлено на основе достаточно мощного микроконтроллера со следующей базовой аппаратной периферией: аналогово-цифровым преобразователем (АЦП) и таймером с ШИМ-выходом. Микроконтроллер Atmel AT90USB удовлетворяет всем требованиям для управления вентильным электродвигателем, причем еще остаются ресурсы для других задач. Другими задачами, например, могут быть: связь по протоколам USB, SPI, UART или TWI.
Трехфазный вентильный электродвигатель состоит из стартера, у которого есть несколько обмоток. У классического вентильного электродвигателя три обмотки (см. Рисунок 2-1). Обычно их называют U, V и W. Во многих электродвигателях классическое число обмоток удваивается с целью уменьшения шага вращения и уменьшения колебания момента вращения.
Ротор в вентильных электродвигателях состоит из четного числа постоянных магнитов. Число магнитов в роторе тоже влияет на шаг и колебания момента вращения электродвигателя. Чем больше суммарное число полюсов магнитов, тем меньше шаг и меньше колебания момента вращения. На рисунке 2-1 показаны различные конфигурации электродвигателей с числом обмоток, большим, чем в классическом варианте, и с несколькими парами магнитных полюсов в роторе.
Рис. 2.1. Различные типы вентильных электродвигателей
У электродвигателя (а) два набора классических обмоток и 4 магнитных полюса, у (b) три набора классических обмоток и 8 магнитных полюсов, у (c) четыре набора классических обмоток и 8 магнитных полюсов.
Тот факт, что обмотки неподвижны пока магнит вращается, делает ротор вентильного электродвигателя легче, чем у обычного универсального электродвигателя, в котором обмотки помещены в ротор.
2.1. Принцип работы классического вентильного электродвигателя
Для облегчения объяснения принципа работы вентильных электродвигателей будет рассмотрен классический вентильный электродвигатель с тремя обмотками и двумя магнитными полюсами.
Для того, чтобы мотор вращался, на обмотки подается ток в определенной последовательности, что заставляет мотор вращаться в определенном направлении, например по часовой стрелке. Если подавать ток в обратной последовательности, то и мотор будет вращаться в другую сторону. Нужно понимать, что последовательность подачи тока определяет направление тока в обмотках и посредством этого магнитное поле, генерируемое в каждой из обмоток. Направление тока определяет ориентацию магнитного поля, генерируемого обмоткой. Магнитное поле притягивает или отталкивает постоянные магниты ротора. Изменение направления тока в обмотках, и, тем самым, изменение полярности магнитного поля в нужный момент в нужной последовательности приводит к вращению электродвигателя. Изменение направления тока в обмотках, которое приводит к вращению двигателя, называется коммутацией.
У трехфазного вентильного электродвигателя шесть состояний коммутации. Когда все шесть состояний последовательно пройдены, последовательность повторяется для продолжения вращения. Такая последовательность представляет собой полное электрическое вращение. В двигателях с числом магнитных полюсов больше двух электрическое вращение не соответствует механическому. В четырехполюсном вентильном электродвигателе 2 электрических вращения соответствуют одному механическому.
Простейшим методом осуществления коммутации в вентильных электродвигателях является метод "включено-выключено" (on-off): обмотка в одном из направлений является проводящей, в другом - нет. Включение обмотки между питанием и землей приводит к возникновению тока (подразумевается использование задающего каскада). Такой способ коммутации называется коммутацией прямоугольными импульсами или блочной коммутацией. В другом методе коммутации используется синусоидальный управляющий сигнал. В этих "рекомендациях" рассматривается блочный способ коммутации.
Величина магнитного поля определяет вращающий момент и скорость электродвигателя. Изменяя ток через обмотки можно изменять вращающий момент и скорость вращения электродвигателя. Наиболее распространенный метод управления током - управление (средним) током через обмотку. Суть этого метода в подключении и отключении питания обмотки, причем соотношение между временем, когда питание включено и когда отключено, определяет среднее напряжение на обмотке и, тем самым, средний ток.
Рис. 2.2. Протекание тока через обмотки/магнитное поле, генерируемое обмотками U, V и W в шести состояниях коммутации вентильного электродвигателя. Также показаны выходы датчика Холла
В вентильных электродвигателях управление коммутацией осуществляется электроникой. Простейшим способом коммутации является коммутация в соответствии с показаниями набора датчиков положения, находящихся внутри электродвигателя. Обычно используются датчики Холла. Показания датчиков Холла изменяются, когда должно измениться состояние коммутации (см. рис. 2-2).
Вторая функция электроники в устройстве управления вентильным электродвигателем - проверка скорости вращения на соответствие желаемой с помощью замкнутого или разомкнутого контуров. В каждом из этих случаев рекомендуется наличие возможности обнаружения остановки (блокировки двигателя) и обнаружения перегрузки.
2.2 Реализация управления вентильным электродвигателем с помощью датчиков Холла
Реализация, описанная в этом документе, управляет вентильным электродвигателем с помощью разомкнутого контура. Чтобы отслеживать останов и перегрузку электродвигателя постоянно измеряется скорость двигателя и может измеряться ток (но в рассматриваемой реализации это не осуществлено). На рис. 2-3 изображен типичный задающий каскад для вентильного электродвигателя.
Рис. 2.3. Типичный задающий каскад для вентильного электродвигателя
На практике задающий каскад немного другой, чтобы обеспечить необходимый ток для управления стороной высокого напряжения (high-side) полевых транзисторов непосредственно с выводов AVR. Рисунок 2-4 показывает реальную реализацию задающего каскада для каждой из обмоток. При желании реализация может быть другой.
Рис. 2.4. Схемы задающих каскадов для обмоток U, V и W (показан только задающий каскад для обмотки U)
Три ШИМ-канала, , OC1A, OC1B иOC1C управляют стороной низкого напряжения (low-side) задающего каскада (например, UL на рис 2-4). Такая система позволяет управлять током аппаратно с помощью ШИМ с минимальным использованием ресурсов таймеров. Так происходит управление скоростью электродвигателя: изменение коэффициента заполнения ШИМ сигнала позволяет управлять током, а, следовательно, и скоростью (и вращающим моментом) электродвигателя.
Также возможно с помощью ШИМ управлять стороной высокого напряжения (high-side) задающего каскада, что потребует использование в дополнение к таймеру 1 таймера 3 микроконтроллера AT90USB. В реализации управляющего устройства, описанной в этих "рекомендациях", управление стороной высокого напряжения (high-side) осуществляется линиями ввода/вывода общего назначения.
Для более эффективного распределения мощности между транзисторами при использовании активного выключения (active breaking) можно использовать ШИМ для управления как стороной высокого напряжения (high-side) , так и стороной низкого напряжения (low-side) задающего каскада. Как бы то ни было, в большинстве приложений этого не требуется.
Один канал АЦП может быть использован для измерения тока (в данной реализации не сделано). АЦП имеет разрешение 10 разрядов и может использовать внутреннее опорное напряжение 2.56В; которое дает точность порядка 2.4 мВ, что достаточно для обнаружения перегрузки по току, т.к. напряжение на 0.22 Омном шунтирующем резисторе составляет 220мВ при протекании тока 1 А. Если есть необходимость, АЦП можно включать по сигналу ШИМ для измерения тока не в момент переключения, или АЦП может работать постоянно с заданной частотой выборки. Второй канал АЦП может использоваться для измерения напряжения на потенциометре для установки скорости электродвигателя (полезно, если для управления скоростью электродвигателя не используется цифровой интерфейс).
Выводы датчика Холла соединены с 3 выводами порта E (PORTE), которые настроены как внешние прерывания по изменению уровня. При изменении логического уровня на выходах датчиков Холла возникает прерывание и изменяется состояние коммутации согласно новым показаниям датчиков Холла.
Обзор использованных ресурсов приведен в таблице "Ресурсы, использованные для управления электродвигателем".
Таблица 1. Ресурсы, используемы для управления электродвигателем
Ресурс |
Использование |
PORTB[5, 6, 7] - Timer Counter 1: OC1[A, B ,C] |
Управление стороной низкого напряжения задающего каскада (UL, VL, WL) |
PORTB[2,3,4] |
Управление стороной высокого напряжения задающего каскада (UН, VH, WH) |
PORTE[5,6,7] |
Входы для показаний датчиков Холла (A, B, C) |
Стоит отметить, что аппаратные ресурсы для связи по USB, UART, SPI и TWI доступны при необходимости. Заметьте, что для реализации связи по этим интерфейсам не рекомендуется использовать прерывания, т.к в этом случае возможно изменение времени отклика при коммутации.
2.3. Интерфейс USB
Для управления скоростью и направлением вращения электродвигателя используется класс HID, также есть возможность запуска и останова двигателя. Еще есть специфические фреймы для отправки измеренной скорости электродвигателя по шине USB.
Таблица 2. Фреймы, используемые для связи по USB
Тип |
1-й байт |
2-ой байт |
3-ий байт |
4-ый байт |
5-ый байт |
Действие |
OUT |
01 |
безразлично |
безразлично |
безразлично |
безразлично |
Запуск электродвигателя |
OUT |
02 |
безразлично |
безразлично |
безразлично |
безразлично |
Остановка электродвигателя |
OUT |
03 |
0xHH |
0xLL |
безразлично |
безразлично |
Установка скорости электродвигателя (скорость=0xHHLL) |
OUT |
04 |
0xXX |
безразлично |
безразлично |
безразлично |
Установка направления вращения электродвигателя (DD=0=против часовой стрелки или DD=1=по часовой стрелке) |
IN |
05 |
0xHH |
0xLL |
Направление 0xDD |
Запуск/останов |
Получение статуса Измеренная скорость=0xHHLL Направление (DD=0=против часовой стрелки или DD=1=по часовой стрелке)
Запуск/останов (Status=0xff=запущен, Status=0x00=остановлен) |
2.4 Описание программного обеспечения
Весь код разработан на языке Си с использованием компилятора IAR EWAVR 4.20A (бесплатный, с ограничением на размер выходного бинарного файла 4Кбайт). Это программное обеспечение основано на реализации HID-устройства, описанной в AVR328 (AVR328: Реализация устройства класса HID).
Основные функции приведены ниже. Приведены лишь самые главные функции, используемые для управления электродвигателем. Обработчик внешнего прерывания, обеспечивающий изменение состояния коммутации при изменении выходов датчиков Холла, описан блок-схемой.
void Init_MC_timer1_pwm( void )
инициализирует таймер 1 (Timer 1 ) для работы в ШИМ режиме. OCRx сбрасывается при совпадении.
void Init_MC_pin_change_interrupt ( void )
Настраивает выводы, используемые для обработки сигналов датчиков Холла, как внешние прерывания по изменению уровня сигнала (и по фронту и по спаду).
void Set_Direction( unsigned char direction )
Настраивает указатель таблицы коммутации на использование таблицы для обеспечения вращения двигателя по часовой стрелке или против. Заметьте, что не рекомендуется изменять направление вращения двигателя без предварительного уменьшения скорости вращения, а лучше полной остановки.
void Set_Speed( unsigned int speed )
Изменяет содержимое регистров сравнения таймера 1, который управляет коэффициентом заполнения ШИМ, и, таким образом, скоростью электродвигателя. Используемый метод обеспечивает одновременное изменение ШИМ каналов (и поддержку одинаковых коэффициентов заполнения)
void Init_Speed_Timer0(void)
Инициализирует таймер 0 (timer 0) для работы на частоте Clkio/1024 до переполнения, таймер 0 (8 бит) переполняется каждые 32мс при тактовой частоте микроконтроллера 8 МГц. Этот отрезок времени используется для измерения скорости электродвигателя.
_interrupt void TIMER0_0VF_ISR(void)
Прерывание от таймера 0 возникает каждые 32 мс при тактовой частоте 8 МГц, здесь же изменяется переменная Measured_speed .
void Run_motor(void)
Разрешает работу вывода OCRx для запуска двигателя.
void Stop_motor(void)
Запрещает работу вывода OCRx для останова двигателя, переводит выводы AVR, подключенные к задающему каскаду, в плавающее состояние. Это останавливает работу задающего каскада, чтобы обеспечить отсутствие тока в обмотках электродвигателя.
void Hall_ISR(void)
Изменяет выводы ШИМ, управляющие стороной низкого напряжения (low-side) задающего каскада и линии ввода/вывода, управляющие стороной высокого напряжения (high-side) задающего каскада. Для обеспечения оптимальной скорости обработки прерываний переменные, используемые в обработчике, располагаются в специальных регистрах (которые используются только для этого). Далее, информация, необходимая для коммутации расположена в таблицах, доступ к которым легко осуществляется при использовании показаний датчиков Холла в качестве смещения. Алгоритм обработки прерывания приведен на рис 2-5.
Рис. 2-5 Алгоритм обработки внешнего прерывания, обеспечивающий коммутацию
2.5. Реализация программного обеспечения для ПК
ПО для ПК (с ОС Windows 2K и XP) позволяет управлять скоростью и направлением вращения электродвигателя, а также отображает измеренную скорость (см. рис ниже).
2.6. Особенности рассмотренной реализации
- Управление скоростью с 10 битным разрешением,
- размер кода порядка 3500 байт,
- время отклика на изменение показаний датчика Холла меньше 5 мкс.
Обработка внешнего прерывания занимает около 23 циклов ЦПУ. При частоте работы 8 МГц это позволяет осуществлять электрическое вращение за 17,25 мкс (50 циклов*6состояний коммутации). Что дает 3478K электрических вращений в минуту при использовании электродвигателя с 4 парами полюсов, это, в свою очередь, дает теоретический максимум 869K механических вращений в минуту (если не принимать во внимание контроль за перегрузкой по току и связь по USB).
Документация
|