Подключение отладочной платы с ARM-процессором к предрайверу силового моста. Настройка программного кода ШИМ-драйвера для безопасного питания секций статора 3-х фазного двигателя переменного тока без обратных связей

Рабочие файлы: [Шаг 1: ШИМ-драйвер] [Шаг 2: ШИМ +АЦП +ПДП] [Шаг 3: Регуляторы тока]
[Шаг 4: Вкл. мК и Мост] [Шаг 5: ARM PMSM FOC-control] [IQdiv и IQatan2]

Подлючение отладочной платы с процессором к силовой части

Отладочная плата с ARM-процессором и силовая часть для питания двигателя переменного тока – это отдельные технические модули. На этапе разработки целесообразно питать названные устройства от разных источников. Плату с процессором – от USB-порта компьютера. Силовую часть – от собственного источника питания. Если питание процессора или силовой части пропадает, то ни один из модулей не должен выйти из строя. Необходима так же возможность обновления прошивки флэш-памяти процессора без отключения питания силового моста. Решается обозначенная задача в следующей последовательности.

  1. Все оконечные каскады выходов микропроцессора, формирующие сигналы управления для драйверов ключей силового моста, следует перевести в режим открытого стока с подтягивающим потенциал pull-up-резистором (замещающим верхний транзистор). Для решения этой задачи необходимо изменить код в функции GPIO_Configuration (см. листинг файла main.c). В результате, если включить плату с микропроцессором и не подавать питание на силовую часть, токи портов будут ограничены pull-up-резисторами. Обратная ситуация так же не приведет к короткому замыканию в портах.
  2. Активный уровень у драйверов силовых ключей может быть либо высокий, либо низкий. Если таймер ARM-процессора используется в качестве ШИ-модулятора, то дополнительные опции позволяют настроить активный уровень и состояние выходов при программном отключении ШИ-модулятора. На первый взгляд – это привлекательная возможность. Но соединение модулей по схеме "открытый сток" приводит к затягиванию одного из двух фронтов. Это не кажется критичным, поскольку драйверы ключей имеют триггер Шмидта на входе. Но если активный уровень низкий, то затягивается процесс отключения транзистора и сокращается бестоковая пауза. Если драйвер включает транзистор при высоком уровне на входе, то затягивается процесс включения транзистора и бестоковая пауза увеличивается. Для решения задачи выбора активного уровня и состояния при отключении ШИ-модулятора необходимо изменить код в функции TIM_Configuration (см. листинг файла main.c).
  3. Выводы микропроцессора, которые выполняют альтернативную функцию аналогового входа, защищаются от перенапряжения диодами. Если первой включается силовая часть, то возможна перегрузка выхода операционного усилителя. Для предотвращения короткого замыкания в цепи передачи сигнала следует установить токоограничивающий резистор.
  4. ...
  5. ...

Измените код программы, согласно инструкциям представленным выше. Отключите векторную модуляцию. Измените код машины состояний для низкоприоритетных операций так, чтобы выполнялся опрос кнопки, и, при нажатии, включался / отключался ШИ-модулятор. Проверьте код инициализации таймера, и убедитесь в том, что он отключает ШИ-модулятор (ШИ-модулятор должен включаться лишь при нажатии кнопки). После кода определения переменной Rotor.Angle установите временную заглушку. Зафиксируйте значение переменной, добавив строку кода: Rotor.Angle(_IQ(15/360));. Обновите прошивку флэш-памяти процессора. Подключите плату с процессором к силовому модулю. Подайте питание только на плату. Контролируйте напряжение питания процессора, +3 В. Нажмите кнопку. Убедитесь в том, что питающее напряжение не изменилось. Проверьте осциллографом выходы ШИ-модулятора. Убедитесь в том, что pull-up-резисторы ограничивают ток выходов и амплитуда сигналов существенно меньше 3 В. Скважность управляющих сигналов для стоек моста разная. Проверьте, не перепутаны ли сигналы (нет ли ошибок в монтаже). Нажмите кнопку. Убедитесь в том, что на все драйверы силовых ключей приходит неактивный уровень. Последовательно с силовым мостом включите токоограничивающий резистор (страховка от ошибки) и подайте на силовую часть питание. Проконтролируйте осциллографом правильно ли переключаются силовые транзисторы. Отключите питание силовой части. Удалите в программе заглушку переменной Rotor.Angle.

