Драйвер бесколлекторного мотора - самоделка или готовый (где, какой)?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Собственно вопрос в сабже.

Задача: требуется универсальный драйвер, желательно для раздельного управления парой моторов по типу gimbal-подвесов, со следующими фичами/параметрами:

1. Подключение моторов с диапазоном kV 50..5000 и/или оборотами 400..30000 rpm;

2. Управляемый контроль тока мотора. Как ограничение по максимальному току, так и оперативное управление предельным током мотора. Диапазон контроля токов 0.5 .. 15А;

3. Контроль температуры двигла (напр. через терморезистор на статоре).

4. Режим синхронной скорости вращения с активным торможением мотора при снижении скорости (чисто автомобильная фича).

5. Возможность очень медленного вращения до 10rpm и фиксации ротора в заданном положении. (фича из gimbal контроллеров)

То есть надо совместить автомобильное и gimbal применение для моторов с малым сопротивлением статора .. то есть принудительно контролировать ток через мотор с заданным ограничением.

Есть что-то готовое на эту тему?

Если нет, то какой камень рекомендуете к применению, желательно для управления 2-я моторами сразу? Из "мег", пока остановился на ATmega32a в корпусе TQFP-44 - вроде хватает ножек.. но это практически 54-56 руб/корпус. Есть варианты дешевле?

Для самоделки от камня требуется:

а) 3 АЦП входа + 1 вход компаратора для поиска перехода фазы через ноль;

б) 1 АЦП вход для контроля общего тока через мотор (1 шунт на суммарном токе через мосфеты фаз);

в) 1 INT вход для контроля температуры терморезистором;

г) 6 можно PWM (можно и программно) выходов для управления мостами фаз мотора.

плюсом, желательно иметь ещё 1 вход АЦП для контроля за питанием, можно один на пару моторов .. но это уже 9-й .. как-бы некуда. Или есть варианты не из "мег"?

Понятно, что чем дешевле - тем лучше. Мне их надо будет сделать 4-8шт. таких... требуется подсказка зала .. :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Забыл ..

д) Интерфейс для связи/программирования: COM, SPI, I2C .. В общем-то "все равно", лишь бы был нормально доступен.. предпочтение видимо к COM-порту.

Ещё забыл: речь идет за многополюсные моторы по схемам 9N12P или 12N14P ..

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

И в очередной раз .. гробовая тишина. Ну и какой смысл тут хоть что-то спрашивать? .. школота, блин. :(

nevkon
Offline
Зарегистрирован: 20.01.2015

Читал что у стм чипов есть встроенные средства для работы с 3-х фазными бесколлекторниками.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Там цена "заоблачная" и токи хилые и это по большей части для sensored моторов. Что в совокупности ограничивает их применение "промышленным" использованием - ещё есть высокие напруги..

В общем, как и ожидал - спецов тут нет ни по одному вопросу.

Развел "универсальную" силовую часть драйвера на базе АО4606 (можно и другие на большие токи, напр. АО4610 их там целое семейство из ок. 20шт на разные токи и напруги) + транзисторный каскад для раскачки верхних плеч, как и на моем DC-драйвере и 2И схеме для нижнего плеча.

2 таких платы для 1 МК смогут поддерживать или 4DC мотора или 2stepper мотора или 2 BLDC мотора.

Доп. плюсы: возможность контроля токов 2-х моторов + возможность контроля температуры 2-4 двиглов.

В качестве МК остановился на ATmega32a-AU в корпусе TQFP-44. У всяких НАНО не хватает ножек для управления 2-я BLDC моторами.

В общем "слоеный пирог" из 3-х плат, позволит управлять 2-4 моторами "пофиг какими" (4DC, 2Stepper, 2BLDC + 1DC), программно настраивать режимы как скоростные, так и контроля по току по типу "серводвигатель" или по COM-порту. Прогнозируемая цена для "самоделки" по деталям - около 200руб на контроллер пары BLDC моторов.. для одной силовой платы + МК управления около 120руб./контроллер, что радует.. :)

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

Детальки заказаны, едут. Моторы - приехали все (1306, 1806, 2212), на перемотке. Пока вожусь с 1306, перемотка на kV=450 I=1.5А/156гр*см .. 42-44 витка на зуб проводом ПЭВ-1 0.19.. влезает, но получается с 3-5 захода.. было: noname 1306 - 3100kV 4-5А/130гр*см 17.5 витков ПЭВ-2 0.25 (типа такой) "внавал". :)

 

a5021
Offline
Зарегистрирован: 07.07.2013

Arhat109-2 пишет:

