roboforum.ru

Технический форум по робототехнике.

Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

Модераторы: 1970DenisT, Dmitry__

Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

dccharacter » 25 июл 2013, 03:49

Так, надоело постоянное тро-ло-ло. Объявляем десятилетие изучения BLDC моторов. Взываю к духу учителя. Желающие присоединяются.

2nd_Gen_Prius_Transaxle.jpg
2nd_Gen_Prius_Transaxle.jpg (17.9 КиБ) Просмотров: 432352


оглавление:
Теория
-Теория
-Аппноты, хаутушки, мануалы
-linvinus - подробно об управлении двигателем

Двигатели
-Двигатель бессенсорный высокооборотистый
-Двигатель сенсорный высокооборотистый
-Двигатель сенсорный низкооборотистый (в т.ч. и "удерживающий")
- перемотка BLDC под свои нужды
- самодельные BLDC

Контроллеры
-Самодельные контроллеры/драйверы
-Покупные контроллеры с перепрошивкой

Управление с ПК
-Управляющее ПО (контроль, измерения, настройка)

Механизмы на основе BLDC
- BLDC Сервоприводы

Dmitry__ писал(а):
Myp писал(а):вопрос, скока магнитиков клеить на ротор?

Есть книга, гуглить "BrushlessPermanentMagnetMotorDesignVersion2".
Еще есть онлайн калькуляторы, типа:
http://www.bavaria-direct.co.za/scheme/calculator/
https://www.emetor.com/edit/windings/

Для меня самое понятное соотношение: 1, 2 или 4 магнита на одну группу полюсов (группа = 3 полюса). Т.е. те соотношения которые не дают пульсаций гармоник в калькуляторе при нажатии кнопки "advanced".
Например: 12s16m, 12s8m, 18s12m, 18s6m и.т.д. Подбирать так: Число слотов делим на 3 и умножаем на 1, 2 или 4.
Последний раз редактировалось dccharacter 12 июн 2016, 08:07, всего редактировалось 2 раз(а).

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 24 май 2016, 14:14

открытый проект векторное управление BLDC мотором на FPGA (используется софтварный процессор, программа управления на Си) https://github.com/madcowswe/Servo
разработчик пытается перенести на STM32F4


http://vedder.se/2015/01/vesc-open-source-esc/
...

Oskar Weigl wrote 05/11/2016 at 10:18

Hey! I am very aware of VESC, and I am in contact with the guy [Benjamin]. In fact, the FOC code that is in the VESC, I wrote (originally at least).

Cheers (:

Последний раз редактировалось linvinus 24 май 2016, 21:56, всего редактировалось 1 раз.

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

ilalexey » 24 май 2016, 16:24

linvinus писал(а):открытый проект векторное управление BLDC мотором на FPGA..

Просто бомба. Уже начинаю хотеть. На такой штуке можно смд раскладывалку сделать.

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 26 май 2016, 18:29

Мотор от cd-roma с редуктором? :)
http://www.aliexpress.com/item/5V-12V-5 ... 07906.html

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 04 июн 2016, 22:37

Долго делал свой "идеальный привод", если кому интересно подробности сборки в моём блоге post355124.html#p355124

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 11 июн 2016, 11:39

немного теории и моего опыта для тех кто захочет управлять бесколлекторным мотором при помощи абсолютного энкодера.

Для понимания происходящего обязательно понимание векторного управления - преобразования Парка/Кларка. тут есть ссылка post351030.html#p351030
Если кто не в курсе, то преобразование Кларка позволяет перейти от 3х фазного двигателя к двух фазному, а преобразование Парка позволяет привести всё в систему координат ротора.
Т.е. будучи в системе координат ротора мы сразу знаем какой вектор тока нужно подать чтобы получить необходимый нам момент и компенсировать противоэдс.

Систему координат ротора можно получить разными способами, я использую абсолютный энкодер AS5045.
Энкодер даёт механическое положение ротора, а нам нужно положение в электрических градусах, поэтому переводим данные энкодера в электрические градусы (с учётом пар полюсов) (я говорю "электрические градусы" для упрощения восприятия, в формулах все углы в радианах)

MFPhase = (M_PI*(float)BLDC_RIGHT->config->PolePairs/(float)(AS5045_max/2)) * (float)enc_right;

в моём случае PolePairs = 11, AS5045_max = 4096
MFPhase - положение в электрических градусах.

Теперь когда мы в системе координат ротора мы можем точно сказать какой вектор нужно задать чтобы обеспечить максимальный момент для этого положения, как ни странно, ток должен опережать ротор на 90 градусов.
Добавим 90 градусов к нашему текущему положению и далее при помощи обратного преобразования Парка + svpwm получим правильный ток который будет вращать мотор.
MFPhase += (90.0 * (M_PI/180.0));

