AVR444: Управление трехфазным бесколлекторным электродвигателем постоянного тока без датчиков
Отличительные особенности:
- Надежное управление коммутацией без использования датчиков.
- Внешнее задание скорости.
- Детекция и защита от токовой перегрузки.
- В состав входит простой регулятор скорости.
- Полный исходный код на Си.
- Возможность адаптации исходного кода под параметры различных двигателей.
- Несколько линий ввода-вывода и периферийных устройств не используются для управления двигателем и могут быть задействованы для других целей, как, например, управление светодиодами индикации состояния, организация передачи данных или интерфейса с пользователем.
- Работает без модификации в составе совместимых по расположению выводов и по исходному коду микроконтроллеров ATmega48, ATmega88 и ATmega168.
1. Введение
В данных рекомендациях по применению описывается реализация устройства управления коммутацией 3 фазного бесколлектного электродвигателя постоянного тока (БКЭПТ) без использования датчиков на основе недорого микроконтроллера ATmega48. Представленное решение применимо к большинству 3-фазных БКЭПТ среди представленных на рынке. Весь исходный код написан на Си, ассемблирование не требуется. Адаптация к различным двигателям выполняется за счет изменения параметров в исходном коде.
Микроконтроллеры ATmega48/88/168 совместимы по расположению выводов и исходному коду. Отличие заключается только в размерах памяти. В данных рекомендациях по применению постоянно упоминается ATmega48, но любая ссылка на него в данном документе также распространяется и на ATmega88/168.
2. Принцип действия
В данном документе не рассматривается в деталях принцип работы БКЭПТ. Основное внимание уделяется аспектам управления без использования датчиков. Информацию по работе БКЭПТ можно узнать из рекомендаций по применению AVR443: Управление трехфазным бесколлекторным электродвигателем постоянного тока с использованием датчиков.
2.1 Осциллограммы сигналов
Общепринятым определением БКЭПТ является "двигатель на основе постоянных магнитов с трапецеидальной обратной э.д.с. в противоположность синусоидальной обратной э.д.с. свойственной синхронным двигателям на постоянных магнитах". Данные рекомендации по применению распространяются на БКЭПТ с трапецеидальной формой обратной э.д.с.
На рисунке 1 показаны осциллограммы трапецеидальной обратной э.д.с. и соответствующие напряжения управления 3-фазным БКЭПТ. На каждой ступени коммутации, обмотка одной фазы подключается к положительному напряжению питания, другая - к отрицательному, а третья - остается неподключенной. Обратная э.д.с. неподключенной фазы в результате пересекает ноль при пересечении среднего значения положительного и отрицательного напряжений. Пересечения ноля отмечены на рисунке 1, как "ПН".
Пересечение ноля возникает всегда в центре между двумя коммутациями. На постоянной скорости или медленно изменяющейся скорости период времени от одной коммутации до пересечения нуля и время от пересечения нуля до следующей коммутации равны. Это используется в качестве основы в данной реализации устройства управления без использования датчиков.
Рисунок 1. Осциллограммы сигналов
Неподключенная фаза, на которой необходимо выявлять пересечение нуля, изменяется на каждой ступени коммутации. Поэтому, для детекции пересечений нуля в каждой фазе понадобится три канала АЦП.
2.2 Запуск
Амплитуда обратной э.д.с. прямо-пропорциональна частоте вращения двигателя. Это существенно усложняет детекцию пересечения нуля на низкой скорости, т.к. в этом случае слишком мало отношение сигнал-шум. Поэтому, схема коммутации, представленная в данных рекомендациях по применению не будет работать в процессе запуска и при очень низких скоростях. За последние годы были предложены несколько способов запуска БКЭПТ без использования датчиков. Они различаются в уровне сложности и вычислительной сложности и, по всей видимости, не существует решения, которое подошло бы всем. Кроме того, многие из способов запуска запатентованы.
В данных рекомендациях по применению используется простой способ запуска "вслепую". Таблица межкоммутационных задержек для первых нескольких коммутаций записана во флэш-память. Коммутационная последовательность выполняется без учета обратной э.д.с. Управление осуществляет бездатчиковый контроллер коммутации. Данный простой способ управления хорошо подходит для двигателей с заранее известной нагрузкой.
Межкоммутационные задержки генерируются с помощью коммутационного таймера (таймер-счетчик 1) в функции 'StartupDelay'. Если необходимо использовать другой способ запуска, то необходимо изучить документацию из вложенного исходного кода.
2.3 ШИМ/АЦП
Частота вращения/вращающий момент двигателя управляются с помощью широтно-импульсной модуляции (ШИМ). В целях выполнения надежных измерений в условиях излучения со стороны ШИМ повышенного уровня шума важно понимать работу ШИМ и ее взаимодействие с аналогово-цифровым преобразователем.
ШИМ используется в так называемом режиме фазовой коррекции. В данном режиме счетчик работает в двух направлениях, что делает выход ШИМ симметричным в пределах одного периода ШИМ. Кроме того, сравниваемое значение, которое определяет рабочий цикл ШИМ-выхода, буферизуется с целью невозможности его обновления внутри цикла ШИМ. На рисунке 2 показано соотношение между значением счетчика, сравниваемым значением и ШИМ-выходом. Каждый период ШИМ на рисунке выделен пунктирными линиями. На рисунке также показывается, что переполнение таймера возникает при достижении таймером ноля. Данное событие может использоваться для автоматического запуска преобразования АЦП. Если значение рабочего цикла ШИМ очень мало, то имеется точка, в которой ШИМ-выход будет стабильным в течение длительного времени. Это используется в целях гарантирования оцифровки напряжения неподключенной фазы в условиях низких шумов со стороны ШИМ.
Рисунок 2. Генерация ШИМ
2.4 Аппаратная часть
Рассматриваемое решение устройства управления 3-фазным БКЭПТ без использования датчиков состоит из шести частей:
- AVR-микроконтроллер ATmega48/88/168
- 3-фазный двигатель
- Силовой каскад
- Схема обработки сигнала обратной э.д.с.
- Вход задания скорости
- Схема измерения тока
Подключение данных частей показано на рисунке 3.
Рисунок 3. Устройство управления БКЭПТ без датчиков
Силовой каскад состоит из трех стандартных полумостов, которые часто используются для управления трехфазными двигателями. На рисунке 4 показана укрупненная схема силового каскада. U, V и W - каждая из трех фаз обмоток двигателя. Сигналы, обозначенные XX_PWM, являются сигналами управления микроконтроллера. Ключи, как правило, реализуются на транзисторах или других полупроводниках, функционирующих в ключевом режиме. Полная схема силового каскада отличается от приведенной и не рассматривается в данном документе. В набор для проектирования ATAVRMC100 входит пример схемы такого силового каскада, который может использоваться совместно со многими двигателями. Схема доступна с сайта www.atmel.com.
Ключи, подключенные к Vдв, называются верхними ключами. Ключи, подключенные к общему, по аналогии называются нижними ключами. При работе БКЭПТ, как показано на рисунке 1, могут быть открыты только один верхний и один нижний ключ, создавая путь протекания электрического тока через две фазные обмотки двигателя и оставляя одну обмотку двигателя неподключенной.
Диоды параллельно каждому ключу обычно называются обратными диодами и предназначены для защиты ключей от высоковольтных выбросов напряжения, возникающие при коммутации больших индуктивных нагрузок, подобных двигателю. Некоторые транзисторы интегрируют такой диод в своем корпусе.
Для измерения потребляемого двигателем тока используется один шунтовой резистор, включенный между силовым каскадом и общим. Поскольку через шунт могут протекать большие токи, то его сопротивление должно быть как можно более малым, но при этом также достаточным до восприятия падения напряжения на этом резисторе со стороны АЦП. При выборе шунтового резистора также необходимо убедится, что он способен рассеивать мощность при максимальном токе.
На рисунке 4 показано, как силовой каскад подключен к обмоткам двигателя и как сигналы управления подключены к ключам.
Рисунок 4. Силовой каскад
Шесть синхронизированных ШИМ-сигналов, которые могут быть индивидуально включены и выключены, необходимы для управления силовым каскадом, показанного на рисунке 4. Микроконтроллер ATmega48 может генерировать шесть ШИМ-сигналов, но для этого требуется использование модулей таймеров-счетчиков. Желательно использовать только один таймер-счетчик для синхронизации процесса коммутации. Для этого можно генерировать только один ШИМ-сигнал, который в дальнейшем будет подключаться к активным ключам. Это легко достигается с помощью шести внешних логических элементов И. Каждый И-элемент управляет одним ключом силового каскада. ШИМ-сигнал подается на вход каждого элемента И. Оставшиеся шесть входов логических элементов соединяются с линиями ввода-вывода, которые будут выступать в качестве выходов разрешения. Схема распределения ШИМ-сигнала показана на рисунке 5.
В целях предотвращения плавания уровней сигналов управления при нахождении микроконтроллера в состоянии сброса рекомендуется установить подтягивающий к общему питанию резистор на линии ШИМ. Это позволяет эффективно отключить все ключи, когда линия ШИМ находится в плавающем состоянии.
Рисунок 5. Логика распределения ШИМ-сигнала
2.4.1 Схема делителя напряжения/фильтра низких частот
В данной разработке несколько раз используется одна и та же схема: пассивный делитель напряжения и фильтр нижних частот (ДН/ФНЧ). Данная схема представлена на рисунке 6.
Рисунок 6. Схема делителя напряжения и фильтра нижних частот на входе АЦП
Параметры компонентов в данной схеме зависят от желаемого коэффициента передачи и частоты излома. При выборе параметров схемы рекомендуется руководствоваться следующими соображениями:
- На низких частотах схема функционирует как обычный делитель напряжения.. Vвых=(R2/(R1+R2)) Vвх.
- На высоких частотах емкость С функционирует как шунт к общей цепи, фильтруя все более высокие частоты.
- Частота излома фильтра определяется следующим выражением: w0=(R1+R2)/(R1R2C)
- R1+R2 должны иметь большое значение (10-100 кОм) во избежание протекания больших токов через фильтр.
2.4.2 Опорное напряжение АЦП
Пересечение ноля возникает, когда э.д.с. отключенной фазы пересекает уровень напряжения, равный среднему значению напряжений двух линий питания. В данных рекомендациях по применению полагается, что отрицательное питание принято за общую цепь. Это означает, что уровень пересечения ноля равен половине напряжения питания двигателя. Зависимость этого уровня от напряжения питания двигателя делает неприемлемым использование фиксированного порога для определения пересечения ноля. Вместо этого, в качестве источника опорного напряжения АЦП целесообразно использовать напряжение питания двигателя (или его отмасштабированная в направлении уменьшения версия). Перед подачей к АЦП напряжение питания двигателя необходимо отфильтровать. Для этих целей можно использовать схему ДН/ФНЧ, показанную на рисунке 6. Коэффициент деления выбирается таким образом, чтобы выходное напряжение было в требуемых границах АЦП, между 1В и AVCC.
Обратите внимание, что коэффициент передачи данной схемы может измениться, если вход AREF будет сопоставимо низкоомным. Данную проблему можно решить либо путем соответствующего выбора параметров компонентов, либо программным способом.
2.4.3 Обработка сигнала обратной э.д.с.
Напряжения 3 фаз должны быть подключены к входам АЦП посредством трех схем ДН/ФНЧ. Фильтры должны иметь тот же коэффициент передачи, что и фильтр опорного напряжения АЦП. Это позволит использовать весь диапазон преобразования АЦП. Фильтр низких частот должен обеспечивать как можно более полную фильтрацию высокочастотного шума, но при этим не должен вносить существенных задержек сигнала обратной э.д.с.
2.4.4 Измерение тока
Ток, протекающий через шунтовой резистор, содержит высокочастотные компоненты, вызванные работой ШИМ и коммутацией. Поэтому, чтобы результат преобразования АЦП можно было смело интерпретировать как значение, соответствующее величине потребляемого тока, на входе АЦП необходимо предусмотреть фильтр нижних частот. Напряжение на шунтовом резисторе обычно мало и не требует деления напряжения. Во избежание неоправданного выделения мощности рекомендуется использовать шунтовое сопротивление как можно более низкого номинала. Таким образом, для фильтрации достаточно использовать пассивный фильтр низких частот (последовательное соединение резистора и конденсатора, подключенного к общему).
2.4.5 Фиксированное опорное напряжение
Для точного измерения тока использование опорного напряжения АЦП (вывод AREF), которое варьируется вместе с напряжением питания двигателя, не приемлемо. В этом случае необходимо фиксированное, известное опорное напряжение. ATmega48 содержит встроенный источник опорного напряжения, который может быть измерен с помощью АЦП по отношению к AREF, но стабилизируется относительно достигаемой цели достаточно медленно. В качестве данного опорного напряжения может использоваться любой источник, который характеризуется долговременной стабильностью и уровень которого заранее известен. В данных рекомендациях по применению напряжение VCC подается через ДН/ФНЧ для формирования известного опорного значения. Коэффициент передачи ДН/ФНЧ должен выбираться таким образом, чтобы отмасштабированное фиксированное опорное напряжение никогда не превышало напряжение AREF. Номинал конденсатора должен быть достаточно большим для удаления пульсаций VCC.
2.4.6 Задание скорости
В данной реализации скорость задается с помощью аналогового напряжения. В качестве задатчика скорости может выступать любой сигнал, например, выход датчика температуры. В данной реализации для задания скорости используется обычный потенциометр. Если использовать схему ДН/ФНЧ с рисунка 6, в которой используется потенциометр на месте резистора R2, в качестве входного напряжения выступает напряжение питания двигателя и используется тот же коэффициент передачи, что и в делителе на входе AREF, то этим будет гарантироваться использование всего диапазона преобразования АЦП.
2.4.7 Защита от токовой перегрузки
Измерение тока с помощью АЦП выполняется однократно в каждом цикле ШИМ, т.е. приблизительно каждые 50 мкс при основной частоте ШИМ 20 кГц. Если требуется более высокое быстродействие реагирования на токовую перегрузку, то можно использовать аналоговый компаратор. Отфильтрованное напряжение шунта подается ко входу аналогового компаратора. На второй вход компаратора подается фиксированное напряжение, которое соответствует напряжению на шунте при протекании через него максимального тока. Используя прерывание по срабатыванию компаратора можно отключить питание двигателя при возникновении токовой перегрузки. Обратите внимание, что любое работающее прерывание должно завершиться, прежде чем активизируется прерывание компаратора, поэтому, перед отключением питания может возникнуть небольшая задержка. Если скорость отключения питания является критичным параметром, то можно реализовать внешнюю схему защиты от токовой перегрузки, которая будет автономно управлять отключением ШИМ-сигнала.
2.4.8 Подключение микроконтроллера ATmega48
В таблице 1 указано подключение выводов микроконтроллера AVR и других подсистем схемы. Все сигналы порта В являются взаимозаменяемыми. Тоже самое распространяется на каналы АЦП.
Таблица 1. Использование выводов микроконтроллера ATmega48
Вывод ATmega48 |
Подключение в схеме |
Направление |
AREF |
Опорное напряжение питания двигателя |
Ввод |
PB0 |
WH_EN |
Вывод |
PB1 |
WL_EN |
Вывод |
PB2 |
VH_EN |
Вывод |
PB3 |
VL_EN |
Вывод |
PB4 |
UH_EN |
Вывод |
PB5 |
UL_EN |
Вывод |
PC0 |
Вход АЦП, фаза U |
Ввод |
PC1 |
Вход АЦП, фаза V |
Ввод |
PC2 |
Вход АЦП, фаза W |
Ввод |
PC3 |
Напряжение шунта |
Ввод |
PC4 |
Задание скорости |
Ввод |
PC5 |
Опорное напряжение VCC |
Ввод |
PD5 |
ШИМ-сигнал |
Вывод |
PD6 |
Аналоговый компаратор, вход 0 |
Ввод |
PD7 |
Аналоговый компаратор, вход 1 |
Ввод |
2.4.9 Использование периферийных устройств
Ниже приведен перечень используемых периферийных устройств:
Таблица 2. Использование периферийных устройств
Периферийное устройство |
Назначение |
Таймер-счетчик 0 |
Генерация ШИМ-сигнала Запуск преобразования АЦП |
Таймер-счетчик 1 |
Синхронизация коммутации Синхронизация задержки детекции пересечения ноля |
Аналогово-цифровой преобразователь |
Детекция пересечения ноля Измерение тока Ввод заданной скорости |
Аналоговый компаратор |
Детекция и защита от токовой перегрузки |
2.5 Программное обеспечение
Программная реализация разделена на четыре основных части:
- Инициализация и запуск
- Управление коммутацией без датчиков
- Управление скоростью и током
- Детекция опрокида и токовой перегрузки
2.5.1 Инициализация и запуск
В части инициализации и запуска выполняется конфигурация всех периферийных устройств, запускается последовательность запуска двигателя и передается управление коммутацией двигателя к части управления коммутацией без использования датчиков, полностью построенной на использовании прерываний. В то же время, в вечном цикле выполняются все задачи, не использующие прерывания. Во вложенном примере решается только одна такая задача - управление скоростью и током. На рисунке 7 показана блок-схема инициализации и запуска. Блок, обозначенный "Разрешение прерываний" указывает на место, где передается управление контроллеру коммутации.
Рисунок 7. Блок-схема инициализации и запуска
2.5.2 Коммутация без использования датчиков
Чтобы понять, как реализована коммутация, полезно рассмотреть временную диаграмму событий, которые возникают между двумя коммутациями. На рисунке 8 показано в деталях осциллограмма напряжения неподключенной фазы между двумя коммутациями.
Рисунок 8. Детальная временная диаграмма коммутации
Управление коммутацией без датчиков реализовано с использованием нескольких прерываний. На различных ступенях коммутации прерывания включаются и отключаются. В таблице 3 показано назначение каждого прерывания. Цифровой автомат на рисунке 9 демонстрирует взаимодействие прерываний для управления коммутацией без датчиков.
В каждом из состояний, обозначенных "Ожидание прерывания", выполняется основной вечный цикл программы.
Таблица 3. Назначение прерываний
Прерывание |
Назначение |
Переполнение таймера-счетчика 0 (ШИМ-таймер) |
Детекция пересечения ноля |
Совпадение А таймера-счетчика 1 (коммутационный таймер) |
Синхронизация коммутации |
Совпадение В таймера-счетчика 1 (коммутационный таймер) |
Синхронизация удержания детекции пересечения ноля |
Завершение преобразования АЦП |
Измерение тока |
Срабатывание аналогового компаратора |
Определение и защита от токовой перегрузки |
Рисунок 9. Цифровой автомат коммутации без использования датчиков
2.5.3 Коммутационный фильтр
Измерение зашумленной обратной э.д.с. и тот факт, что детекция пересечения ноля выполняется только один раз за цикл ШИМ, могут привести к тому, что пересечение ноля будет определяться с небольшим смещением от середины между двумя коммутациями. Если допустить, что частота вращения постоянна или медленно изменяющаяся, то применение цифрового фильтра с характеристиками фильтра низких частот позволит улучшить временную диаграмму коммутации. Во вложенном исходном коде используется фильтр с бесконечной импульсной характеристикой (БИХ-фильтр) для сглаживания эффектов некорректной детекции пересечения ноля. Ниже приведено выражение для фильтра.
Выражение 1. Коммутационный БИХ-фильтр
- где
- yn - отфильтрованное время на временном интервале n;
- xn - измеренное время на временном интервале n;
- a, b - весовые коэффициенты.
Для повышения эффективности вычислений и числовой стабильности необходимо, чтобы a+b могло быть заменено числом в степени 2. Во вложенном исходном коде используются следующие значения: a = 1, b = 3.
2.5.4 Управление скоростью и током
В условиях отсутствия датчиков скорость можно вычислить по информации из контроллера коммутации. Контроллер коммутации запоминает время между переключением обмоток и пересечением ноля в глобальной переменной, которая затем используется для вычисления частоты вращения. В это же время устанавливается флаг, который сигнализирует о появлении нового значения измеренной скорости. Напряжение задатчика скорости также оцифровывается сразу после детекции пересечения нуля, следовательно, измерения заданной и фактической скоростей обновляются в один момент времени.
Поскольку информация о скорости обновляется только при каждом пересечении ноля обратной э.д.с., то частота обновления пропорциональна частоте вращения двигателя. Это может вызвать проблему, т.к. параметры дискретно-временного контроллера зависят от величины шага времени. Например, если требуется реализовать П-регулятор с постоянным коэффициентом передачи, то коэффициент передачи необходимо вычислять по текущему интервалу дискретизации времени. Альтернативно можно использовать фиксированное значение и согласиться с тем, что коэффициент передачи регулятора скорости будет зависеть от частоты вращения.
Напряжение на шунтовом резисторе измеряется каждый цикл ШИМ, что на частоте ШИМ 20 кГц эквивалентно каждым 50 мкс. Кроме этого, для компенсации изменений напряжения питания двигателя на каждой ступени коммутации измеряется внешнее фиксированное опорное напряжение. Фиксированное опорное напряжение используется для вычисления напряжения питания двигателя, связанного с выводом AREF. Сразу после определения напряжения AREF можно вычислить напряжение на шунтовом резисторе и, следовательно, ток, протекающий через шунт.
2.5.5 Определение опрокида
Ротор считается опрокинутым, если в течение определенного времени не выполнялся процесс коммутации. Для этих целей используется сторожевой таймер. Период срабатывания сторожевого таймера устанавливается в ходе инициализации, а затем при каждом переключении обмоток выполняется сброс сторожевого таймера. В процедуре обработки сброса предусмотрена функция, которая определяет источник сброса и разделяет действия, выполняющиеся после сброса при подаче питания и после сброса сторожевым таймером. Такой подход позволяет эффективно выявлять и исправлять ошибки.
2.5.6 Защита от токовой перегрузки
Определение токовой перегрузки основано на использовании аналогового компаратора. Если падение напряжения на шунте превышает пороговое значение, то возникает прерывание по срабатыванию аналогового компаратора. В процедуре обработки данного прерывания выполняется отключение питания двигателя и в бесконечном цикле ожидается сброс микроконтроллера со стороны сторожевого таймера.
3. Реализация
Рабочая реализация написана на Си и является частью данных рекомендаций по применению. Полное описание исходного кода и компиляционную информацию можно найти, открыв файл readme.html. Файл находится в архиве вместе с исходным кодом.
Документация:
|
|
Engl 245 Kb Исходный файл |
|
|
81 Kb Программа |
интернет продвижение
|