Найти тему
БоряЭлектрик

P-NUCLEO-IHM001 подарок от подписчика. BLCD бездатчиковое управление от STM.

Рис 1. P-NUCLEO-IHM001
Рис 1. P-NUCLEO-IHM001

Отладочная плата NUCLEO на базе микроконтроллера STM32F302R8 поддерживающим операции с плавающей точкой и X-NUCLEO-IHM07M1 плата драйвера трехфазного бес щеточного двигателя L6230 . Плата предназначена для 6-ступенчатых и векторных алгоритмов управления двигателем.

  • Диапазон рабочего напряжения драйвера от 8 до 48В;(на основании параметров мотора напряжения источника питания 12В)
  • Пиковый ток до 2,8А;
  • 3 шунта для измерения тока;
  • Защита от перегрузок
  • Подключение датчиков Холла и энкодера.
  • Потенциометр для управления скоростью.
  • Пользовательская кнопка.

Изначально уже залита прошивка и есть ряд конфигурационных перемычек для выбора режима ее работы . После включения светодиод d11 сигнализирует о выбранном алгоритме управления 2 раза векторное, 4 раза 6 шагов.Я уже снес дефолтную прошивку и залил пример для управления по алгоритму 6 шагов.Как мне первоначально казалось это будет простой алгоритм, но я ошибался.

Рис 2. UM1946 мануал . Дефолтное расположение перемычек
Рис 2. UM1946 мануал . Дефолтное расположение перемычек

После того как плата готова к старту, т.е. мы убедились в правильности установки всех перемычек Рис 2. Необходимо нажать синюю кнопку и отрегулировать скорость вращения с помощью потенциометра.

BLCD - трехфазный двигатель с постоянными магнитами состоит из двух частей :

Бесколлекторный мотор конструкция
Бесколлекторный мотор конструкция

1.неподвижная часть статор - состоящая из трех обмоток .

2.подвижная часть ротор - на которой расположены постоянные магниты.

Рис 3. Коммутация обмоток BLCD мотора, вращающееся магнитное поле
Рис 3. Коммутация обмоток BLCD мотора, вращающееся магнитное поле

Управление таким двигателем можно разделить на 6 шагов. На каждом шаге плюс источника питания подается на одну из обмоток, a минус на другую ,в то время как одна из обмоток остается не подключенной Рис 3. Исходя из этого 6 вариантов коммутации ключей Рис4.

Рис 4. Порядок переключения 6 ключей и токи в фазах
Рис 4. Порядок переключения 6 ключей и токи в фазах

Необходимо подавать напряжения в правильной последовательности, чтобы создать вращающееся магнитное поле и в соответствующее время, чтобы получить правильный угол опережения поля статора над полем ротора для достижения максимального момента.Если подключить к такому двигателю источник трехфазного переменного напряжения соответствующего параметрам двигателя, то он тоже будет вращаться.Такой двигатель может работать в режиме генератора.Это свойство используется для определения наилучшего момента коммутации напряжений обмоток. BLCD это синхронный двигатель,но максимальная эффективность работы достигается когда поддерживается разница между магнитным полем статора и ротора в 90 градусов.Для правильной коммутации напряжений обмоток ввиду отсутствия датчиков ХОЛЛА, используется бездатчиковый метод управления основанный на измерении противоЭДС , и тока в обмотках статора.Данный метод отслеживает переход напряжения через 0, на не подключенной фазе,для определения момента переключения на следующий шаг.

Управление двигателем выполнено с помощью ШИМ сигнала который который может формироваться двумя разными методами:

  • токовый метод-необходимы два контура управления Рис 5. один внутренний другой внешний.Внутренний работает аппаратно благодаря аналоговому компаратору на который заводится напряжение с датчика тока (шутн). Внешний контур использует ПИ регулятор, который сравнивает задание скорости с реальной. На выходе формируется "аналоговый" сигнал, который подается на второй вывод компаратора.Выход компаратора подключен как триггер сброса для таймера, который формирует ШИМ
  • метод напряжения-нужен один контур,ПИ регулятор дает напрямую задание для ШИМ.

Моя плата использует только токовый метод.

Рис 5. Токовый метод управления
Рис 5. Токовый метод управления

Выход компаратора подключен к блоку ETR(внешний триггер сброса таймера).