И в очередной раз .. гробовая тишина. Ну и какой смысл тут хоть что-то спрашивать? .. школота, блин. :(

Не хотят, мерзавцы, ваши хотелки за вас реализовывать? Вот же народ!

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А тишина потому что меня допустим вот это убило наповал:

практически 54-56 руб/корпус. Есть варианты дешевле?
и при этом огромный список хочу-хочу-хочу-хочу-хочу-хочу-хочу-хочу-хочу

Я бы послал вас купить за 6 долларей контроллер от коптеров-
но вы обидитесь, скажете : а где все мои пункты,  с первого по сотый?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

trembo, Верно, ибо не подходит типовой контроллер ни от коптеров, ни от авиа, ни от гимбалов, ни от автомашинок .. надо нечто "чуть-чуть", но не такое. Был-бы готовый контроллер (или кто подсказал) - не было бы темы. :)

а5021, ты опять напился? Чем читал посты? :)

a5021
Offline
Зарегистрирован: 07.07.2013

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Это от отсутствия знаний, вполне нормальная реакция. Помнится мартышкам давали кубик рубика и они через небольшой промежуток времени пытались его разломать .. даже помнится "мем" того времени: "надо продавать кубики Рубика с молотком в нагрузку" :)

В общем, вчерашний штурм интернета по управлению и контроллерам BLDC sensorless моторов принес результаты.

Если кому интересно, подборка полезных ссылок:

http://www.avislab.com/blog/brushless01/ -- целый цикл статей (внизу ссылки), наверное лучшее что вообще нашел по этим моторам и схемам. В т.ч. есть и схема универсального драйвера. От себя - можно дополнить контролем тока и температуры двигла..

http://www.pvsm.ru/fizika/109643 -- классное описание векторного управления "на пальцах". Впрочем оно так и называется. :)

http://we.easyelectronics.ru/amaora/ocenka-polozheniya-rotora-bldc-na-ni... -- способ оценки положения ротора на низкой скорости.

https://geektimes.ru/post/271136/ -- неплохая статья с осцилограммами. понимание процесса управления, неплохо разжевана разница между механическим и электрическим оборотами двигателя.

https://www.youtube.com/watch?v=MfNcHmt_avE -- интересное видео по работе на низких оборотах

В целом, появилось понимание, что ничего невозможного в моих хотелках в общем-то и нет.

a5021
Offline
Зарегистрирован: 07.07.2013

Arhat109-2 пишет:
Это от отсутствия знаний, вполне нормальная реакция.

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так я также как и Вы сижу и тихо пилю этот драйвер. Только в отличии от Вас ещё и публикую результаты найденного и/или сделанного, в отличии от Вас .. ничего просто не прячу под матрацем.

Ну где Вы нашли в первом сообщении стенания? Ищу тех, кому такой драйвер будет интересен, кроме меня, а также ищу СОВЕТОВ как это ЛУЧШЕ сделать.. то что тут советов искать бесполезно по любому мало-мальски непростому вопросу - факт, отраженный вторым постом. Обидно? Ну так че на зеркало пенять-то? :)

P.S. точно также как выкладывал результаты по своей библиотеке, по драйверу I2C, по простому драйверу моторов, по платам на базе ATmega128a, ATmega2560 и др. свои поделки.

Вы-то хоть что-то тут выложили, тайный мастер? :)

a5021
Offline
Зарегистрирован: 07.07.2013

Arhat109-2 пишет:
Так я также как и Вы сижу и тихо пилю этот драйвер. Только в отличии от Вас ещё и публикую результаты найденного и/или сделанного, в отличии от Вас .. ничего просто не прячу под матрацем.

Ваши слова довольно странные. То, что я якобы "прячу под матрацем" вы видели, обсуждали и даже "плюсовали". Теперь, вдруг, бац и полная амнезия. Ну или желание срочно все позабыть.

Цитата:
Вы-то хоть что-то тут выложили, тайный мастер? :)

Да, на форуме выложено несколько моих, полностью законченных, проектов.  Со схемами, фотками, платами, исходниками и прочим. Совершенно точно, что, как минимум, часть из них вы видели. Дальше будете кривляться?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

Тема про BLDC-драйвер с контролем тока, режимами удержания скорости И момента, с контролем температуры двигла и защитами, с режимом удержания мотора на месте и серворежимом работы (низкие скорости плавного вращения) - очень актуальна, как теперь понимаю и НИГДЕ не решена в полной мере.. в отличии от "ещё один контроллер DC-мотора". Собственно, что тогда и произошло - да собрал свои контроллеры так и не дождавшись Вас.

И, кстати, теория векторного управления бездатчиковым бесколлекторным мотором - толком тоже нигде не высвечивается, и как уже понимаю, немцы делиться не особо планируют.. так что, вопрос может иметь не только любительское, но и промышленное назначение.

a5021
Offline
Зарегистрирован: 07.07.2013

Arhat109-2 пишет:
Не, кривляться не буду. Тот самый драйвер, я прождал больше года и даже в общем-то собирался Вам заказать в количестве 4-8шт, помнится.. но так и не увидел ни в той теме ни в иной кода прошивки.. сделать - сделали, в чем и не сомневался .. только вот выложить позабыли.

Что же тогда, по вашему, выложено в сообщении #560 ?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

И что там "содержится"? :)

