Еще один БК проект для подвесов - EvvGC 3/2axis Brushless Gimbal Controller
По инерциалке нельзя определить положение ротора относительно статора достаточно точно. А по рысканью так вообще невозможно.
Где обратная связь? На схеме ее нет
моторы то синхронные. пока срыва нет, магниты будут следовать за наведенным магнитным полем. называются bldc. гуглите
Я неплохо разбираюсь в двигателях, меня интересует какая схема управления реализована в этой плате. Хотел бы услышать ответ знающего человека
уже ж написали выше - ОС через гиро + аксель для коррекции горизонта
меня интересует какая схема управления реализована в этой плате
вот схема питания двигателей
полумосты, а не мосты. одновременно вкл все 3 фазы. ибо векторное управление.
ШИМ дергает транзисторы в полумостах на каждой фазе. поочередно открывает\закрывает транзисторы в верхнем и нижнем плече. в итоге на каждой фазе присутствует некое значение напряжения. это нам дает некий вектор магнитного поля. меняя значение ШИМ по некому закону(например по синуса со сдвигом для каждой фазы, но можно и трапецию или еще чего)
получаем вращение вектора. а так как мотор синхронный и вообще работает в режиме удержания, ротор поворачивается вслед за полем, на нужный угол, который мы отслеживаем по обратной связи в виде данных гироскопов\акселерометра.
Мы все здесь не плохо разбираемся в моторах но дело в том что дело не в моторах. Дело в удержании платформы гироскопа неподвижно. Кто будет это делать и с какими датчиками контроллеру наплевать, он хочет только одного что бы его слушались. Есть такое понятие пид регулятор. Математически отработанная модель расчетов для контролера с помощью которой и происходит удержание. Датчики на моторах нужны я полагаю для более эффективной работы самого мотора. Как всегда все просто есть моторы есть гироскоп и есть мозг в задачу которого входит то что ему велено а именно Держать.
Ребят, с тем что вы написали, я полностью согласен. Но это все не касается моего вопроса.
Для управления блдц, нужно знать положение ротора относительно статора (по крайней мере с точностью до полного электрического оборота).
Обычно применяют два способа это реализовать.
1 - в лоб: подключают 3 датчика Холла к статору, которые определяют одно из трех положений ротора.
2 - по обратной эдс: выводы моторов помимо трехфазного моста подключены через специальную схему из делителей напряжения и виртуальной земли, подключены к ацп контроллера. При вращении мотора, на неподключенную фазу наводится напряжение, по которому можно судить о положении ротора. Чем больше обороты, тем больше наведенное напряжение, тем легче детектировать положение. (именно этот способ чаще всего используется в хоббийных регулях т.к. дешевле).
Но в схеме этого контроллера нет ни того, ни того способа. Выводы моста подключены к движку и все. Меня это вводит в ступор, прощу мне помочь.
Зы: еще раз, по инерциалке определить положение ротора определить невозможно т.к. инерциалка не идеальная. Т.е. по горизонтальным осям еще куда ни шло, но вращение по вертикальной вообще измеряется с огромной ошибкой т.к. там не действуют акселерометры
Для управления блдц, нужно знать положение ротора относительно статора
нет, если это медленное вращение без опережения вектора магнитного поля (катушек) над полем магнитов на некий угол(иначе происходит срыв).
это скорее напоминает шаговые моторы. где поле создали туда и повернулся. у нас успевает ротор поворачиваться вслед за медленным поворотом магнитного поля.
то есть все дело в скорости вращения и мощности поля. в какой то момент ротор не поспевает за вращением поля катушек и появляется необходимость синхронизировать.
нет, если это медленное вращение без опережения вектора магнитного поля (катушек) над полем магнитов на некий угол(иначе происходит срыв).
это скорее напоминает шаговые моторы. где поле создали туда и повернулся. у нас успевает ротор поворачиваться вслед за медленным поворотом магнитного поля.то есть все дело в скорости вращения и мощности поля. в какой то момент ротор не поспевает за вращением поля катушек и появляется необходимость синхронизировать.
Согласен что мы можем создать поле, направленное в нужную нам сторону. Но на роторе ведь не один магнит, а довольно много. Это значит что есть много положений ротора, которые будут устойчивыми при заданном направлении поля. И мы не знаем к какому из них он устремится т.к. не знаем где он находится сейчас
Ребят, с тем что вы написали, я полностью согласен. Но это все не касается моего вопроса.
Для управления блдц, нужно знать положение ротора относительно статора (по крайней мере с точностью до полного электрического оборота).
Обычно применяют два способа это реализовать.
1 - в лоб: подключают 3 датчика Холла к статору, которые определяют одно из трех положений ротора.
2 - по обратной эдс: выводы моторов помимо трехфазного моста подключены через специальную схему из делителей напряжения и виртуальной земли, подключены к ацп контроллера. При вращении мотора, на неподключенную фазу наводится напряжение, по которому можно судить о положении ротора. Чем больше обороты, тем больше наведенное напряжение, тем легче детектировать положение. (именно этот способ чаще всего используется в хоббийных регулях т.к. дешевле).
Но в схеме этого контроллера нет ни того, ни того способа. Выводы моста подключены к движку и все. Меня это вводит в ступор, прощу мне помочь.Зы: еще раз, по инерциалке определить положение ротора определить невозможно т.к. инерциалка не идеальная. Т.е. по горизонтальным осям еще куда ни шло, но вращение по вертикальной вообще измеряется с огромной ошибкой т.к. там не действуют акселерометры
Все очень просто. Принцип такой же как и при управлении шаговым двигателем в режиме микрошага: подразумевается что срывов нет - те двигатель находится в расчетном угле в режиме удержания, при необходимости повернуть вал, контроллер выдает сигнал для поворота на определенный угол и дальше удержание - ос не нужна т.к. двигатель всегда отрабатывает поворот на нужный угол. При аварийном срыве с полюса или при запуске системы статус кво востанавливается по информации с гиры. Еще раз: ос нужна при срывах и при необходимости достигать высокой эффективности на бесколлекторнике при высоких оборотах (чтобы сдвигать вектор), здесь ос не нужна!
И мы не знаем к какому из них он устремится т.к. не знаем где он находится сейчас
не знаем , но потом то он все равно будет вращаться в магнитном зацеплении (эквивалент нашей системы это магнитная муфта), и мы повернем в положение нужное по данным акселерометра.
Инфа для Андрея. У меня почему-то не адекватно работает аналоговое управление ЯВом. Если долго держать джойстик, и резко опустить - ЯВ либо вобще не останавливается, либо останавливается через некоторое время. На ролле такого эффекта не наблюдается. Так-же на него не действует значение максимальных углов. Сколько угодно ставь - ЯВ поворачивается все равно по полной.
Все, понял. Спасибо огромное)
Приехала плата 1.3 с аирбота. Включил, и ну ни как не могу настроить. Прошивка с рцгупс. Что за фигня, до этого была китайская плата 1.2 за пять минут настроилась и прекрасно работала, пока я её не решил перепрошить и забыл снять джампера.
Плату 1.3 с аирбота пробовал с датчиком от 1.2, таже фигня, не настраивается. Подцепился терминалом к уарту4 на I2C лезут ошибки.
Как лечить? куда вешать кольца? к датчику или к плате?
И почему ошибок не было на 1.2 плате? (прошивки одинаковые) Железо и питание одинаковое, только плату поменял 😦
Для начала я бы запитал от 3.3 и без моторов.
Если все ок значит реально давят наводки и пора магию колец применять.
о, без моторов ошибок нет
Да поможет тебе Толкиен.
Держите хоббита.
скрутил провода от датчика в жгут и повесил колечко в тремя витками жгута. ошибок стало меньше.
Но ролл всё равно работает плохо. если быстро крутишь по отрабоатывает хорошо если медленно как бы заедает.
С эти что можно сделать?
Расскажу свою историю, я к этой плате подключил внешние драйвера (предварительно выпаяв родные) работает нормально. ну как нормально, надо еще настраивать много всего, но первые результаты понравились. двигатели можно запитывать от 4 банок. прошивается плата на раз. позже подробности и фото выложу
А я в тупике. Не могу прошиться. Плата 1.3. Ставлю две перемычки, включаю платку USB - COM, подсоединяю к UART1. Питание 3.3В, синий светодиод загорается. Открываю Flash Loader. Вытаскиваю перемычку Reset. Нажимаю Next - и такая ошибка:
Местами RX и TX менять пробовал. Моторы отключены от платы, питание тоже естественно. Моторы пробовал подключать - тоже самое. Датчик гироскопа-акселя к плате подключен.
Если подключиться к UART4 и запустить ГУИ - всё коннектится, чтение-запись происходит. Что делать, как прошиться? Хочу программу Андрея Гапонова залить…
Глупость скажу, но скорость 9600.
И не верьте дядьке на видео минус выключать не нужно 😃
А я в тупике. Не могу прошиться. Плата 1.3.
в места отмеченные красным впаиваете провода как можно короче и подключаете к TX RX и все шется на ура
да и скорость при прошивке чем ниже тем лучше