Рис 6. Управление током в обмотках BLCD двигателя, алгоритм от STM
Рис 6. Управление током в обмотках BLCD двигателя, алгоритм от STM

Рис 6. показывает как работает токовое управление.Красная линия это ток двигателя поддерживаемый на уровне задания (зеленая пунктирная линия). Как только ток двигателя достигает порога уровня задания внешний триггер выключает ШИМ сигнал.

Измерение скорости вращения ротора.

Рис 7. BLCD в режиме генератора
Рис 7. BLCD в режиме генератора

Магнитное поле ротора наводит противоЭДС в обмотках статора Рис 7. Частота и амплитуда вырабатываемого напряжения прямо пропорциональна скорости вращения ротора.Зная кол-во пар полюсов BLCD мотора и электрическую частоту вращения можно рассчитать механическую скорость вращения ротора.Например для 1000Гц и 10пар полюсов механическая частота вращения будет 100Гц.

Переключение,задержка размагничивания ,переход через ноль.

Рис 8. Работа таймеров генерация ШИМ сигнала,ток в обмотках.
Рис 8. Работа таймеров генерация ШИМ сигнала,ток в обмотках.

Исходя из того что каждый мотор имеет свою индуктивность обмоток.Ток в обмотках может достигать нуля с некоторой задержкой на каждом шаге коммутации Рис 10. Это событие называется задержкой размагничивания и является отправной точкой для определения перехода через ноль . Напряжение противоЭДС измеряется в момент когда ток в не подключенной фазе достигает нуля, после задержки размагничивания Рис 11.

Рис 9. ПротивоЭДС определение перехода через ноль
Рис 9. ПротивоЭДС определение перехода через ноль
Рис 10. Время размагничивания ,ток в обмотке падает не стразу
Рис 10. Время размагничивания ,ток в обмотке падает не стразу

Время размагничивания может задаваться по разному. В виде таблицы для диапазонов скоростей(как в моем варианте),либо основываясь на времени шага помноженным на константу.

Рис 11. Время размагничивания = 3
Рис 11. Время размагничивания = 3

Определение перехода через ноль.

Рис 12. Измерение противоЭДС двигателя
Рис 12. Измерение противоЭДС двигателя

Когда верхний ключ T1 включен Рис 12. напряжение в нейтрали двигателя относительно GND становится Vbus/2. Если T1 выключен то напряжение нейтрали становится равным нулю.Переход через ноль может быть обнаружен как во время T1ON так и T1OFF. Библиотека для моей платы умеет измерять противоЭДС только когда T1OFF и фаза С не подключена. Когда таймер который формирует ШИМ для ключей считает вверх, ключ Т1 выключен напряжение в средней точке становится равно нулю и после времени размагничивания можно измерять напряжение противоЭДС на не подключенной фазе. Тут рассмотрено измерение для одного из 6 шагов, но таким же образом выполняются измерение для остальных шагов.

Процедура запуска.

Рис 13. фаза выравнивания и линейный разгон
Рис 13. фаза выравнивания и линейный разгон

Чтобы начать управлять BLCD двигателем в бездатчиковом режиме.Амплитуда противоЭДС должна достигнуть определенного порога, для обработки на микроконтроллере. Она зависит от скорости вращения ротора, т.е. необходимо разогнать ротор до необходимой скорости.Следующие шаги необходимы для запуска мотора для перехода на закрытый тип управления по контролю противоЭДС: 1. фаза выравнивания 2. фаза линейного разгона. Фаза выравнивания-ротор перемещается в специальное положение которое предшествует следующему шагу.Для этого подается фиксированный ток,что провоцирует повернутся ротор в ближайшую позицию пары полюсов.Если двигатель должен начать вращаться с 1 шага то фаза выравнивания заставляет его повернутся к 6 шагу.

Линейный разгон - мотор стартует с фиксированным током.Частота вращения постепенно нарастает когда она достигает определенного заданного значения (красная точка Рис 13. ) и когда счетчик переходов через ноль насчитает определенное их значение, происходит переход на бездатчиковое управление зеленая точка.

Версию библиотеки можно увидеть в файле 6step_Lib.c (v1.0.0). Основные параметры которым необходимо уделить внимание находятся в следующем файле MC_SixStep_param.h , можно изменить такие параметры как чило пар полюсов,стартовый ток,порог противоЭДС, параметры ПИ регулятора,время выравнивания, скорость двигателя и др.

