PMSM управление двигателем KUGOO серии S

Автор dv_com, 14 Июнь 2020 в 10:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dv_com

Захотелось разобраться с микроконтроллером STM32F103C8T6. И решил это сделать построив PMSM контроллер управления двигателем электросамоката KUGOO S3.
Начал с простого:
1. Плата дисплея.
Схема:
Спойлер


Печатная плата:
https://yadi.sk/d/kR3Mwsb9vh9PcQ
Прошивка:
https://yadi.sk/d/68eLITMdSF5dmw
Настройки:
Спойлер
Предназначена для работы с кастомным контроллером МК. Предусмотрена работа и со стоковым контроллером, но для этого на кабеле навесным монтажом собирается простенькая схема-переходник:
Спойлер


Без проблем работает со стоковым контроллером. Все заявленное реализовано, кроме, конечно, режима PMSM и реверса.
Протокол совпадает с протоколом взаимодействия с контроллером МК первого поколения описанного уважаемым Sonar в этой теме https://electrotransport.ru/index.php?topic=55186.msg1385898#msg1385898
Круиз контроль в режиме "кастом" включается или при равномерной езде в течении времени, задаваемого в настройках, или кратковременным нажатием кнопки питания. Отключается нажатием тормоза, газа, кнопки питания.
Присутствуют часы реального времени с подпиткой от батарейки 3В, подключаемой в разъем J5.
Для слабых батарей или при желании ограничить мощность можно задать максимальные ток  и скорость для каждого из режимов скорости.
Поддерживаются 3 вида излучателей;
1.Со встроенным генератором 36 В. Распаиваются R8, R9, Q2,  JMP2. Элементы С22-С25, R22,R24,R25,JMP1,DA3 не устанавливаются!. В настройках режим стандарт.
2..Со встроенным генератором 5 В. Распаиваются R8, R9, Q2,  JMP1. Элементы С22-С25, R22,R24,R25,JMP2,DA3 не устанавливаются!  В настройках режим стандарт.
3. Динамик 5В. Распаиваются С22-С25, R22,R24,R25,DA3. Элементы JMP1, JMP2, R8, R9, Q2 не устанавливаются!  В настройках режим PWM.
Настройки звука: Стандарт - используется излучатель с встроенным генератором.
PWM - Сейчас это генератор звуковой частоты для динамиков и излучателей без встроенного генератора. В дальнейшем можно будет и поинтереснее придумать, пока только тупо сигнал.
При замыкании контактов J1 звучит прерывистый сигнал низкой тональности. Я посадил на переключатель, при езде по тротуарам предупреждает пешеходов о приближении.
Память может быть FM24CL16, FM24CL32, FM24CL64 - у этих не ограниченный ресурс, допустимы также чипы серии 24LC, но у них ресурс ниже, а перезапись километража идет каждую секунду. Для памяти FM24CL16 нужна перемычка JMP3, для остальных не надо.

Выражаю свою благодарность vlad-2015. Мне очень помогла его тема с кастомной прошивкой стокового контроллера. https://electrotransport.ru/index.php?topic=58493.msg1619007#msg1619007

Плата контроллера МК:
Спойлер
//В переделке

Печатная плата:
//В работе

И вот здесь засада.
За основу взял https://blog.avislab.com/stm32-pmsm_ru/
Прошивка:
//В работе


dv_com


При текущих параметрах крутится, гудит и жрет ток. Явно что-то не так. Любые изменеия параметров ведут только к ухудшению. Чего-то я не допонимаю. Теоретически должно работать, но не хочет)))). Осциллографа пока нет, посмотреть, что по факту генерит. На неделе найду, а пока только теоретические поиски косяка.... Может кто подскажет - где засада скрывается?

Sonar

[user]dv_com[/user], спасибо за тему! Дело нужное. Если не трудно - перезалейте, пожалуйста, скрины схем с бОльшим разрешением. Не прочитать номиналы и назначение выводов. Может что интересное и для себя подчерпну.
Смотрел фото контроллера мотор-колеса, но не понял, он влезает в стандартный корпус куговского контроллера?
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

inwin

[user]dv_com[/user], можно коротко по разным типам управлениям двигателя?
1. трапеция
2. синус
3. вектор

dv_com


dv_com

Цитата: inwin от 14 Июнь 2020 в 11:32можно коротко по разным типам управлениям двигателя?
1. трапеция
2. синус
3. вектор
1. Трапеция: https://radiohlam.ru/synhro_bldc_1/
Реализовано в первом приближении, но не интересно. Обвязку защит не делал, пока нет основы смысла нет...
2. Синус: https://blog.avislab.com/stm32-pmsm_ru/
На данный момент пытаюсь реализовать эту идею.
3. Векторное: Слишком сложное, пока не рассматривал, но в идеале нужно идти к нему. Не уверен, что этот проц потянет. Если кто подскажет с чего начать, буду пробовать.

Sonar