Пример кода, (есть в первых версиях библиотеках STM32 FOC) который отвечает за этот участок

Stat_Volt_alfa_beta.qV_Component1 = (int16_t) ( sin(MFPhase) * (float)(power) );
Stat_Volt_alfa_beta.qV_Component2 = (int16_t) ( cos(MFPhase) * (float)(power) );
SVPWM_IcsCalcDutyCycles(Stat_Volt_alfa_beta);

где power это int16_t (-32767 .. 32766) - сила тока которую мы подаём в мотор, это знаковая величина отрицательное значение будет вращать мотор в обратную сторону, так что всё управление мотором сводится к управлению этой величиной, как в обычном моторе постоянного тока.

Есть ещё одна тонкость, поскольку датчики у меня самодельные, их положение никак не согласовано с положением ротора, прилепил как получилось (подробности сборки в моём блоге)

(говорю упрощённо)
Дело в том что положение ротора задаётся при помощи 3х фазного ШИМ, ему на вход мы подаём электрические градусы и мощность,
нужно чтобы положение ротора, которое мы получаем в результате того что подали на вход ШИМ переобразователя, совпадало с положением которое сообщает энкодер.
Другими словами если мы подадим на вход ШИМ преобразователя электрический угол "0" градусов и мощность 30% ротор займёт соответствующее положение, а вот датчик будет сообщать отличный от "0" угол, поэтому чтобы получить "0" нам нужно от значения угла с энкодера вычесть то что он показывает.

Для того чтобы вычислить угол рассогласования ШИМ и энкгодера я делаю так, принудительно устанавливаю ротор в статическое положение
MFPhase=0;
power = 8000;
Stat_Volt_alfa_beta.qV_Component1 = (int16_t) ( sin(MFPhase) * (float)(power) );
Stat_Volt_alfa_beta.qV_Component2 = (int16_t) ( cos(MFPhase) * (float)(power) );
SVPWM_IcsCalcDutyCycles(Stat_Volt_alfa_beta);

включаю данные отладки и смотрю какой угол в электрических градусах показывает энкодер, обратите внимание что если в этот момент покрутить двигатель руками, он будет перескакивать из одной статичной точки в другую, но энкодер будет сообщать одно и тоже положение в электрических градусах (точнее фазу, если привести значения в промежуток от 0 до 2PI то значения будут совпадать) +- погрешность энкодера.

у меня за весь механический оборот положение отличается на +- 5 электрических градусов.
Если кто подумал что это "плохая" точность могу вас ещё немного порадовать :)
Датчик имеет задержку, т.е. то значение которое мы получили после того как считали по SPI уже отстает от реального, и чем выше скорость тем сильнее отстаёт, в документации на датчик есть рекомендация как компенсировать это
рассогласование, я этого не делал пока.
Но не смотря на это мотор крутится и даёт неплохой момент.

Таким образом приведённая выше формула получения электрических градусов немного изменяется

MFPhase = ((M_PI*(float)BLDC_RIGHT->config->PolePairs/(float)(AS5045_max/2)) * (float)enc_right) - (BLDC_RIGHT->config->SensorDsplacementAngle);

Строго говоря датчики позволяют прописать это смещение себе в память, но программирование датчиков AS5045 заморочено поэтому я вычитаю в программе.



Пара слов о неприятном, есть такая гадкая штука как "залипание", в этой ветке уже обсуждали, и приводили статьи где предлагаются решения этой проблемы.
Это залипание сильно мешает нам когда мы управляем мотором на малых оборотах, если бы его не было то тот вектор тока который мы подали в статор задавал бы точное положение ротора, на практике к вектору тока добавляется ещё вектор залипания, в результате в каких то положениях ротор отстаёт от точного положения а в каких то опережает.
Бороться с этим можно двумя путями,
1) сменить мотор на PMSM
BLDC_PMSM.jpg

2) программно

Я борюсь программно, для этого
1) замеряем и запоминаем силу залипания для каждого положения ротора (360 значений) в электрических градусах, на сверх низких оборотах.
потом это значение мы сразу будем подсовывать в наш пид регулятор как "предсказание".
2) пид регулятор, он неплохо борится с этой напастью если сделано управление по положению а на вход pid подавать ошибку положения а не скорость.

Получился вот такой результат

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 04 июл 2016, 01:04

В продаже появились маленькие мотор-колёса 4.5" примерно 11.5(см)
вот тут есть фото внутренностей https://mklkt.ru/blog/Masterskaa_Electr ... aksov.html

гуглится по названию Replacement Motor Wheel For 4.5" Smart Electric Self Balancing Scooter
стоимость около $50 за штуку. (а за 180 можно взять новый скутер с доставкой на таких колёсах)

тут на форуме verial пытается приспособить такие моторы для роботов.

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 13 июл 2016, 21:52

