Как стать автором
Обновить

Комментарии 18

Супер статья. Помнится мы попили с этими двигателями кровушки. Тогда не было дешёвых китайских драйверов, а из документации только аппнота от TI.
Один вопрос: у вас управление получилось реализовать? Или этот так — выжимка теории из разных источников?
Да, получилось, воплотил это в железе и в данный момент настраиваю двигатели в качестве привода робота



Он точно не в шаговом режиме работают? На максимальую скорость запускали?
Кстати, видео и куски кода можно было бы добавить в статью, она была бы полнее.
Не в шаговом, запускал — кажется все четко, с нагрузкой тоже справляется как положено двигателю. Схема и код, возможно еще будут, после более подробного исследования:) Если двигатель нагружать до полной остановки, то бывало что чтобы он обратно раскрутился надо его слегка подтолкнуть, анализируется же переход фазы, но думаю это дело программно, еще предстоит отладить.
При потере чёткого фронта BEMF он должен переходить в шаговый режим, собственно как и при старте, иначе будет постоянно глохнуть — для робота это особенно критично.
Да, алгоритм буду еще додумывать, надо заметить что даже при низкой скорости и внешней нагрузке переключения хорошо происходят.
Это видео не пример этого, но все же:

Спасибо большое за статью. Давно искал эту информацию)) Как думаете много можно сэкономить собирая драйвер бесколлеторного двигателя самому? Готовый с Китая на 30А стоит от 300 рублей
Думаю сэкономить не получится
Хорошее место у гитары)
Ощутил дежавю, вспоминая свою статью Векторное управление электродвигателем «на пальцах» :)

Есть некоторое замечания:

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

На самом деле нужно переключать раньше. Гораздо раньше. Когда вектора магнитного поля ротора и статора сонаправлены — момент двигателя уже равен нулю. При таком управлении вы будете работать не в максимуме момента, а на его остатках. Кроме того, нужно учитывать, что после включения фазы под напряжение ток будет нарастать там не мгновенно, а значит на большой частоте вращения включать нужно ещё раньше. Нужно стремиться держать в среднем 90 градусов между потоком ротора и статора (током статора). Тогда двигатель будет работать в оптимуме.

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

Кроме того, вы начали рассказ с синхронной машины с синусоидальной ЭДС, а управляете на самом деле BLDC машиной с трапециидальной ЭДС. Хотя для выбранного способа управления разницы нет, но стоило бы немного этот момент раскрыть.
Можете подробнее описать, как датчики помогут лучше развить максимальный момент при старте в сравнении с бездатчиковым методом?
Бездатчиковый метод, определяющий положение ротора на основе ЭДС, неработоспособен в некотором диапазоне низких частот вращения, где ЭДС мала. Там все простейшие бездатчиковые системы коммутируют фазы "вслепую", не зная положение ротора, и надеясь, что ротор будет следовать за коммутацией — шаговый режим работы, разомкнутый по положению. Так можно успешно запускать вентиляторы и пропеллеры авиамоделей, где на низкой частоте вращения момент нагрузки мал. Если нагрузка большая, инерционная — такая, как транспортное средство на уклоне — шаговый режим не подходит, момент будет дергаться туда-сюда, а машина не поедет, двигатель может выпасть из синхронизма. Если нужно уметь постоянно развить на нулевой частоте вращения максимальный момент, то нужно приложить вектор тока с нужной фазой относительно положения ротора. Тут и помогают датчики положения. Они дают сигнал на нулевой частоте вращения включительно, поэтому двигатель работает в оптимуме сразу, никакой шаговый режим запуска не нужен.
Появились ли готовые драйверы безщеточного двигателя со счетчиком оборотов (долей оборотов)? Если да, то где можно почитать про двигатель с таким двигателем в связке с редуктором, который бы мог заменить шаговый двигатель в руке робота?
ИМХО, без внешнего датчика на валу такое невозможно в принципе — всегда будет накапливаться какая-то ошибка, сильно зависящая от нагрузки и скорости вращения — в статике и на малых оборотах обратная связь через ЭДС на обмотках просто не работает в принципе.
Если с датчиком положения, то такой «драйвер» давно существует — это любой сервоусилитель (сервопривод). Можно задать по цифровому интерфейсу связи любое положение ротора в долях градуса в пределах точности датчика положения. Бездачиковые же варианты для околонулевой частоты вращения в теории тоже разрабатываются, основаны на использовании нелинейностей электродвигателя как датчика положения. Например, у синхронных двигателей с магнитами индуктивность вдоль оси с магнитами отличается от индуктивности вдоль оси, где нет магнитов (оси d, q). Подавая на двигатель тестовый высокочастотный сигнал (вместе с основным током) можно измерять индуктивности и определять положение осей d,q. Но как серийный продукт такое не годится, требует очень тонкой настройки и плохо работает при больших токах -железо насыщается, индуктивности меняются, наблюдатель положения ломается. Поэтому в руку робота — только с датчиком положения пока.
А зачем заменять шаговый двигатель в руке робота? Шаговик это ведь такой же BLDC просто с более мелким разбиением по шагам.

По удельной мощности bldc — рекордсмены, а шаговые моторы — антирекордсмены. Да и не бывает шаговых моторов выше некоторой весьма небольшой мощности.
Поправьте, если ошибаюсь.

Шаговые двигатели это подмножество bldc, не совсем правильно их противопоставлять. Просто у него полюсов намного больше.

Ну да ладно, это занудство. Но алгоритм бездатчикового управления «обычными бесколлекторниками» на малых оборотах обычно примерно соответствует таковому у шаговиков. Также если вы знаете число переключения фазы и физическое устройство мотора, то вы можете посчитать и число оборотов.

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

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