[user]dv_com[/user], мне при отладке своего контроллера очень помог логический анализатор. Может быть он и вам больше поможет, чем осциллограф? Управление на драйвера всё равно идет цифровое, да и с холлов приходят логические состояния.
А для векторного управления надо ставить, как минимум, два датчика тока на две любые фазы двигателя, а ток третьей фазы вычисляется программно. Кто-то не заморачивается и использует три датчика тока, по датчику на каждую фазу.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 14 Июнь 2020 в 12:03Sonar
Да, наверное. Уже на подходе, 16-канальная приставка к компу. Уже в Новосибирске растаможилась, скоро должна придти.

Добавлено 14 Июнь 2020 в 12:12

Цитата: Sonar от 14 Июнь 2020 в 12:03А для векторного управления надо ставить, как минимум, два датчика тока на две любые фазы двигателя, а ток третьей фазы вычисляется программно. Кто-то не заморачивается и использует три датчика тока, по датчику на каждую фазу.
Вменяемых примеров не нашел, пока теорию изучаю. Как буду думать, что готов - попробую реализовать))

dv_com

Ради интереса попробовал запустить дисплеи от NOKIA 1100:
Спойлер

Заказал печатную плату, как придет попробую реализовать, может получше читаемость будет...

edw123

#9
Цитата: inwin от 14 Июнь 2020 в 11:32
[user]dv_com[/user], можно коротко по разным типам управлениям двигателя?
1. трапеция
2. синус
3. вектор
2. синус - можно вывести на обоих типах управления: и векторный и скалярный, в недорогих контроллерах - скалярный синус. Трапецию на векторном вроде не делают, хотя тоже можно, если магнитная система у мотора больше подходит. При векторном типе управляется одновременно по трем фазам, при скалярном - по двум. Форма тока: трапеция или синус или ещё что, это не тип управления.

dv_com

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

dv_com

Цитата: Sonar от 14 Июнь 2020 в 11:16Смотрел фото контроллера мотор-колеса, но не понял, он влезает в стандартный корпус куговского контроллера?
Да. Размеры платы  и размещение мосфетов специально взял от родного контроллера.

ssilk

Цитата: dv_com от 14 Июнь 2020 в 12:35как наше колесо с ним пойдет.
Колесу пофиг, главное, что в колесо пихает "электронный коллектор".  Ездят же как то куго М4 и аналогичные на псевдосинусе, он у них FOC называется.
Полноценный синус можно получить только от двуполярного питания. Разумеется, это сильно осложняет разводку и увеличивает количество компонентов.
Поэтому  чистый PMSM управляется сразу тремя фазами, когда на одной фазе положительная полуволна, на второй отрицательная, а третья переходит через ноль.
На одной батарейке сформировать отрицательную полуволну без сложной системы инвертирования невозможно, поэтому делают коммутацию концов обмоток.
Получается, что в любом виде, независимо от формы сигнала, у нас будет BLDC. Но, если сильно интересно, у меня есть настоящий синусный контроллер от шпинделя станка (не частотный инвертор), он как раз на 48 вольт, могу попробовать колесо им крутануть. Правда он на 12000 оборотов..)
Цитата: dv_com от 14 Июнь 2020 в 12:35Пока только хуже
Думаю, что у Вас проблема в сдвиге фаз. Образно говоря, мотор крутится вперед на 99% и на 1% назад, отсюда гул и повышенный расход. Разумеется, проценты могут быть и другие.
В модельных контроллерах это регулируется двумя параметрами, таймингом (некоторая величина, на которую ключ открывается раньше) и компенсацией размагничиванием. Наверное, второе для нас не актуально, слишком маленькие обороты.
Задний привод, пневма 10", 48 вольт х 6А/ч, барабан, свет, звук, искусственный интеллект сто голых баб(©)... Максималка 38 км/ч, пробег 25 км.
odo - 6650 км

dv_com

Цитата: ssilk от 14 Июнь 2020 в 14:04могу попробовать колесо им крутануть.
12 000 как бы многовато))) Интересно сравнить звук и потребление на 500 - 1000 оборотов, дабы понять - имеет ли смысл заморачиваться на синус.
Цитата: ssilk от 14 Июнь 2020 в 14:04Думаю, что у Вас проблема в сдвиге фаз.
Я тоже так думал, пытался регулировать, двигать вперед - назад, нашел оптимальное значение, но оно не идеально. Возможно слишком большой шаг регулировки. Попробую уменьшить.

Sonar

Цитата: dv_com от 14 Июнь 2020 в 14:28имеет ли смысл заморачиваться на синус.

