roboforum.ru

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

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

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

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

Сообщение dccharacter » 25 июл 2013, 03:49

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

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


оглавление:
Теория
-Теория
-Аппноты, хаутушки, мануалы
-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 раз(а).
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение leprud » 23 сен 2013, 20:38

dccharacter писал(а):Нужен мне силовой блок. Хочется либо купить готовый, либо сварганить самому из рассыпухи.

Гляньте на EvvGC и ее исходники https://github.com/EvvGC/Firmware
Изображение
leprud
 
Сообщения: 174
Зарегистрирован: 16 май 2013, 09:26
Откуда: Moscow
прог. языки: декларативные

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

Сообщение dccharacter » 23 сен 2013, 22:47

Кажися то, что надо. Вся платка замечательная. Спасибо!
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение leprud » 23 сен 2013, 22:50

Если что - она кажись есть в барахолке рцдезигна.
А, и еще рекомендую почитать про нее - на некоторых ревизиях платы на транзисторы надо допаивать резисторы.
leprud
 
Сообщения: 174
Зарегистрирован: 16 май 2013, 09:26
Откуда: Moscow
прог. языки: декларативные

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

Сообщение Angel71 » 23 сен 2013, 23:25

до 1.3 вроде
20130714 - Updated vpre1.3ce2 componets R5, R13, R14 from 1k resistors to 10k to better match the STM spec
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение leprud » 23 сен 2013, 23:27

1.3 готовую не купишь - только самому делать/заказывать.
Я про это
IMPORTANT!!!
About MOSFETs burning problem on PCB v1.2.
Looks like mosfets sometimes burns even if GPIO is configured immediately after power on.
Current solution for this is to add 1-3,3K resistors on BSS123.

Изображение
leprud
 
Сообщения: 174
Зарегистрирован: 16 май 2013, 09:26
Откуда: Moscow
прог. языки: декларативные

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

Сообщение dccharacter » 23 сен 2013, 23:32

а, ну ноги-то за уши притягивать.... это мы проходили. хорошо если только мосфеты вылетят.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение avr123.nm.ru » 24 сен 2013, 12:47

афро контроллер работает и в статике обычно. 3 в 5 преобразовать соотв преобразователем уровней.
Вложения
преобразователи логических уровней и изолированые mkpochtoi.jpg
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Nesenin » 29 сен 2013, 00:25

какой чудесный моторка http://www.thingap.com/technology/

Изображение
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

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

Сообщение avr123.nm.ru » 29 сен 2013, 11:46

Действительно красиво.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение linvinus » 13 окт 2013, 13:35

Тут целая серия 28 полюсных моторов для квадрокоптеров http://www.foxtechfpv.com/dualsky-produ ... 9_210.html
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

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

Сообщение b580130 » 06 ноя 2013, 02:29

Здравствуйте Уважаемые.
:?:

Нужна практическая помощь по управлению мотором BLDC (4 полюсный)
Сразу готов сказать, что не очень силен в программировании ( использую Codevision).

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

Так вот хочу управлять синусом, подобрал аппноут AVR435 , где используется AT90PWM3, но вот хоть убейте (мож тупой) не понимаю реализацию алгоритма вычисления угла чтобы перенести на xmega. Много смотрел всякой литературы но так ничего путного не придумал. Скорее всего не до конца понимаю математику процесса.

Я говорю именно об алгоритме, понимаю приблизительно как это работает, но на уровне программы не могу реализовать.

Если необходима доп. информация готов предоставить.
b580130
 
Сообщения: 1
Зарегистрирован: 06 ноя 2013, 01:44

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

Сообщение Dmitry__ » 06 ноя 2013, 23:39