Подыскивал я модели для директ драйва
может кому то ещё пригодится.
Меня интересовали модели 40-50мм диаметром многополюсные до 2000р за шт.
DYS BE3608-460KV http://www.ebay.com/itm/DYS-BE3608-460K ... 2097592969
01.jpg


Sunnysky X4108S 380KV http://ru.aliexpress.com/item/SUNNYSKY- ... 97447.html
HTB1mM79JXXXXXXDXXXXq6xXFXXXR.jpg


Попутно набрёл на довольно интересный коннектор
Amass MT60 3-Pole 3.5mm Brushless Motor ESC RC Pair Connector Plug Socket 60A UK
s-l500.jpg


Ещё в этот диапазон укладывается модель A4008 380KV но она мне не понравилась качеством намотки, а перематывать я не планировал.

Tarot 380KV 4008,
TL68P07 6S 380KV 4008 (4108 380KV TL68P07)

чуть больше 2000р неплохой MT4114 330KV


Есть в природе ещё вот такие , GoolRC 5008 340KV 12N14P внешний диаметр 57мм
s-l1600.jpg


или 5010 360KV

EMAX GB4008 66KV 1200Р
Последний раз редактировалось linvinus 24 июл 2016, 22:56, всего редактировалось 1 раз.

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

linvinus » 24 июл 2016, 21:50

Секрет китайского экономического чуда
Maytech-5208-80T-3-Axis-Brushless-Hollow-shaft-Gimbal-Motor-for-Sony-photography.jpg

Maytech-5208-80T-3-Axis-Brushless-Hollow-shaft-Gimbal-Motor-for-Sony-photography2.jpg

Maytech-5208-80T-3-Axis-Brushless-Hollow-shaft-Gimbal-Motor-for-Sony-photography3.jpg

Maytech-5208-80T-3-Axis-Brushless-Hollow-shaft-Gimbal-Motor-for-Sony-photography4.jpg

интересно сколько получает Мастер Ма, и Мастер Ли

Собственно, к чему я это?
Смотрел что по чём на ebay и на алиэксперсс, есть качественные моторы, видна нормальная намотка, а есть вот такие поделки.
Вот ещё экземпляр, диаметр статора 40мм.
Quality-iPower-GBM4008-150T-Hollow-Shaft-iFlight-Gimbal-Brushless-Motor-f-5N-7N.jpg


Брендовые моторы: (судя по сайтам)
Dualsky
Sunnysky
EMAX

Добавлено спустя 2 часа 7 минут 58 секунд:
Китайцы молодцы, очень компактный драйвер BLDC (бессенсорное управление)
http://www.emaxmodel.com/fpv-escs/light ... a-esc.html

на базе 8ми битного https://www.silabs.com/products/mcu/8-b ... -A-GM.aspx
с нормальным драйвером ключей https://www.monolithicpower.com/Product ... ors/MP6530
и цена всего $14
Можно заливать открытую прошивку BlHeli http://www.parkflyer.ru/ru/blogs/view_entry/13189/ (см комменты)
А вот официальная инфа http://www.emaxmodel.com/blog/AmandaChen/

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

Myp » 22 авг 2016, 16:52

Господа
а что скажете про перемотку комповых кулеров?

намотать проводом потолще, заменить пару транзисторов на более мощные
схема там примитивная, датчик холла включает транзисторы обмоток.
статор большой, крыльчатка на паре подшипников.
IMG_20160822_154851.jpg

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

Madf » 22 авг 2016, 17:32

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

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

dccharacter » 22 авг 2016, 17:32

А цель?

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

Myp » 22 авг 2016, 17:49

учитывая:
Myp писал(а):крыльчатка на паре подшипников.

Madf писал(а):все его пластиковые, скользящие подшипники и корпус в утиль уйдут

не актуально.

dccharacter писал(а):А цель?

дуодецикоптер делаю :lol:

просто интересно, а будет ли оно лучше дуть?
ну и ваще у меня теперь 3д принтер нормальный есть, я могу забубенную крыльчатку распечатать и новый корпус :)
Вложения
IMG_20160822_164549.jpg

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

ilalexey » 22 авг 2016, 18:06

Не круто :)
Делай из сидирумовских брушлесов(и при этом каждый перематывай) - вот это будет крутизна немерянная :)
..а потом Индийский штрих в конце(типа когда они цветным песком долго рисуют, а потом это всё дело на ветер пускают) :)

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

Myp » 22 авг 2016, 18:16

да чёто нету ящика сидирумов :( есть тока эти какашки

Re: Разборки с брушлесами - обобщаем инфу по BLDC-двигателям

ilalexey » 22 авг 2016, 18:30

Без всякой перемотки, если связать вместе, будет не плохая очистительная станция в курилку.
А если плоскость сборки согнуть параболой, её "3d" можно будет назвать(и продать за дорого). :)


Rambler\'s Top100 Mail.ru counter