смысл точно имеет. Щелчки при переключениях обмоток точно уйдут совсем, а они дают основной шум при езде. Кстати китайцы для снижения уровня шума при блочной коммутации используют стартовый импульс при каждом переключении состояния холлов. Вы знаете как это работает? Я попробовал такое реализовать на своем контроллере и это, что интересно, действительно дает положительный эффект. Правда у меня этот импульс более растянут, чем на стоке. Пока не разобрался, почему так проихсодит.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 14 Июнь 2020 в 14:38Кстати китайцы для снижения уровня шума при блочной коммутации используют стартовый импульс при каждом переключении состояния холлов. Вы знаете как это работает?
Не в курсе. А что это? Я при каждом переключении состояния холлов просто выставляю коммутацию согласно состояния датчиков. Разницы со стоком не заметил. Надеюсь через неделю придет анализатор, надо будет сравнить графики.

Sonar

[user]dv_com[/user], этот момент я описывал в своем посте в соседней теме: https://electrotransport.ru/index.php?topic=56994.msg1797500#msg1797500

Причем в моем случае ширина этого импульса варьируется от силы тока в данный момент времени. Чем больше ток - тем шире импульс. В стоке этот импульс начинает появляться при токах выше 4 ампер и отключается при токах ниже 3-х ампер и не меняет своей ширины. У меня пока только две мысли на этот счет:
1) Импульс усиливает скорость нарастания тока в обмотке при её включении.
2) Импульс позволяет бороться с резонансными частотами при переключениях.

Сколько не искал в интернете на эту тему - нашел только одну статью, но там происходит постоянный сдвиг ШИМ импульсов по фазе.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Спасибо, почитаю. Я только меняю опережение в зависимости от скорости. Хотя на данный момент первоочередное запустить синус, блочная коммутация скорее запасной режим, а может и вообще не нужен будет.

vlad-2015

#18
Рекомендую посмотреть в сторону R21367 для управления движком. Можно сделать аппаратную отсечку по току, ну и плюшки есть  ;-)

https://www.youtube.com/watch?v=DmxhM0FfwNY&list=PLn9k3eL_sqV1E7KpRa_wQfTC50F78RXlv
Kugoo S2 10S3P (6470 км)
У меня нет решения. Но я восхищен красотой проблемы.

Карапузик

простите а откуда вы берете значение токов в обмотках? просто не нашел.

Карапузик

Цитата: ssilk от 14 Июнь 2020 в 14:04Полноценный синус можно получить только от двуполярного питания. Разумеется, это сильно осложняет разводку и увеличивает количество компонентов.
простите не понял почему? Двуполярное питание используется чтоб исключить мостовую схему включения.

Карапузик

Цитата: Sonar от 14 Июнь 2020 в 12:03Управление на драйвера всё равно идет цифровое, да и с холлов приходят логические состояния.
тут тоже заминка Холы не дают точного положения ротора. Ну и вопрос а нужно-ли векторное управление МК? по мему векторное управление актуально при малом числе полюсов. Но это мое личное мнение

ssilk

Цитата: Карапузик от 15 Июнь 2020 в 06:53простите не понял почему?
Так я же и написал, из за бОльшего количества компонентов и сложности софта. Контроллер получается крупнее, а главное - дороже. Потому и не кусаютделают. Нет, делают, конечно, но не для такого массового сегмента, как дешевые электросамокаты.  Ну и, делать отрицательную полуволну переворотом концов обмоток не по фэншую, я считаю. Во первых коммутации, чем их больше, тем больше потерь.  А во вторых, (я это дело успешно прогулял) что то связанное с потерями в статоре... Если рассматривать один зуб, то нормально, а в комплексе чего то там возникает.
Цитата: Карапузик от 15 Июнь 2020 в 08:19Холы не дают точного положения ротора.
Везде написано, что дают...) Как думаете, зачем мы количество магнитов указываем? Положение вычисляется не по одиночным импульсам а по комбинации. 30 магнитов и 3 холла дают 90 отсчетов на оборот, для тихоходных колес этого достаточно. А поскольку магниты имеют строгое чередование, а холлы строгое расположение, то общую картину можно заранее запихать в прошивку и сравнивать.
В общем, автор давал ссылки на источники, а там это все написано.
Задний привод, пневма 10", 48 вольт х 6А/ч, барабан, свет, звук, искусственный интеллект сто голых баб(©)... Максималка 38 км/ч, пробег 25 км.
odo - 6650 км

Карапузик

Цитата: ssilk от 15 Июнь 2020 в 09:11Везде написано, что дают...) Как думаете, зачем мы количество магнитов указываем? Положение вычисляется не по одиночным импульсам а по комбинации. 30 магнитов и 3 холла дают 90 отсчетов на оборот, для тихоходных колес этого достаточно. А поскольку магниты имеют строгое чередование, а холлы строгое расположение, то общую картину можно заранее запихать в прошивку и сравнивать.
Холы дадут момент переключения а для векторного управления необходимо знать положение ротора с достаточной точностью то есть гораздо точнее чем 6 отсчетов  на период

Добавлено 15 Июн 2020 в 09:36