Рис 14. Скорость ускорения и кол-во шагов
Рис 14. Скорость ускорения и кол-во шагов

График Рис 14. показывает разницу между разными значениями параметра АСС.На каждом шаге генерируется новое значение скорости.Возникает ошибка обратной связи по скорости, если система управления достигает значения параметра максимального количества шагов до перехода на замкнутую бездатчиковую.Такое может быть если значение ускорения (АСС)сильно маленькое чтобы достигнуть вовремя требуемой скорости для перехода на бездатчиковое управление.

Работа и устройство библиотеки от ST.

Управление электродвигателем разделено на 3 задачи которые выполняются с разной периодичностью.

Рис 15. Задачи 1ms цикла SysTick низкий приоритет
Рис 15. Задачи 1ms цикла SysTick низкий приоритет

Низко приоритетная задача за нее отвечает системный таймер. Тут выполняются такие задачи как:

*обработка потенциометра задания скорости вращения . *расчет значений ПИ регулятора. *фаза выравнивания только на момент ее выполнения. *управление скоростью, задание тока в виде ШИМ сигнала на основе значений ПИ регулятора для компаратора драйвера Рис 5.( ШИМ сигнал предварительно сглаживается конденсатором). *обработка ошибок обратной связи по скорости и др.

Рис 16. Задачи среднего приоритета TIM6
Рис 16. Задачи среднего приоритета TIM6

Задача среднего приоритета Рис 16. реализована на таймере 6. Начинает выполнятся после фазы выравнивания, зависит от скорости вращения двигателя,а именно частоты обнаружения переходов через 0. MC_SixStep_NEXT_step()-генерирование следующего номера шага. MC_SixStep_TABLE()-задание ШИМ сигнала для каждой из обмоток на основании номера шага. MC_SixStep_ARR_step() - начальный разгон до перехода на закрытый цикл по противоЭДС.

Рис 17. Высокий приоритет TIM1
Рис 17. Высокий приоритет TIM1

Задача высшего приоритета-выполнена на TIM1 Рис 17., который генерирует 3x канальный ШИМ сигнал для управления драйвером двигателя. Хочу отметить, что ширина импульса программно не изменяется и настраивается на первом этапе инициализации всей периферии.

Рис 18.
Рис 18.

Таймер работает в режиме счета вверх\вниз ­­и выступает в качестве триггера для АЦП. При переполнении когда таймер считает вверх и при обнулении когда таймер считает вниз, вызывается callback функция окончания преобразования АЦП Рис 18. При счете вверх выполняется измерение противоЭДС MC_ADCx_SixStep_Bemf() и перерасчет времени шага MC_SixStep_ARR_Bemf(). Делается это на основании предыдущего значения переполнения TIM6 и значения его счетчика c момента последнего шага, до обнаружения перехода через 0 в не подключенной фазе.Значение переполнения таймера 6 (время_шага) будет подкорректировано так чтобы переход через ноль происходил в середине шага.

Рис 19. Выбор номера канала АЦП в зависимости от номера шага,изменение ШИМ на для каждого из шагов
Рис 19. Выбор номера канала АЦП в зависимости от номера шага,изменение ШИМ на для каждого из шагов

Для измерений задействованы регулярные каналы, так как данные кладутся в один регистр,то номер активного канала для измерения противоЭДС меняется в зависимости от номера шага Рис. 19 в следующей функции MC_SixStep_TABLE(uint8_t step_number){}.

При счете вниз АЦП обрабатываются другие события такие как ток двигателя,температура,напряжение на шине и потенциометр. Как я понял в моем варианте обрабатывается только потенциометр.

Cхемы.

Подключение датчиков тока к операционным усилителям
Подключение датчиков тока к операционным усилителям
Подключения датчика температуры,энкодера,шунтов, потенциометра регулировки оборотов и измерение напряжения шины питания
Подключения датчика температуры,энкодера,шунтов, потенциометра регулировки оборотов и измерение напряжения шины питания
Подключение драйвера L6230,конфигурация шунтов, измерение противоЭДС
Подключение драйвера L6230,конфигурация шунтов, измерение противоЭДС
Распиновка разъемов
Распиновка разъемов

Всем спасибо за просмотр,оценку и комментарии.Скоро выйдет видео на эту тему .