Поскольку у силового моста отсутствует нагрузка, после прошивки флэш-памяти и запуска программы её исполнение можно останавливать. Самостоятельно решите задачу коррекции смещений в каналах АЦП, измеряющих фазные токи. Вам необходимо менять код определения переменных adc.Single[6] и adc.Single[7]. Значения выборок должны иметь нормальное распределение со средней величиной равной нулю.

Подключение двигателя к силовому мосту. Замыкание контура тока

Первое подключение двигателя к силовому мосту – это опасный этап разработки привода. Ошибки возможны разные. Можно перепутать датчики фазных токов. Можно ошибиться со знаками обратных связей контуров тока. Поэтому программу нужно модифицировать так, чтобы аварийная ситуация не возникла. С этой целью определяют предельные значения сигнала для ШИ-модулятора, при которых потребляемый двигателем ток не может увеличиться до неприемлемой величины (ограничивается активным сопротивлением его обмотки). Активировав эти предельные значения, замыкают обратные связи и настраивают контур регулирования тока.

Подготовьте программу к медленному вращению поля статора двигателя без обратных связей по току. Установите в задатчике скорости малое значение SetPnt.gS = _IQ(0.005). Входы инверсного преобразователя Парка подключите к задачтчику: dq2ab.d = &SetPnt.GdV; и dq2ab.q = &SetPnt.GqV;. Установите малую амплитуду для модулирующего сигнала SetPnt.GdV = _IQ(0.0), SetPnt.GqV = _IQ(0.008). Прошейте флэш-память процессора. Двигатель к мосту не подключайте. Включите питание. Проконтролируйте осциллографом, что стойки моста переключаются с коэффициентом заполнения близким к 50 %, девиация коэффициента заполнения мала, и её период близок к секунде. Отключите питание, подключите к мосту вентильный двигатель, включите питание. Убедитесь в том, что ротор двигателя медленно вращается вслед за полем статора. Зафиксируйте потребляемый ток. Если его величина меньше или больше 0.15 от номинального, то измените амплитуду модулирующего сигнала. Остановите двигатель, заблокировав кнопкой ШИ-модулятор. Измените переменную SetPnt.GqV (исходное значение было равно 0.008*(1<<24)). Вновь включите двигатель. Зафиксируйте потребляемый ток. При необходимости повторите операцию.

Листинг 1. Фрагмент кода файла main.c

    // -----------------------------------------------------
    //  Ограничиваем сигналы для ШИ-модулятора
    // -----------------------------------------------------
    if (ab2uvw.u > _IQ(0.99999)) ab2uvw.u = _IQ(0.99999);
    if (ab2uvw.u < _IQ(-1.0000)) ab2uvw.u = _IQ(-1.0000);
    if (ab2uvw.v > _IQ(0.99999)) ab2uvw.v = _IQ(0.99999);
    if (ab2uvw.v < _IQ(-1.0000)) ab2uvw.v = _IQ(-1.0000);
    if (ab2uvw.w > _IQ(0.99999)) ab2uvw.w = _IQ(0.99999);
    if (ab2uvw.w < _IQ(-1.0000)) ab2uvw.w = _IQ(-1.0000);

...

...

План дальнейшей разработки программы

  1. Подлючение отладочной платы с процессором к силовому мосту
  2. Запуск двигателя в синхронном режиме с низкой частотой вращения
  3. Отладка наблюдателя скорости и углового положения ротора СДПМ
  4. Отладка контура регулирования скорости. Запуск бездатчикового ЭП

...

1.07.2015