Цитата: ssilk от 15 Июнь 2020 в 09:11Ну и, делать отрицательную полуволну переворотом концов обмоток не по фэншую, я считаю.
зачем переворотом концов обмоток? мостовая схема включения она уже реализована в контроллере
другое дело , хоть теория и интересная  но смысл применения векторного управления в многополюсных двигателях по моему сомнителен

dv_com

Цитата: vlad-2015 от 14 Июнь 2020 в 21:17Рекомендую посмотреть в сторону R21367 для управления движком. Можно сделать аппаратную отсечку по току, ну и плюшки есть
Первоначальная цель изучить возможности stm32F103, а чтобы еще и польза была - на конкретной задаче)). Отсечка по току и здесь есть. Если на этом проце толком не получится, тогда уже можно будет смотреть альтернативу.
Цитата: Карапузик от 15 Июнь 2020 в 06:45простите а откуда вы берете значение токов в обмотках?
Здесь общий датчик тока DA4 на ACS712-20. А компаратор DA5 на LM339 при 20A аварийно отключает генерацию ШИМ. Все остальное програмно.

Карапузик

[user]dv_com[/user], не зная тока в обмотках трудно(слишком) создать правильный вектор магнитного поля в статоре.
А можно узнать зачем нужно векторное управление именно в
этом МК? Многополюсном?

dv_com

Цитата: Карапузик от 15 Июнь 2020 в 10:46А можно узнать зачем нужно векторное управление именно в
этом МК?
Честно говоря я не уверен, что нужно именно векторное. Скорее синусоида. Цель - уменьшить шум, увеличить КПД.

Карапузик

Цитата: dv_com от 15 Июнь 2020 в 11:29именно векторное. Скорее синусоида
Да я тоже так предположил

edw123

Цитата: dv_com от 15 Июнь 2020 в 11:29
Честно говоря я не уверен, что нужно именно векторное. Скорее синусоида. Цель - уменьшить шум, увеличить КПД.
Векторное поднимет упавшее от синусности: обороты и мощность. Вроде так. Можно конечно просто батарею повысоковольтнее, но вектор может и легко ослабление поля делать.

Карапузик

Цитата: edw123 от 15 Июнь 2020 в 12:06Векторное поднимет упавшее от синусности: обороты и мощность
наверное надо сперва определить что значит векторное управление. Насколько я знаю векторное управление это создание в статоре магнитного поля с вращающимся вектором магнитной индукции. Или не так? Преимущества? Можно регулировать и частоту вращения и момент. Смысла делать это на самокате не вижу, пусть момент ограничивается оборотами и мощностью МК. Чтоб колесо было тише действительно достаточно синусоиды которая исключит дискретное изменение вектора индукции вследствии чего и снизится шум.

ssilk

Вот, сляпал простенький стенд
Спойлер

И даже покрутил колесо.
Первичные результаты:
Минимальные обороты - 140, максимальные - 890. Не могу сказать что и как, сам драйвер для двухполюсного бесколлекторника инраннера, и какие там настройки ХЗ, может ему не подходят сопротивления/индуктивности...
Шум... Харатерного для трапеции треска(щелчков) я не услышал, гула или воя на больших оборотах тоже нет. Но эксперимент не могу считать успешным, может там и есть какой то электронный звук, но его заглушает грохот сухих подшипников, это колесо 4000 км проехало. В планах промыть и перенабить смазкой подшипники и покрутить еще разок. Разумеется видео со звуком будет. Снял бы сегодня, но у меня телефон почему то не пишет звук.
Задний привод, пневма 10", 48 вольт х 6А/ч, барабан, свет, звук, искусственный интеллект сто голых баб(©)... Максималка 38 км/ч, пробег 25 км.
odo - 6650 км

edw123

Цитата: ssilk от 15 Июнь 2020 в 09:11
Положение вычисляется не по одиночным импульсам а по комбинации. 30 магнитов и 3 холла дают 90 отсчетов на оборот
Магниты на 60 электроградусов, кмк. Мало это для точного определения.

ssilk

Цитата: edw123 от 15 Июнь 2020 в 23:04Мало это для точного определения.
Для постоянного вращения хватит. Нам же не надо поворачивать колесо на заданный угол. В нашем случае, мы имеем простейший сервопривод на угол 360 градусов с бесконечным циклом. А Холлы создают обратную связь по положению, чтобы поддерживать момент на заданных оборотах. Грубо говоря, контроллер постоянно пинает мотор на какой то угол, а Холл сообщает контроллеру долетел магнит до него или перелетел. Разница между сигналами с Холлов дает представление о положении ротора. В любой момент времени только два Холла могут быть в активном состоянии, да и то с небольшой задержкой и с фронтами в разные стороны([user]Sonar[/user],  выкладывал таблицу состояний Холлов)  Из за разницы между количеством полюсов и количеством магнитов, ротор, как бы, постоянно догоняет магнитное поле статора, сигналы Холлов чередуются в определенном порядке и контроллер "знает" когда надо пинать очередной раз и какую фазу... Остальное - синхронизация и PID-контроллеры.  Очень просто в этом разобраться, если упростить мотор до 3х полюсов и 4х магнитов. 
Задний привод, пневма 10", 48 вольт х 6А/ч, барабан, свет, звук, искусственный интеллект сто голых баб(©)... Максималка 38 км/ч, пробег 25 км.
odo - 6650 км