В посту есть код? Не-а. Это набор команд управления драйвером по I2C и то не факт .. некое описание каких-то регистров .. ни порядка использования ни чьи это регистры.. ниже есть ссылка на рар-файл проекта какого-то ИАР .. может STM8 программируется только в нем, не знаю .. только папка src в нем как была пуста так и осталась, а то что выдается за main.c - "файл содержит недопустимые символы и может быть прочитан неполностью. Открыть все равно?" лучше что получал тогда и сейчас тоже... нафига оно мне?

Ну и что тогда далее обсуждалось у Вас ещё до поста 572? :) Перечитал. Ни тогда ни сейчас не сложилось понимания что это ДОДЕЛАНО и выложено в общий доступ.

Как повторять тем у кого нет ни протеуса ни иаров? Выложите svg файлы под печать ЛУТом + рапскладку, схему и перечень деталек с исходным кодом текстом .. это всё можно выложить напрямую сюда и без яшиных дисков .. каждый сможет снять картинку, отпечатать и наложить на плату .. ЛУТ он и в африке луть.. Ну и исходник .. есть "С" - его можно скомпилять и прошить .. и "иар" не нужен .. а то что выложили Вы - не выкладка, а так "похвальба": "во у меня есть" .. ну есть и есть и то "не факт".

И опять жеж .. тема создана про иной вопрос. Вы чем-то собрались "помочь"? Да ну нафиг .. влезли в тему пофлудить и нахамить, потому как "абыдно панимаишь ли" .. и? Спрашивается нафига, если ПОМОЩИ и СОВЕТОВ от ВАС ровно НУЛЬ и даже бес палочки?

Вы же тем же самым способом опять жеж только подтвердили суть второго поста. Школота. Обидчивая. Не знаю, не умею но абыдна..

 

P.S. Ладно уже .. вопрос с тем драйвером решился уже. Флудить тут не вижу смысла, идите с эсесовцев лайтесь. Может придет кто грамотный, кому вопрос тоже интересен.

a5021
Offline
Зарегистрирован: 07.07.2013

Arhat109-2 пишет:

Вы же тем же самым способом опять жеж только подтвердили суть второго поста. Школота. Обидчивая. Не знаю, не умею но абыдна..

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

Цитата:
Может придет кто грамотный, кому вопрос тоже интересен.

Обязательно придет. Главное ждать и верить. Придет и начнет все ваши хотелки за вас делать и вам на блюдечке выкатывать. 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну пока ждем заинтересованных специалистов, продолжу выкладывать то, что пока сделал:

Силовая часть на базе 4-х АО4606 + 74HC08 + 8 полевых транзисторов, в общем-то все равно каких, на вых. ток более 100мА и напругу под 30в.

Плата универсальная под управление ИЛИ 2-я коллекторными ИЛИ 1 шаговым ИЛИ 1 бесколлекторником, смотря что распаивать или не распаивать. Имеет делители и фильтры с каждого полумоста для поиска средней точки (вариант бесколлекторник), а также единый выход (можно и продублировать на каждую фазу тоже) контроля тока потребления "по земле". Требуется "резистор" (нихромовая проволока) 0.5ома.

svg-файл под ЛУТ (зеркально, в натуральную величину):

Получилось "великовато", но терпимо. Около 44х53мм. В общем на ATmega32a планирую навешать 2 таких платы слоеным бутербродом для управления 2-я BLDC моторами.

Силовую часть отрисовал отдельно, пригодится для разных применений .. надоело модифицировать свой драйвер для DC-моторов.. :)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Архат! Я тебе только порекомендую Atmega32u4 там у первого таймера три OCR (a,b,c), это специально для BLDC драйверов сделано. Такое еще у  СТМ есть, но у тебя к ним личная неприязнь...  ;) Я не искал, возможно еще у каких мег есть три OCR на timer1... мне хватило того, что это есть на 32U4 - на ней  Леонардо и Микро сделаны.   Я не  стану в твою тему влезать, выбирай и пиши сам, но на 32U4 будет  просто удобнее, ИМХО.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Пасибки за совет. Тоже смотрел пристально на Леонардо .. возможно оно и будет. За СТМ у меня нет "неприязни", как и к любому иному изделию. Неприязнь тока к проплаченным пиарщикам, которые пишут фигню по делу и без такового. Смотрел СТМ-ки, в частности серию СТМ8 .. но пока не знаю как их прошивать силами ИДЕ (без отдельно взятого программатора) и не очень понятно можно ли програмировать без спец.средств .. просто не разбирался ишо. Но, цена у них пока самая вкусная - около 25 руб/контроллер. Похожую цену на атмелах можно получить только поставив 1 камень на 2 драйвера. В целом мне так и надо попарное управление моторами, как у гимбал подвесов ..

Но .. на базе СТМ похоже можно пилить и отдельно 1 контроллер - 1 бес-коллекторник. :)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

