Проблемы измерения токов в Motor Control Demo на К1946ВК035

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Ответить
lukegluke
Сообщения: 8
Зарегистрирован: 16 апр 2026, 14:35
Предприятие: -

Проблемы измерения токов в Motor Control Demo на К1946ВК035

Сообщение lukegluke »

Приветствую. Хотелось бы понять, а тестировался ли код по управлению BLDC моторами Motor Control Demo (MCD) для МК ВК035 на реальном железе?
А то мы не можем победить измерение токов, у нас К1946ВК035 в связке с TI DRV8305, уже просто лампочки подключили вместо мотора - все фазы адекватно выдаются, а вот измерения токов какая-то шляпа: вместо красивых картинок по мануалу, шумные и кривые картинки. Вот в режиме U/f (все три фазы измеряемые в отличие от оригинального кода):
photo_2026-05-29_18-40-00.jpg
photo_2026-05-29_18-40-00.jpg (275.84 КБ) 507 просмотров
Вместо красивой картинки как в мануале:
photo_2026-05-29_18-39-55.jpg
photo_2026-05-29_18-39-55.jpg (165.01 КБ) 507 просмотров
Ну и при настройке регуляторов тока в режиме удержания аналогично, при этом на некоторых углах (theta_elec) вообще случается какой-то разнос измерений. И дело именно в показаниях, на выдаче всё нормально. На 10КГц ШИМ чуть лучше, чем 20КГц.
photo_2026-05-29_18-36-46.jpg
photo_2026-05-29_18-36-46.jpg (127.01 КБ) 507 просмотров
Может у кого-нибудь есть опыт успешного измерения токов и запуска векторного управления на МК ВК035?
lukegluke
Сообщения: 8
Зарегистрирован: 16 апр 2026, 14:35
Предприятие: -

Re: Проблемы измерения токов в Motor Control Demo на К1946ВК035

Сообщение lukegluke »

Разобрались в итоге! Как обычно произошла череда наложившихся друг на друга обстоятельств.

Изначально пробовали с двигателем на своей, собранной на коленке, плате-драйвере (измерения токов шунтовое, шунты в нижних ключах). Картинка токов при простом вращении U/f была сколько-то адекватная, но кривоватая:
1.jpg
1.jpg (169.51 КБ) 465 просмотров
При переходе к настройке регуляторов в режиме удержания тока как-то уже совсем плохо:
2.jpg
2.jpg (208.83 КБ) 465 просмотров
Т.к. из-за недостатка опыта подозревали в первую очередь свою криворукость, заказали DRV8305EVM и для наглядности фаз подключили лампочки вместо мотора. Последнее было роковой ошибкой). Как нам правильно указали:
лампочки - это активная нагрузка, чистый R. Ток там будет меняться на периоде ШИМ, и не просто меняться, а протекать максимальным при открытых ключах на периоде ШИМ и становиться нулевым когда внутри периода ШИМ ключи не прикладывают напряжение (нулевой вектор напряжения). Схема измерения токов для электродвигателя ожидает то, что будет индуктивная нагрузка - электродвигатель. А именно будет обеспечиваться тот факт, что на периоде ШИМ ток изменяется слабо - индуктивность, как накопитель энергии, стабилизирует ток.
Так что вернулись к работе с двигателем уже с DRV8305EVM с теми же картинкам 1,2.

Заметили странность в коде: показания АЦП усредняются по 4 точкам равномерно на всём периоде ШИМ. Т.е. 3 дополнительных измерения проводятся уже после момента включения нижнего ключа, при чём это не опечатка в одном месте, упоминается несколько раз. Собственно прямое противоречие тому, что указано в документации на MCD:
Для совместимости программного кода с разными типами инверторов применяется лишь одно измерение тока на одном периоде ШИМ.
Исправили, убрали вообще настройки перезапусков и стало всё хорошо (ещё сделали PWM0->ETPS_bit.SOCAPRD = 1, т.к. непонятно зачем там 2 в оригинале). Всё чётко, картинки чистые, всё как по мануалу. Продвинулись дальше, векторное управление работает 👍.

p.s. На заметку, ещё одна ошибка-расхождение кода с документацией, это применение смещения АЦП. Согласно документации:
Это смещение задается в тех единицах измерения, в которых возвращает значение сам модуль АЦП, т.е. смещение может быть в диапазоне -4095…+4095.
А в оригинальном коде применяется смещение к уже сдвинутым на 16бит измерениям из-за этого значения ноля как раз на грани int16 и автоматическое смещение творит дичь перескакивая через overflow.
Нужно исправить так, чтобы применялось до сдвига:

Код: Выделить всё

p->Imeas_a = p->IaGainNom * ((p->IA_temp + p->Imeas_a_offset) << 4);
p->Imeas_b = p->IbGainNom * ((p->IB_temp + p->Imeas_b_offset) << 4);
Это всё касается V_adc.c v 2.0 25/03/2016, что идёт с VectorIDEv1.3.3. Если что, ошибки также актуальны, как минимум и для K1921VK028.
ea
Администратор
Сообщения: 121
Зарегистрирован: 10 окт 2014, 09:08

Re: Проблемы измерения токов в Motor Control Demo на К1946ВК035

Сообщение ea »

Добрый день.
Проект Motor Control Demo (MCD) для МК ВК035 на реальном железе тестировался при управлении асинхронными двигателями (не BLDC). Сам проект Motor Control Demo (MCD) - разработка НПФ "Вектор" (https://motorcontrol.ru/)
Ответить

Вернуться в «32-разрядные микроконтроллеры»