edw123

Цитата: ssilk от 15 Июнь 2020 в 23:55
Для постоянного вращения хватит. Нам же не надо поворачивать колесо на заданный угол. В нашем случае, мы имеем простейший сервопривод на угол 360 градусов с бесконечным циклом.
Ну тогда точно не нужен векторный. :-P
Вон в дуюновской теме попробуйте старые посты почитать, где резольвер делали для векторного контроллера и какую точность нужно было для нормальной работы - практически поградусную.

ssilk

Поменял подшипники в колесе, не стал заморачиваться с разборкой/чисткой, к тому же, на одном большой осевой люфт.
В общем, первое видео со старыми подшипниками, второе с новыми...
https://youtu.be/UX4_fn0oSaI
https://youtu.be/AVT0yoU7Lgk
Задний привод, пневма 10", 48 вольт х 6А/ч, барабан, свет, звук, искусственный интеллект сто голых баб(©)... Максималка 38 км/ч, пробег 25 км.
odo - 6650 км

dv_com

[user]ssilk[/user], Ага, спасибо. Что и требовалось доказать - на синусе отлично работает. А то тут форумов начитался - на одних пишут, что моторы BLCD на синусе коряво работают, другие - что китайцы делают одинаковые движки, а разница только в схеме управления. На выходных попробую опережением поиграть на десятых долях угла. Поградусно не получается убрать скрежет.

dv_com

У меня вопрос к знающим людям. В примере, который я взял за основу таблица синусов выглядит так:
Спойлер
{
      {0,       0,      221},
      {8,       0,      225},
      {17,      0,      229},
      {25,      0,      232},
      {33,      0,      236},
      {42,      0,      239},
      {50,      0,      241},
      {58,      0,      244},
      {66,      0,      246},
      {74,      0,      248},
      {82,      0,      250},
      {90,      0,      252},
      {98,      0,      253},
      {105,     0,      254},
      {113,     0,      254},
      {120,     0,      255},
      {128,     0,      255},
      {135,     0,      255},
      {142,     0,      254},
      {149,     0,      254},
      {155,     0,      253},
      {162,     0,      252},
      {168,     0,      250},
      {174,     0,      248},
      {180,     0,      246},
      {186,     0,      244},
      {192,     0,      241},
      {197,     0,      239},
      {202,     0,      236},
      {207,     0,      232},
      {212,     0,      229},
      {217,     0,      225},
      {221,     0,      221}, //32
      {225,     0,      217},
      {229,     0,      212},
      {232,     0,      207},
      {236,     0,      202},
      {239,     0,      197},
      {241,     0,      192},
      {244,     0,      186},
      {246,     0,      180},
      {248,     0,      174},
      {250,     0,      168},
      {252,     0,      162},
      {253,     0,      155},
      {254,     0,      149},
      {254,     0,      142},
      {255,     0,      135},
      {255,     0,      127},
      {255,     0,      120},
      {254,     0,      113},
      {254,     0,      105},
      {253,     0,      98},
      {252,     0,      90},
      {250,     0,      82},
      {248,     0,      74},
      {246,     0,      66},
      {244,     0,      58},
      {241,     0,      50},
      {239,     0,      42},
      {236,     0,      33},
      {232,     0,      25},
      {229,     0,      17},
      {225,     0,      8},
      {221,     0,      0}, //64
      {225,     8,      0},
      {229,     17,     0},
      {232,     25,     0},
      {236,     33,     0},
      {239,     42,     0},
      {241,     50,     0},
      {244,     58,     0},
      {246,     66,     0},
      {248,     74,     0},
      {250,     82,     0},
      {252,     90,     0},
      {253,     98,     0},
      {254,     105,    0},
      {254,     113,    0},
      {255,     120,    0},
      {255,     127,    0},
      {255,     135,    0},
      {254,     142,    0},
      {254,     149,    0},
      {253,     155,    0},
      {252,     162,    0},
      {250,     168,    0},
      {248,     174,    0},
      {246,     180,    0},
      {244,     186,    0},
      {241,     192,    0},
      {239,     197,    0},
      {236,     202,    0},
      {232,     207,    0},
      {229,     212,    0},
      {225,     217,    0},
      {221,     221,    0}, //96
      {217,     225,    0},
      {212,     229,    0},
      {207,     232,    0},
      {202,     236,    0},
      {197,     239,    0},
      {192,     241,    0},
      {186,     244,    0},
      {180,     246,    0},
      {174,     248,    0},
      {168,     250,    0},
      {162,     252,    0},
      {155,     253,    0},
      {149,     254,    0},
      {142,     254,    0},
      {135,     255,    0},
      {128,     255,    0},
      {120,     255,    0},
      {113,     254,    0},
      {105,     254,    0},
      {98,      253,    0},
      {90,      252,    0},
      {82,      250,    0},
      {74,      248,    0},
      {66,      246,    0},
      {58,      244,    0},
      {50,      241,    0},
      {42,      239,    0},
      {33,      236,    0},
      {25,      232,    0},
      {17,      229,    0},
      {8,       225,    0},
      {0,       221,    0}, //128
      {0,       225,    8},
      {0,       229,    17},
      {0,       232,    25},
      {0,       236,    33},
      {0,       239,    42},
      {0,       241,    50},
      {0,       244,    58},
      {0,       246,    66},
      {0,       248,    74},
      {0,       250,    82},
      {0,       252,    90},
      {0,       253,    98},
      {0,       254,    105},
      {0,       254,    113},
      {0,       255,    120},
      {0,       255,    128},
      {0,       255,    135},
      {0,       254,    142},
      {0,       254,    149},
      {0,       253,    155},
      {0,       252,    162},
      {0,       250,    168},
      {0,       248,    174},
      {0,       246,    180},
      {0,       244,    186},
      {0,       241,    192},
      {0,       239,    197},
      {0,       236,    202},
      {0,       232,    207},
      {0,       229,    212},
      {0,       225,    217},
      {0,       221,    221}, //160
      {0,       217,    225},
      {0,       212,    229},
      {0,       207,    232},
      {0,       202,    236},
      {0,       197,    239},
      {0,       192,    241},
      {0,       186,    244},
      {0,       180,    246},
      {0,       174,    248},
      {0,       168,    250},
      {0,       162,    252},
      {0,       155,    253},
      {0,       149,    254},
      {0,       142,    254},
      {0,       135,    255},
      {0,       128,    255},
      {0,       120,    255},
      {0,       113,    254},
      {0,       105,    254},
      {0,       98,     253},
      {0,       90,     252},
      {0,       82,     250},
      {0,       74,     248},
      {0,       66,     246},
      {0,       58,     244},
      {0,       50,     241},
      {0,       42,     239},
      {0,       33,     236},
      {0,       25,     232},
      {0,       17,     229},
      {0,       8,      225}  //191
}