если  (вдруг?) начнешь с СТМ   разбираться, то проще начинать с "blue pill" - это платки STM32F103 за 100р. И писать на ардуино ИДЕ. Шить нужно через ST-Link, но  можно и без него. Для такой задачи. как BLDC драйвер - вполне достаточно на Ардуино Иде писать.

На стм не все очевидно, нужно немного иначе голову повернуть, потом все просто станет. Там больше акцент на то,что делается само, автоматом, неблокирующе, после трех экранов настройки (утрирую ;) ). Не сложней паровоза - разберешься! ;)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А там похоже вообще всё "не так" и аппаратный ШИМ "не нужен" вовсе. Чем больше разбираюсь с теорией, тем всё кучерявее.. И пока я ищу решения под 20-30 руб камня на драйвер. Камни за 100руб - это ну очень дорого! Даже 50, типа Atmega32a - и то уже "жаба давит". :) Поэтому и пытаюсь упихать на один камень управление двумя моторами .. но тут уже "ног маловато" для разных "НАНО".

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В общем, похоже можно совместить ШИМ для управления моментом двигателя с подмешиванием ВЧ сигнала в токи для точного определения положения ротора, в т.ч. и на стоящем двигателе тоже. Получается измерять противоЭДС на обмотках - это просто занимать "лишние" входы АЦП.

Итого, прогу управления в общих чертах вижу такую:

Вход: скорость вращения + предельно разрешенный момент + длительность (для режима серво - поворот на заданный угол).

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

Опираясь на данные наблюдателя, в первую очередь на угол и сравнивая с задачей через ПИД устанавливаем токи в фазах через скважность ШИМ. Тут тоже похоже полезен не чистый ПИД, а как раз наш "гоночный" - нелинейный, гистерезисный и таблично-заданный.

Собственно и фсё.. кто-то что-то понял? (сам ещё не очень..)

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

С кочки зрения полезности в теме - сомнительно, но очень прикольные ссылки с познавательной стороны. Особенно бесколлекторник из коллекторника.

Спасибо, пробежался с интересом. Прикольно.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Я просто намекнул, что если у вас есть знакомый токарь. То бесколекторник можно объединить с колесом. И датчики Холла повесить снаружи подобно тормозным дискам. И будет у вас двигатель подрбный гироскутерам, только для моделек.

ПС:https://www.youtube.com/watch?v=zft6L0A6iqM

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну примерно так оно и планируется. Параллельно сын рисует колесные диски под печать на 3D-принтере (есть в близком доступе очень даже проф.) под "Лего-формат" типа Ф30.4х20 или Ф56х34, на которые можно будет одевать типовую лего-резину. Мелкие для прямой посадки на ротор аутраннера (вдруг найдем применение и таким мотор-колесам), а вторые "с полостью" под колеса Лунохода, в которой можно будет упихать дополнительно "скребки" - упоры, выдвигаемые из ступицы колеса доп. электромагнитом сбоку от резины.

+ "переходники" под разный размер двигателей. Уже приехали noname 1306 kv=3100 (в перемотке 4 мотора под kv=450) + 4шт BE-1806 kv=2300 (в плане под перемотку на kv=30-90 как получится) + 4шт A2212 kv=1000 (тоже под перемотку на kv=30-90).

Пересчитал оценочно должно получиться при соединении звездой (питание 2S):

1. 1306 kv=450 Mmax=160гр*см / Imax=1.6A -- планируется с редуктором 40:1 на сервовращение "рук" Лунохода основные тяги с платформы, которые несут макс. нагрузку. Колесный диск - точка крепления лего детальки, которая большая врашательная такая фигнюшка у экскаваторов..

2. 1806 kv=50 Mmax=800гр*см / Imax=1A + 2212 kv=50, Mmax=1800гр*см / I=1.3A -- это пара мотор-колес Лунохода. Переднее мощнее, заднее по проще. Просто так получилось, сначала заказал 1806, а потом дошло что для тележки весом под 3-5кг их банально не хватит. Пришлось отказаться от 4-х шт. и сделать перезаказ на А2212. А большие движки в Лего ступицу 30х20 банально не влезут..

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В общем, похоже с авр-ками всё "грустно" .. управлять парой моторов они вряд ли смогут по скорострельности блока АЦП ..

Получается, что будут задействованы все 8 входов, при макс. скорости мултиплексорного замера в 80кГц (а выше оно не тянет, проверено!), частота замеров получается 10кГц на цикл, что даже для 2-х замеров на фазу - цикл управления дает тока 5кГц, и при необходимости хотя бы 2-х циклов ШИМ на переключение (их ваще-то надо 7) получаем только 2.5кГц.