Расскажу про алгоритм DDS:
Создаешь таблицу одного периода синуса, чтоб укладывалось в 256 байт (чтоб не проверять переполнение указателя)
Код: Выделить всёРазвернуть
;таблица синуса 1 периода в дополнительном коде
SinTab:
   .db   0, 1, 2, 4, 5, 6, 7, 9
   .db   10, 11, 12, 13, 15, 16, 17, 18
   .db   19, 20, 21, 22, 24, 25, 26, 27
   .db   28, 29, 30, 31, 32, 33, 34, 34
   .db   35, 36, 37, 38, 39, 39, 40, 41
   .db   42, 42, 43, 44, 44, 45, 45, 46
   .db   46, 47, 47, 47, 48, 48, 49, 49
   .db   49, 49, 49, 50, 50, 50, 50, 50
   .db   50, 50, 50, 50, 50, 50, 49, 49
   .db   49, 49, 49, 48, 48, 47, 47, 47
   .db   46, 46, 45, 45, 44, 44, 43, 42
   .db   42, 41, 40, 39, 39, 38, 37, 36
   .db   35, 34, 34, 33, 32, 31, 30, 29
   .db   28, 27, 26, 25, 24, 22, 21, 20
   .db   19, 18, 17, 16, 15, 13, 12, 11
   .db   10, 9, 7, 6, 5, 4, 2, 1
   .db   0, 255, 254, 252, 251, 250, 249, 247
   .db   246, 245, 244, 243, 241, 240, 239, 238
   .db   237, 236, 235, 234, 232, 231, 230, 229
   .db   228, 227, 226, 225, 224, 223, 222, 222
   .db   221, 220, 219, 218, 217, 217, 216, 215
   .db   214, 214, 213, 212, 212, 211, 211, 210
   .db   210, 209, 209, 209, 208, 208, 207, 207
   .db   207, 207, 207, 206, 206, 206, 206, 206
   .db   206, 206, 206, 206, 206, 206, 207, 207
   .db   207, 207, 207, 208, 208, 209, 209, 209
   .db   210, 210, 211, 211, 212, 212, 213, 214
   .db   214, 215, 216, 217, 217, 218, 219, 220
   .db   221, 222, 222, 223, 224, 225, 226, 227
   .db   228, 229, 230, 231, 232, 234, 235, 236
   .db   237, 238, 239, 240, 241, 243, 244, 245
   .db   246, 247, 249, 250, 251, 252, 254, 255
EndSinTab:

т.е. получили таблицу с размерностью мощности шим в один байт, каждый байт в таблице - это угол равный 360град./256. 360град - это полный период синусоиды, 256 - это размерность таблицы синуса.
Теперь определяем указатель, например: PWM_STEP_SIN, размерностью один байт, который будет бегать по нашей таблице. Начинаем его крутить с нужной частотой, обзовем PWM_DDS_FREQ (угловая скорость):
Например, каждые 2мс. прибавляем к PWM_STEP_SIN число 3 из PWM_DDS_FREQ. Если мы хотим увеличить скорость, то соотв. прибавляем большее значение. Т.к. PWM_STEP_SIN имеет такую же размерность как сама таблица, то получается автоматический переход с конца периода на начало при переполнении этого регистра. В общем, у нас крутится регистр PWM_STEP_SIN с определенной скоростью, остается считывать данные для трех синусоид сдвинутых относительно друг друга на 120 град.
Например для первой синусоиды считываем данные по адресу [PWM_STEP_SIN] и кидаем в pwm. Для 2-й синусоиды информацию берем из смещенного указателя на 120 градусов: PWM_STEP_SIN + 256*120/360. На асме так:
Код: Выделить всёРазвернуть
   ldi   temp1,0xFF & (256*120/360)   ;считать данные из таблицы для второй синусоиды (+120 градусов)

Для 3-й синусоиды соотв. сдвигаем на 240град. относительно первой: 256*240/360.Имеем 3 синусоиды сдвинутые на 120 град. Частота синусоид зависит от значения PWM_DDS_FREQ. И конечно, надо сопоставлять разрешающую способность таблицы с угловой скоростью PWM_DDS_FREQ. Чтоб PWM_DDS_FREQ не давал приращение к PWM_STEP_SIN по полпериода за раз. Иначе поимеем квадратный синус и прочие умные слова типа алиасинг :)

Вот щаз я особенно покассандрил :D
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение dccharacter » 07 ноя 2013, 03:07

во во, с этим алгоритмом 4 пожарика я и сделал
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение avr123.nm.ru » 21 ноя 2013, 13:34

b580130 писал(а):хочу управлять синусом, подобрал аппноут AVR435 , где используется AT90PWM3, но вот хоть убейте (мож тупой) не понимаю реализацию алгоритма вычисления угла чтобы перенести на xmega.
В исходниках поищите по слову clark вроде.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение linvinus » 21 ноя 2013, 21:40

А я токи наконец то считал.
Измеряю шунтами в верхнем плече, вот что получается
current.png
current.png (7.78 КиБ) Просмотров: 2835

Q-электрические градусы
A,B,C токи в фазах.
Вот теперь ломаю голову что с этим делать, фактически известен ток только в одной фазе.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Пред.След.

Вернуться в КиберЗона - клуб боевых роботов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2