С ней вообще не удалось запустить. Поградусно двигал точку входа относительно датчиков холла на весь электрический оборот, толку нет - вообще не крутит, на месте дергается.

Почитал форумы, рассчитал свою таблицу:

Спойлер
{
      {128,   17,      239},
      {132,   15,      237},
      {136,   13,      234},
      {140,   12,      232},
      {144,   10,      230},
      {148,   8,      227},
      {152,   7,      224},
      {156,   6,      222},
      {160,   5,      219},
      {165,   3,      216},
      {168,   3,      213},
      {172,   2,      209},
      {176,   1,      206},
      {180,   1,      203},
      {184,   0,      200},
      {188,   0,      196},
      {191,   0,      192}, //16
      {195,   0,      189},
      {198,   0,      185},
      {202,   1,      181},
      {205,   1,      178},
      {208,   2,      174},
      {212,   2,      170},
      {215,   3,      166},
      {218,   4,      162},
      {221,   5,      158},
      {223,   7,      154},
      {226,   8,      150},
      {229,   9,      146},
      {231,   11,      141},
      {234,   13,      137},
      {236,   15,      133},
      {238,   17,      129}, //32
      {240,   19,      125},
      {242,   21,      121},
      {244,   23,      116},
      {245,   26,      112},
      {247,   28,      108},
      {248,   31,      104},
      {250,   34,      100},
      {251,   37,      96},
      {252,   40,      92},
      {253,   43,      88},
      {253,   46,      84},
      {254,   49,      80},
      {254,   53,      76},
      {255,   56,      72},
      {255,   60,      69},
      {255,   63,      65}, //48
      {255,   67,      61},
      {255,   70,      58},
      {254,   74,      54},
      {254,   78,      51},
      {253,   82,      48},
      {253,   86,      45},
      {252,   90,      41},
      {251,   94,      38},
      {250,   98,      35},
      {248,   102,   33},
      {247,   106,   30},
      {245,   110,   27},
      {244,   114,   25},
      {242,   118,   22},
      {240,   123,   20},
      {238,   127,   18}, //64
      {236,   131,   16},
      {234,   135,   14},
      {231,   139,   12},
      {229,   143,   10},
      {226,   148,   9},
      {223,   152,   7},
      {221,   156,   6},
      {218,   160,   5},
      {215,   164,   4},
      {212,   168,   3},
      {208,   172,   2},
      {205,   176,   1},
      {202,   179,   1},
      {198,   183,   0},
      {195,   187,   0},
      {191,   191,   0}, //80
      {188,   194,   0},
      {184,   198,   0},
      {180,   201,   0},
      {176,   205,   1},
      {172,   208,   1},
      {168,   211,   2},
      {165,   214,   3},
      {160,   217,   4},
      {156,   220,   5},
      {152,   223,   6},
      {148,   226,   8},
      {144,   228,   9},
      {140,   231,   11},
      {136,   233,   13},
      {132,   235,   14},
      {128,   238,   16}, //96
      {123,   240,   18},
      {119,   242,   21},
      {115,   243,   23},
      {111,   245,   25},
      {107,   247,   28},
      {103,   248,   31},
      {99,   249,   33},
      {95,   250,   36},
      {90,   252,   39},
      {87,   252,   42},
      {83,   253,   46},
      {79,   254,   49},
      {75,   254,   52},
      {71,   255,   55},
      {67,   255,   59},
      {64,   255,   63}, //112
      {60,   255,   66},
      {57,   255,   70},
      {53,   254,   74},
      {50,   254,   77},
      {47,   253,   81},
      {43,   253,   85},
      {40,   252,   89},
      {37,   251,   93},
      {34,   250,   97},
      {32,   248,   101},
      {29,   247,   105},
      {26,   246,   109},
      {24,   244,   114},
      {21,   242,   118},
      {19,   240,   122},
      {17,   238,   126}, //128
      {15,   236,   130},
      {13,   234,   134},
      {11,   232,   139},
      {10,   229,   143},
      {8,      227,   147},
      {7,      224,   151},
      {5,      221,   155},
      {4,      218,   159},
      {3,      215,   163},
      {2,      212,   167},
      {2,      209,   171},
      {1,      206,   175},
      {1,      202,   179},
      {0,      199,   183},
      {0,      195,   186},
      {0,      192,   190}, //144
      {0,      188,   194},
      {0,      185,   197},
      {1,      181,   201},
      {1,      177,   204},
      {2,      173,   207},
      {2,      169,   210},
      {3,      165,   214},
      {4,      161,   217},
      {5,      157,   220},
      {7,      153,   222},
      {8,      149,   225},
      {10,   145,   228},
      {11,   141,   230},
      {13,   137,   233},
      {15,   132,   235},
      {17,   128,   237}, //160
      {19,   124,   239},
      {21,   120,   241},
      {24,   116,   243},
      {26,   112,   245},
      {29,   107,   246},
      {32,   103,   248},
      {34,   99,      249},
      {37,   95,      250},
      {40,   91,      251},
      {43,   87,      252},
      {47,   83,      253},
      {50,   79,      254},
      {53,   76,      254},
      {57,   72,      255},
      {60,   68,      255},
      {64,   64,      255}, //176
      {67,   61,      255},
      {71,   57,      255},
      {75,   54,      255},
      {79,   50,      254},
      {83,   47,      254},
      {87,   44,      253},
      {90,   41,      252},
      {95,   38,      251},
      {99,   35,      250},
      {103,   32,      249},
      {107,   29,      247},
      {111,   27,      246},
      {115,   24,      244},
      {119,   22,      242},
      {123,   20,      241}, //191

};