В то время как 1 эл. оборот требует 6 циклов управления, а моторы 12n14p имеют 7 эл. оборотов на оборот ротора .. итого 6*7=42 .. имеем макс скорость управления 2500/42 = 60гц или 3600rpm .. ну, для моих задач хватит, но для "общего применения" .. маловато однако. То есть или скорость блока АЦП надо иметь "на порядок" выше или уменьшать количество замеров и делать их в строго заданное время. Но тогда наложение управления 2-я моторами одновременно становится "проблематичным" в случае их разных скоростей .. фигово. :(

P.S. Или отказываться от АЦП и переходить на компаратор как это делается в типовом китайском контроллере, который по сути есть все тот же DragonFly на базе Atmega8 .. ну и опять же .. все удорожается. Их тоже уже не купить дешевле 50руб/корпус..

В общем, пока засада: купить моторы по 250-300руб/шт - можно, можно их даже и перемотать под требуемые нужды и это даже проще чем мотать по 200 витков на коллекторник, но вот готовые контроллеры к ним с хотя бы частью требований (векторное управление) .. от 800руб на мотор. И сильно удешевить самосбором не получается. Дешевле 128руб/контроллер в детальках + плата - никак. :(

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Авp весят в граммах мало. Там где одна не справится, справятся три. Одна на левый мотор, одна на правый,и одна за капитана. связь она может и через Serial отправлятся. "Правый мотор на полную вперед"[#RM 255 \0]- "ОК,кэр"[$RM] "Левый мотор стоп"[#LM 0 \0]- "ОК,кэр"[$LM]-"Левый мотор назад по малой"[#LM -10 \0]- "ОК,кэр"[$LM]

ПС: И вы стали родоначальником Nextion- мотор-колесо :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Нет. Их мотор-колесо во-первых большое (размер имеет значение), во-вторых как понял "датчиковое".

Да и в целом, "это не я". :)

Это те ученые мужи, что провели мощнейшие исследования в 50-60-х годах прошлого века, когда выбирали шасси для СССР-овского Лунохода. Мне их довелось просто прочесть и выяснить 2 лучших варианта: один - этот и практически он и стоял на Луноходе-1, и второй тот, что выкуплен амерами для марсохода, который там сейчас шастает.. :)

a5021
Offline
Зарегистрирован: 07.07.2013
Попались на глаза, пока на али шарился:
 
The MC33035 is a high performance second generation monolithic
brushless DC motor controller containing all of the active functions
required to implement a full featured open loop, three or four phase
motor control system. This device consists of a rotor position decoder
for proper commutation sequencing, temperature compensated
reference capable of supplying sensor power, frequency
programmable sawtooth oscillator, three open collector top drivers,
and three high current totem pole bottom drivers ideally suited for
driving power MOSFETs.
Also included are protective features consisting of undervoltage
lockout, cycle−by−cycle current limiting with a selectable time
delayed latched shutdown mode, internal thermal shutdown, and a
unique fault output that can be interfaced into microprocessor
controlled systems.
Typical motor control functions include open loop speed, forward or
reverse direction, run enable, and dynamic braking. The MC33035 is
designed to operate with electrical sensor phasings of 60°/300° or
120°/240°, and can also efficiently control brush DC motors.
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Спасибо конечно, но таких схем много и от многих производителей и это "почти" то что нужно.

Их главное отличие - неспособность работать с бесдатчиковыми (sensorless) моторами, а также мало где (тут как раз нету) допускается управление моментом, особенно в режиме удержания ротора. Да и сам такой режим есть далеко не везде (тут тоже нету).

А все мелкие аутраннеры - увы как раз таковые и втыкать в них датчики, увы просто некуда. Там весь наружный диаметр ротора, скажем у 1306 .. 18мм, вот "куда их втыкать"? И вес в 15гр .. давайте, приклеим ещё 3х1гр, получим все 25гр. с клеем, проводами и держателями, а это уже следующий "класс" - 1806  :)

Всё достоинство мелких аутраннеров - большая механическая мощность при малом собственном весе. Нормально, когда соотношение мощность/вес получается около 10-20. Ну какой "коллекторник" такое тянет? :)

Pyotr
Offline
Зарегистрирован: 12.03.2014

Архат, на схеме Вашего драйвера нифига не рассмотреть... 
Вы не пробовали управлять полумостом одним пином? Если уж ног не хватает.
Выход в  1 - открыт верхний ключ
выход в 0 - нижний
Hi-Z - оба закрыты

Наверное и схемы должны быть.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Звиняюсь, но уж как кикад выдает .. там только силовая часть на 4 фазы с возможностью объединения фаз попарно для управления коллекторными моторами или шаговым двигателем. Оно там так и предполагается по 2 ноги на фазу. В качестве полумостов АО4606 + транзистор раскачки р-канала + транзистор блокировки нижней части полумоста, когда открыта верхняя и 1/4 от 2И для раскачки нижнего канала. Номиналы и транзюки в общем-то не принципиальны. Плюс делители фазного напряжения для подачи на АЦП. Плюс "резистор" (отрезок от спирали утюга) с конденсатором для замера тока.

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

Pyotr
Offline
Зарегистрирован: 12.03.2014

