Отладочная плата NUCLEO на базе микроконтроллера STM32F302R8 поддерживающим операции с плавающей точкой и X-NUCLEO-IHM07M1 плата драйвера трехфазного бес щеточного двигателя L6230 . Плата предназначена для 6-ступенчатых и векторных алгоритмов управления двигателем.
- Диапазон рабочего напряжения драйвера от 8 до 48В;(на основании параметров мотора напряжения источника питания 12В)
- Пиковый ток до 2,8А;
- 3 шунта для измерения тока;
- Защита от перегрузок
- Подключение датчиков Холла и энкодера.
- Потенциометр для управления скоростью.
- Пользовательская кнопка.
Изначально уже залита прошивка и есть ряд конфигурационных перемычек для выбора режима ее работы . После включения светодиод d11 сигнализирует о выбранном алгоритме управления 2 раза векторное, 4 раза 6 шагов.Я уже снес дефолтную прошивку и залил пример для управления по алгоритму 6 шагов.Как мне первоначально казалось это будет простой алгоритм, но я ошибался.
После того как плата готова к старту, т.е. мы убедились в правильности установки всех перемычек Рис 2. Необходимо нажать синюю кнопку и отрегулировать скорость вращения с помощью потенциометра.
BLCD - трехфазный двигатель с постоянными магнитами состоит из двух частей :
1.неподвижная часть статор - состоящая из трех обмоток .
2.подвижная часть ротор - на которой расположены постоянные магниты.
Управление таким двигателем можно разделить на 6 шагов. На каждом шаге плюс источника питания подается на одну из обмоток, a минус на другую ,в то время как одна из обмоток остается не подключенной Рис 3. Исходя из этого 6 вариантов коммутации ключей Рис4.
Необходимо подавать напряжения в правильной последовательности, чтобы создать вращающееся магнитное поле и в соответствующее время, чтобы получить правильный угол опережения поля статора над полем ротора для достижения максимального момента.Если подключить к такому двигателю источник трехфазного переменного напряжения соответствующего параметрам двигателя, то он тоже будет вращаться.Такой двигатель может работать в режиме генератора.Это свойство используется для определения наилучшего момента коммутации напряжений обмоток. BLCD это синхронный двигатель,но максимальная эффективность работы достигается когда поддерживается разница между магнитным полем статора и ротора в 90 градусов.Для правильной коммутации напряжений обмоток ввиду отсутствия датчиков ХОЛЛА, используется бездатчиковый метод управления основанный на измерении противоЭДС , и тока в обмотках статора.Данный метод отслеживает переход напряжения через 0, на не подключенной фазе,для определения момента переключения на следующий шаг.
Управление двигателем выполнено с помощью ШИМ сигнала который который может формироваться двумя разными методами:
- токовый метод-необходимы два контура управления Рис 5. один внутренний другой внешний.Внутренний работает аппаратно благодаря аналоговому компаратору на который заводится напряжение с датчика тока (шутн). Внешний контур использует ПИ регулятор, который сравнивает задание скорости с реальной. На выходе формируется "аналоговый" сигнал, который подается на второй вывод компаратора.Выход компаратора подключен как триггер сброса для таймера, который формирует ШИМ
- метод напряжения-нужен один контур,ПИ регулятор дает напрямую задание для ШИМ.
Моя плата использует только токовый метод.
Выход компаратора подключен к блоку ETR(внешний триггер сброса таймера).
Рис 6. показывает как работает токовое управление.Красная линия это ток двигателя поддерживаемый на уровне задания (зеленая пунктирная линия). Как только ток двигателя достигает порога уровня задания внешний триггер выключает ШИМ сигнал.
Измерение скорости вращения ротора.
Магнитное поле ротора наводит противоЭДС в обмотках статора Рис 7. Частота и амплитуда вырабатываемого напряжения прямо пропорциональна скорости вращения ротора.Зная кол-во пар полюсов BLCD мотора и электрическую частоту вращения можно рассчитать механическую скорость вращения ротора.Например для 1000Гц и 10пар полюсов механическая частота вращения будет 100Гц.
Переключение,задержка размагничивания ,переход через ноль.
Исходя из того что каждый мотор имеет свою индуктивность обмоток.Ток в обмотках может достигать нуля с некоторой задержкой на каждом шаге коммутации Рис 10. Это событие называется задержкой размагничивания и является отправной точкой для определения перехода через ноль . Напряжение противоЭДС измеряется в момент когда ток в не подключенной фазе достигает нуля, после задержки размагничивания Рис 11.
Время размагничивания может задаваться по разному. В виде таблицы для диапазонов скоростей(как в моем варианте),либо основываясь на времени шага помноженным на константу.
Определение перехода через ноль.
Когда верхний ключ T1 включен Рис 12. напряжение в нейтрали двигателя относительно GND становится Vbus/2. Если T1 выключен то напряжение нейтрали становится равным нулю.Переход через ноль может быть обнаружен как во время T1ON так и T1OFF. Библиотека для моей платы умеет измерять противоЭДС только когда T1OFF и фаза С не подключена. Когда таймер который формирует ШИМ для ключей считает вверх, ключ Т1 выключен напряжение в средней точке становится равно нулю и после времени размагничивания можно измерять напряжение противоЭДС на не подключенной фазе. Тут рассмотрено измерение для одного из 6 шагов, но таким же образом выполняются измерение для остальных шагов.
Процедура запуска.
Чтобы начать управлять BLCD двигателем в бездатчиковом режиме.Амплитуда противоЭДС должна достигнуть определенного порога, для обработки на микроконтроллере. Она зависит от скорости вращения ротора, т.е. необходимо разогнать ротор до необходимой скорости.Следующие шаги необходимы для запуска мотора для перехода на закрытый тип управления по контролю противоЭДС: 1. фаза выравнивания 2. фаза линейного разгона. Фаза выравнивания-ротор перемещается в специальное положение которое предшествует следующему шагу.Для этого подается фиксированный ток,что провоцирует повернутся ротор в ближайшую позицию пары полюсов.Если двигатель должен начать вращаться с 1 шага то фаза выравнивания заставляет его повернутся к 6 шагу.
Линейный разгон - мотор стартует с фиксированным током.Частота вращения постепенно нарастает когда она достигает определенного заданного значения (красная точка Рис 13. ) и когда счетчик переходов через ноль насчитает определенное их значение, происходит переход на бездатчиковое управление зеленая точка.
Версию библиотеки можно увидеть в файле 6step_Lib.c (v1.0.0). Основные параметры которым необходимо уделить внимание находятся в следующем файле MC_SixStep_param.h , можно изменить такие параметры как чило пар полюсов,стартовый ток,порог противоЭДС, параметры ПИ регулятора,время выравнивания, скорость двигателя и др.
График Рис 14. показывает разницу между разными значениями параметра АСС.На каждом шаге генерируется новое значение скорости.Возникает ошибка обратной связи по скорости, если система управления достигает значения параметра максимального количества шагов до перехода на замкнутую бездатчиковую.Такое может быть если значение ускорения (АСС)сильно маленькое чтобы достигнуть вовремя требуемой скорости для перехода на бездатчиковое управление.
Работа и устройство библиотеки от ST.
Управление электродвигателем разделено на 3 задачи которые выполняются с разной периодичностью.
Низко приоритетная задача за нее отвечает системный таймер. Тут выполняются такие задачи как:
*обработка потенциометра задания скорости вращения . *расчет значений ПИ регулятора. *фаза выравнивания только на момент ее выполнения. *управление скоростью, задание тока в виде ШИМ сигнала на основе значений ПИ регулятора для компаратора драйвера Рис 5.( ШИМ сигнал предварительно сглаживается конденсатором). *обработка ошибок обратной связи по скорости и др.
Задача среднего приоритета Рис 16. реализована на таймере 6. Начинает выполнятся после фазы выравнивания, зависит от скорости вращения двигателя,а именно частоты обнаружения переходов через 0. MC_SixStep_NEXT_step()-генерирование следующего номера шага. MC_SixStep_TABLE()-задание ШИМ сигнала для каждой из обмоток на основании номера шага. MC_SixStep_ARR_step() - начальный разгон до перехода на закрытый цикл по противоЭДС.
Задача высшего приоритета-выполнена на TIM1 Рис 17., который генерирует 3x канальный ШИМ сигнал для управления драйвером двигателя. Хочу отметить, что ширина импульса программно не изменяется и настраивается на первом этапе инициализации всей периферии.
Таймер работает в режиме счета вверх\вниз и выступает в качестве триггера для АЦП. При переполнении когда таймер считает вверх и при обнулении когда таймер считает вниз, вызывается callback функция окончания преобразования АЦП Рис 18. При счете вверх выполняется измерение противоЭДС MC_ADCx_SixStep_Bemf() и перерасчет времени шага MC_SixStep_ARR_Bemf(). Делается это на основании предыдущего значения переполнения TIM6 и значения его счетчика c момента последнего шага, до обнаружения перехода через 0 в не подключенной фазе.Значение переполнения таймера 6 (время_шага) будет подкорректировано так чтобы переход через ноль происходил в середине шага.
Для измерений задействованы регулярные каналы, так как данные кладутся в один регистр,то номер активного канала для измерения противоЭДС меняется в зависимости от номера шага Рис. 19 в следующей функции MC_SixStep_TABLE(uint8_t step_number){}.
При счете вниз АЦП обрабатываются другие события такие как ток двигателя,температура,напряжение на шине и потенциометр. Как я понял в моем варианте обрабатывается только потенциометр.
Cхемы.
Всем спасибо за просмотр,оценку и комментарии.Скоро выйдет видео на эту тему .