С ней хоть и со скрежетом, но крутит.

Вопрос: какая таблица правильней???

edw123

Цитата: dv_com от 17 Июнь 2020 в 10:08
на синусе отлично работает. А то тут форумов начитался - на одних пишут, что моторы BLCD на синусе коряво работают
Это Вы просто по верхам прошлись.

dv_com

Цитата: edw123 от 17 Июнь 2020 в 10:27Это Вы просто по верхам прошлись.
Не все сразу. Потихоньку вникаю)))

Sonar

[user]dv_com[/user], правильней первая таблица, так как она использует модификацию генерации синуса для однополярного источника питания. Вторая таблица - просто три синуса для трех фаз. Надо смотреть, что реально идет на драйвера ключей. Подозреваю, что у вас управление ключами не комплементарное. То есть если для одной фазы задавать значение, скажем, 127 - то в этом случае эта фаза должна 50% времени быть подключена к питанию, а оставшиеся 50% к земле.
Кстати когда я поверхностно изучал работу синуса - мне стало интересно, а что нужно делать с синусом, с ключами, когда газа нет? :) А то получится, что курок газа будет работать и как газ и как тормоз.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 17 Июнь 2020 в 10:57правильней первая таблица
Лады, попробую на выходных ее еще покопать на меньшем шаге сдвига... Пока теорию поищу.
Цитата: Sonar от 17 Июнь 2020 в 10:57а что нужно делать с синусом, с ключами, когда газа нет?
Я в этом случае прекращаю генерацию ШИМ, закрываю все ключи. Вполне себе по инерции дальше крутится.

Sonar