Теперь разглядел. Если управлять мостом одним пином, то динамического торможения не будет. Вам не подходит.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Каждая фаза может управляться 2я пинами: верхнее и нижнее плечи отдельно, но можно и объединить при управлении DC моторами попарно (синенькие перемычки у каждой второй фазы). Тогда нижние плечи соседних фаз (один мотор) работают как общий PWM сигнал, а верхние плечи как DIR - "вперед/назад". В таком режиме да, торможения коротко-замкнутым якорем нет. Но также возможно только частичное объединение, скажем по сигналу PWM (нижние плечи пары фаз), в этом случае есть 3 пина управления, и запрещая оба верхних плеча можно открывать нижние одновременно двух фаз или наоборот. Это и есть режим динамического торможения коротко-замкнутым якорем.

Вообще-то "литература" рекомендует сначала отключать мотор от питания полностью и только через небольшой промежуток времени закорачивать обмотку на землю или питание для режима торможения. В любом случае, требуется "управляющий камень"... :)

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

В случае БЛДЦ - используются только 3 фазы и по отдельности.

Можно посадить на 1 МК две таких платы (что и собираюсь сделать) "бутербродом". И тогда неиспользуемые 2 фазы от БЛДЦ варианта можно присобачить на управление ещё одним коллекторником или чем-то ещё, например электромагнитом "когтей" - кольцо втягивающихся грунтозацепов в мотор-колесо дополнительно к резиновой шине. Но это мне уже кажется излишеством.. :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Последние новости :)

Собрал силовую часть драйвера, протестил - работает. Подключил пока к Ардуино НАНО, и растерялся..

В общем при подаче на 2 фазы (обмотки соебинены звездой) напруги, блок защиты по току выключает ШИМ уже через 43 микросекунды... и как управлять в таких условиях?

Детали:

Мотор noname-1306 исходный имел kV=3100, 17.5 витка на зуб статора "внавал" провод 0.25 по меди, схема 9N12P, соединение - треугольник, макс. ток согласно китайцу - около 4А. Перемотан на 36 витков на зуб проводом 0.2 по меди с ограничением потоку в звезде при сохранении той же плотности тока = 1.7А, расчетное kV у меня получилось около 430.

Частота ШИМ была выбрана 2кГц (500мксек), частота АЦП - 1Мгц, что дало по факту 21.7мксек на цикл управления или 23 замера на период ШИМ. Однако, при подаче напруги на мотор, проходит ровно 2 замера: первый около 0.7А, второй уже под 2А и на этом срабатывает защита по току, отключая напругу. Мотор пищит, но не шевелиться (оно и понятно, итоговая скважность ШИМ - никакущая).

Что делать? Повышать частоту ШИМ? А как тогда им управлять если нарастание тока происходит так шустро?

В общем, пока потерялся.. если есть советы - буду благодарен.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну .. в общем можно повышать частоту ШИМ. А ещё лучше получилось считать её по заданной мощности мотора. То есть замеряем время за которое ток нарастает до предельно допустимого, а потом делаем паузу согласно заданной мощности и получаем "плавающий ШИМ". О как! :)

Получилось накатать первый модуль, который удерживает мотор в заданной положении с заданной мощностью удержания ротора. Правда пока кратно положению фаз.. Погонял мотор в режиме удержания. Ограничитель тока работает на ура. 1мин на предельном токе - мотор едва теплый. "Тяга" около 150гр*см. - впечатлило.

Этим же модулем похоже можно определять положение ротора на стоящем моторе - токи в фазах разные и времена удержания паузы - тоже.. в общем, похоже можно определять положение ротора за 1-2 мсек. Это уже радует. :)

nevkon
Offline
Зарегистрирован: 20.01.2015

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Это понятно, что с ростом скорости нарастание тока замедляется из-за обратной ЭДС мотора. Пока что провожу эксперименты со стоящим ротором.

Проверил алгоритм с авислаб по определению положения стоящего ротора. Вроде работает и без замера напряжения в средней точке, а только по замерам токов, но как-то странно.

Во-первых, у меня ротор на этом моторе на встает во все устойчивые положения электрических градусов, часть из них неустойчива на самом деле .. то ли ротор кривой, то ли статор, то ли намотал обмотки не одинаково .. хотя вроде бы считал тщательно и вымерял длину провода. И ток в обмотке "А" несколько меньше чем в "В" и "С" при любом замере, но незначительно. Тока АВ, АС, СА, ВА всегда меньше на 2-4 попугая АЦП (ок. 10-20мА) чем ВС и СВ, особенно АВ почему-то. Соединение "Звезда", уже писал. Может АО4606 с разным сопротивлением каналов? Средний замеряемый ток от 270 до 500мА.

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

Если подавать большой ток как советует автор (вплоть до срабатывания защиты по току см. выше), то ротор в замере может дернутся и сменить положение, особенно если оно не достаточно устойчивое (см. п.1) и режим ХХ.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В целом, минимальное время на определение положения ротора получилось в 900 мксек. Это - сильно радует. :)