Цитата: dv_com от 17 Июнь 2020 в 11:14Я в этом случае прекращаю генерацию ШИМ, закрываю все ключи. Вполне себе по инерции дальше крутится.
А на что в этом случае ориентируетесь? На силу тока потребления или значение уровня газа?
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 17 Июнь 2020 в 11:21А на что в этом случае ориентируетесь?
Уровень газа = 0. Если частичный сброс, то на данный момент плавно снижаю обороты, пока они не будут соответствовать текущему уровню газа. Лучше на это время вообще отключать, но пока не решил по какому принципу. А вообще это проблема второго плана, сейчас главное заставить нормально крутиться, а потом уже навесы для различных режимов...

dv_com

Пришел анализатор уровня. Использовал таблицу синусов
Цитата: Sonar от 17 Июнь 2020 в 10:57правильней первая таблица, так как она использует модификацию генерации синуса для однополярного источника питания
. Крутится, но со скрипом https://yadi.sk/d/M8_Ieujfy5wrOg .
Графики с анализатора:
Спойлер

Номера каналов соответствуют расположению транзисторов на схеме сверху вниз. Сигналы снимались со входов 2 и 3 драйверов ключей.
Может кто подскажет - что не так?


Sonar

[user]dv_com[/user], что-то не вижу схемы.. Может я пропустил в этой теме? Пропустил  :facepalm:
В любом случае если брать первых два канала, то они соответствуют верхнему и нижнему плечу одной из фаз. И тут же бросается в глаза, что на тот период, когда на фазе не должно быть ШИМ (должна быть постоянная подтяжка к массе) - одно из плеч фазы в активном состоянии, а на втором присутствует ШИМ. Судя по таблице - такого быть не должно.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 28 Июнь 2020 в 14:03что-то не вижу схемы
Схема в 1-м посте. И да, там идут попарно верхние и нижние плечи.

Sonar

[user]dv_com[/user], спасибо, уже нашёл схему.
Я правильно понял, что канал 0 соответствует входу драйвера HIN? Тогда это в корне не верно. Получается попытка постоянной подтяжки (на то время, когда должна быть постоянная подтяжка к массе) фазы двигателя к питанию.
Ну и остается вторая проблема: во время активного состояния верхнего плеча, идет ШИМ сигнал на нижнее плечо, что провоцирует короткое замыкание по питанию. Это если судить по скрину с анализатора.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

[user]Sonar[/user], Да, у меня тоже создалось ощущение, что верхние ключи инверсно работают, а с нижними ерунда какая-то)). Теперь, по крайней мере, картинка есть, буду разбираться с настройками таймера.

dv_com

Вроде разобрался. Перепутал выходы ШИМ верхних и нижних ключей (((. Плюс настройки таймера подкорректировал. На макетной плате получились такие сигналы:
Спойлер
Осталось плату переразвести, да попробовать что в реале получится...

Sonar

[user]dv_com[/user], и опять не верно. В момент, когда шимится верхний ключ - нижний ключ должен шимиться в противофазе верхнему с учетом dead-time.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 01 Июль 2020 в 09:17В момент, когда шимится верхний ключ - нижний ключ должен шимиться в противофазе верхнему с учетом dead-time.
Вроде бы для уменьшения потерь допустимо шимить только одно плечо. Утверждать не берусь, насколько это лучше... Впрочем, ладно. Вот ШИМ на оба плеча:
Спойлер

Это с теорией согласуется?

Sonar

[user]dv_com[/user], да, это уже то, что должно быть.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Цитата: Sonar от 01 Июль 2020 в 12:49да, это уже то, что должно быть.
Спс. Значит на этом пока и остановимся. На выходных проверю.

usup

А никто не пробовал анализировать принцип работы сяоми контролёра?мне кажется можно много полезной инфы узнать

Sonar

[user]usup[/user], был бы этот контроллер на руках... А то говорят, что там аж векторное управление. Что-то не верится.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

Какая то ерунда получается
Спойлер
Цифровые каналы 6 и 7 плюс аналоговый - сигналы с датчиков холла. На 2-м дикие помехи, увеличение емкости конденсатора фильтра частично помехи убирает, но и размазывает фронт сигнала.
Спойлер
Если на BLCD управлении это не очень критично (хотя лишние переключения тоже плохо), то на PMSM сбивается индекс и сани вообще никуда не едут))
Есть идеи как эти помехи отфильтровать?
 

Sonar

[user]dv_com[/user], для подавления помех применяют RC цепочки между выходами сигналов от датчиков холла и входом в микроконтроллер (для наших движков и скоростей это 3,3 кОм и 4,7 нФ). Потом слышал, что у STM-овских контроллеров можно активировать режим триггера для входов. Ну и ещё, как вариант, программный ВЧ фильтр.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 26705km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

dv_com

[user]Sonar[/user], На входе триггер Шмидта включен. RC цепочкой вчера пол дня играл - полностью помехи не убирает. Тут вот сейчас подумал - а насколько у меня питание чистое? Надо будет осциллографом глянуть. А то может там нужно фильтры подбирать, а не со следствием бороться..