Ха! Поднял частоту АЦП до 2Мгц и убрал усреднение, оно все одно незачем. Разница в попугаях АЦП между замерами не превышает 2-3. В общем время определения положения ротора довел до 350мксек, вместо авторских 15 мсек!

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В общем, нашел оригинал статьи определения положения стоящего мотора. Впрочем, ссылка есть там же на avislab снизу. Как выяснил, оригинальный измеряемый мотор был по схеме 12N8P, и имел отличные от моего раскладки токов в положениях ротора, но похожие. Кстати, прогнал их формулу в экселе на их же данных и воочию увидел что формула ни разу не рабочая. Различает только 3 состояния из 6-и на их же данных и то с проблемами.

Похоже сравнивать надо не то и не совсем так .. а как? токи замеряются достаточно полноценно, токи "туда" и "обратно" отличаются .. всё по статье, но вот что с чем сложить-вычесть, чтобы получить 6 разных значений - вопрос.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вчера покрутил мотор в режиме ХХ, примитивным синхронным алгоритмом переключения обмоток.

Внезапно выяснилось что ротор у мотора "кривоват", если не сказать хуже. При шаговом вращении (медленном) ротор не встает в 2 устойчивых положения из 6-и. Вообще не встает, по снятию тока сваливается в соседнее положение. Похоже есть магниты с разной силой или приклеены недостаточно точно. Абыдна. Впрочем .. китай за 340руб .. что взять с косоглазых и косоруких?

Получено в результате:

kv=404, расчетное 423, ошибка 4.5%, ток ХХ = 136мА, пересчетное значение 130мА, ошибка менее 5%. Ожидаемое КПД 70-72%. В целом устроило "более чем". Методика пересчета мотора оказалась в целом верной, соответственно можно надеяться что мое понимание процессов в BLDC моторах тоже корректно. :)

P.S. Да, довел время замера тока на 6 фазах (определение положения ротора) до 270мксек! :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

АП. Приглашаю ещё раз всех заинтересованных. Создание "авто" контроллера для BLDC sensorless моторов, похоже может решить задачу скоростного движения по линии.. да и вообще, оказывается "а нету таких"..

пока всё приостановлено, можно поразмышлять КАК крутить мотор, с учетом того, что можно быстро и оперативно измерять токи в фазах?

На стоящем моторе, в зависимости от его положения, токи имеют небольшие отличия, но выявить КАК определить положение ротора мне пока так и не получилось.. если есть идеи - велкам.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну, и? Как понимаю, драйвер BLDC мотора с контролем токов через обмотки и "шаговым" режимом работы с открытым кодом - никому не интересен ..

Последняя попытка найти "подельников".

В общем столкнулся с такой проблемой: даже при скорости работы АЦП на тактовой 2Мгц (делитель "3" 1:8), время замера на ноге АЦП составляет около 10мксек (через analogRead(), версия 1.6.9 очень шустрая И позволяет менять скорость замеров!), что ОЧЕНЬ ДОЛГО для управления мотором .. как оказалось. Так, к примеру, двигая замер по току на 4-8мксек "туда-суда" от начала подачи напруги на обмотки можно получить очень разные ограничения по току: от "недобора", до значительного перебора. + "лишний" замер тока при заданной длительности удержания напруги на фазах приводит к около 15% ошибке скорости вращения ротора .. что мне кажется очень много.

Как быть?

Поясню:

Сделана функция включения заданных фаз (напр. AH-BL) на заданное время с заданным PWM, примерно так (кода под рукой сейчас нет):

1. По ограничению мощности считаем предельный ток включения как долю от макс. допустимого.

2. Включаем мотор и далее в цикле пока не прошел тайминг времени (блинк без делай):

2.1. Если мотор включен, то замеряем ток И если он превысил текущий предел выключаем фазы, устанавливаем время выключения 8мксек (это достаточно для падения тока в обмотках)

2.2. Иначе (мотор выключен) смотрим прошло ли время паузы и как только - включаем фазы.

3. выключаем фазы.

В этом алгоритме, самая длительная операция - замер АЦП, которая длится около 10мксек. При быстром вращении для моторов с kV около 1000 время включения фазы может составлять всего 180-250мксек, а для моторов быстрее ещё меньше. Так оригинальный мотор с kV=3100 на напруге 2S (ок 8в) требует около 70мксек на подключение фаз .. ошибка измерения таким способом - 1 лишний замер. или 10/70 = 1/7 = 14%. Практически 15%, учитывая накладные расходы.. это мне кажется "много".

Как можно использовать аппаратный ШИМ на таймерах в режиме ограничения тока .. не представляю пока никак. Есть идеи?

a5021
Offline
Зарегистрирован: 07.07.2013

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

STSPIN32F0 – SIP-микросхема, созданная для управления работой трехфазных бесколекторных двигателей и позволяющая реализовывать различные методы определения положения ротора. STSPIN32F0 объединяет в одном корпусе значительную часть списка, приведенного выше (Рис. 4):

  • микроконтроллер STM32F031x6x7 с 32-битным ядром ARM® Cortex®-M0, рабочей частотой до 48 МГц, 4 кбайт ОЗУ, 32 кбайт FLASH и программированием по SWD;
  • три полумостовых драйвера силовых транзисторов со встроенными бутстрепными диодами и выходным током до 600 мА;
  • четыре операционных усилителя для нормирования сигналов ОС от датчиков Холла или от бездатчиковой схемы;
  • программируемый компаратор для контроля тока;
  • встроенный DC/DC-регулятор 3.3 В с защитой от перегрузки, КЗ и перегрева для питания низковольтных схем;
  • встроенный LDO 12 В с защитой от перегрева для питания драйверов, компараторов и ОУ;
  • широкий выбор дополнительной периферии: 16 каналов ввода-вывода, 5 таймеров, 12-битный 9-канальный АЦП;
  • коммуникационные интерфейсы: I2C, USART и SPI.
nevkon
Offline
Зарегистрирован: 20.01.2015

Думаю что замерять при помощи АЦП ток на обмотке неправильное направление развития. Надо не ток измерять - ведь это ни к чему, а ловить момент прохождения током околозаданной отметки. Иначе говоря нужна схема сообщающая МК логическим уровнем о достижении заданного тока.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Спасибки, за свежачок от июля 2017г, не видел таких. Стоимость сего чуда 300руб в ЧИп и ДИП, на Али 286руб + 300руб пересылка, ровно 1 продаван. :)

Готовая прошивка от СТМ имеет всё ещё версию 1.0.0. и распространяется по подписке (регистрации) с ознакомлением с Sale&Trade лицензией.. а так, да .. очень вкусный чип. В описании прошивки так и не нашел режима "удержания ротора в заданном положении". В описании образца платы также фигуряет только подстройка частоты вращения от 800 до 12000rpm, что очень много. Интересуюющие больше всего rpm лежат в диапазоне 1 .. 1200. Хотя, вроде как gimbal применение тоже позиционаровано.

Типовой драйвер BlHelli можно купить от 140руб/шт "готовый" (с мосфетами и пр.). Моя поделка в детальках пока обошлась мне немногим меньше.

Kracher
Offline
Зарегистрирован: 24.01.2018

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, этот метод будет использоваться и он работает хорошо, но только ПОСЛЕ того как мотор наберет необходимые обороты. Это не менее 1/10 от расчетного kV мотора.

Весь вопрос в том, как определить положение стоящего ротора или вращающегося менее этой пороговой частоты.

Нашел несколько патентов, в т.ч. тот что описал выше: быстрое измерение токов в обмотках во всех 6 направлениях и по перекосу токов определять положение стоящего ротора. Ни один из них в реальности НЕ работает надежно. Можно более-менее определить положение +-180грд, но при этом легко ошибиться "наоборот" и получить дергунчик взад при попытке раскрутить мотор. Как на авислабе показано кино с надежным определением - сообразить не могу .. у меня ТАК не работает. Правда там "кино" мотора без нагрузки, что сильно меняет ситуацию..

Проблема в том, что "автомобильное" применение предполагает запуск мотора ПОД нагрузкой, а авиационное - БЕЗ таковой. Все авто-контроллеры работают только на датчиковых моторах ровно по этой причине - определение положения ротора на стоящем моторе.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

nevkon пишет:

Думаю что замерять при помощи АЦП ток на обмотке неправильное направление развития. Надо не ток измерять - ведь это ни к чему, а ловить момент прохождения током околозаданной отметки. Иначе говоря нужна схема сообщающая МК логическим уровнем о достижении заданного тока.

Нужны ОБЕ схемы и они реализованы в моем драйвере.

Первая схема - ловля прохождения противоЭДС на свободной фазе - реализована сьемом напруги через делитель и подачи на вход АЦП, который передан компаратору, на втором входе которого эмулируется напряжение "средней точки" делителями от питающего. Типовое решение много где, проверено - работает.

Вторая схема - контроль предельно допустимого тока через мотор (ШИМ) реализована сопротивлением 0.2 ома в цепи земли питания всех АО4606 и на нем, тактируя в нужные моменты можно измерять ток через обмотки и выключать ШИМ не позволяя перегравать мотор. Этот же вход АЦП испольую для попыток определения положения стоящего ротора, но пока "безуспешно"..

Запланирован ещё и третий контроль - делитель от терморезистора, который должен будет "вырубать" мотор полностью если его температура таки достигнет предельного значения. Тут пока сделан тупо делитель, подающий выход на ногу прерывания контроллера. Пока не подключен - терморезисторы ещё в пути..

Итого, задействовано 4 входа АЦП + 1 прерывание + 6 ног управления. Всё ещё надеюсь упихать в 1 Нанку управление 2-я моторами, но похоже не получится по её производительности.. точнее АЦП - таки тормозной для такой задачи..