Стедикам из подвеса на бесколлекторных двигателях.
Как начал с энкодерами воевать, частенько контроллер вырубает движки с надписью
Emergency stop
задолбался уже. Кто знает, при каких условиях пишется эта хрень? и куда копать?И второй вопрос. Считается, что энкодер должен экономить питание. Вот у меня сейчас отключены две оси, оставлен только ролл, он в покое и с выключенными движками и с включенными, т.е. уравновешен, А ток хавает что с энкодером, что без - 0.3А
Может хитрость какая есть?
Могли бы Алексей и Юрий Путинцев прокомментировать?
Пожалуйста.
Как начал с энкодерами воевать, частенько контроллер вырубает движки с надписью Emergency stop задолбался уже. Кто знает, при каких условиях пишется эта хрень? и куда копать?
Эта опция может быть отключена на вкладке Advanced, если она не работает у вас. Она полезна для проверки того, что все сенсоры выдают адекватные данные (потому что если иначе, то подвес может дел натворить, особенно мощный). Углы моторов, вычисленные на основе 2-х IMU, сравниваются с углами энкодеров. При большом расхождении срабатывает защита. У вас скорее всего калибровки IMU или энкодеров некорректные, попробуйте покопать в этом направлении.
С включенными энкодерами и выключенными ток должен быть разный. Это видно и по GUI (индикатор мощности с энкодерами в районе нуля, мотор ток не потребляет, а без энкодеров - всегда постоянный). Ещё сам процессор тоже потребляет постоянно, точно не помню сколько - около 50-100mA.
У вас скорее всего калибровки IMU или энкодеров некорректные
Получается ИМУ по 6 + установить офсет? А лог по диагностике ведется на наличие ошибок в соотношении данных иму и энкодеров?
Две платки нормально работают по I2c с перемычками А1, А2 на 3.3 вольта. В зависимости от перемычек в диагностике видим рав данные в яв, питч, или ролл месте. Висит всё в параллель 2 энкодера и 2 датчика.
Алексей, если не сложно - можете выложить фото энкодеров с перемычками? Конкретно интересуют ролл и яв.
Получается ИМУ по 6 + установить офсет? А лог по диагностике ведется на наличие ошибок в соотношении данных иму и энкодеров?
Естественно, если вы включаете 2-й IMU - он должен быть откалиброван. Логов не ведется. Для проверки, вы можете временно выключить энкодеры и проверить, что два IMU вместе выдают правильные углы моторов (белые стрелки на приборной панели). После включения энкодеров углы моторов уже берутся с энкодеров, но должны реагировать на повороты моторов точно также, как и с двумя IMU. Это дает возможность сравнить два источника данных для повышения надежности, так как есть много причин по которым энкодеры перестают выдавать правильные данные (магнит проскальзывает на валу, или наводки на шине, разъем не контачит и т.д.). Алгоритм контроля мотора завязан на энкодеры, и в случае его сбоя мощный мотор может разбить камеру или пальцы поломать.
Алексей, а с чем может быть связано что питч и ролл энкодеры определяются нормально, а яв в разделе "офсет магнитного поля " выдает 1, а мотор/энкодер Gear rato выдает ноль.
пробовал местами моторы менять, не помогает.
плата Tiny Pro и моторы от Elite Power.
Китайцы пока не доступны, я себе мозг съел, ваша техпотдержка тоже не очень понимает мою проблему
Алексей, если не сложно - можете выложить фото энкодеров с перемычками? Конкретно интересуют ролл и яв.
Энкодеры на данный момент сняты, так как всё равно нет третьей работающей оси, но на фото перемычки видны
Кстати, только что заметил на фото, что на правой платке оба кондюка одинаковые, а на двух левых разные. На практике как раз обе левые рабочие, а правая не запускается. Может быть в этом проблема??
Игорь, сравните со своими работающими/неработающими.
По идее кондюки на питании висят и не должны так кардинально влиять, да и тестером обе напруги так же звонятся, как и на работающих …
добавочка. На правой платке они на фотке выглядят одинаковыми, на самом деле разные по толщине, т.е. скорее всего номиналы разные. Но то, что лепили эти платки в разных партиях - факт.
Игорь, сравните со своими работающими/неработающими.
Посмотрел. Мои лепились точно в одной партии, так как я сам разделял платы. У меня вроде все как “работающие слева”, вроде - потому что сейчас не могу посмотреть, а на моем фото такой же, как слева. А перемычек на GND вообще не делали? Какой адрес у них - по мануалу (0-40 0-42) или “дефолт”?
Вот ведь сколько проблем и вопросов, а иногда и горелые платы. И все из-за полного отсутствия поддержки со стороны продавца. Роттору жирный минус.
но на фото перемычки видны
и еще вопрос по левому энкодеру - он вообще без перемычек и видится программой? Какой у него адрес стоит?
и еще вопрос по левому энкодеру - он вообще без перемычек и видится программой? Какой у него адрес стоит?
Без перемычек - это ролл, там А1 и А2 должны быть 0.
Сегодня пропаяли неработающую платку. Вроде завелась. Но поймал ситуацию, когда при включении были видны только два из трёх энкодеров. После перезапуска - опять три. Склоняюсь всё же, что на землю надо тоже перемычки кидать с А1 и А2, если они должны быть 0, иначе можем получить непредсказуемо в самый неподходящий момент ошибку адреса и ошибку в работе подвеса.
Итак, решилась проблема с платой. Спасибо Юрию Gapey за абсолютно точно дистанционно поставленный диагноз и Сергею и Андрею из кинематика - официала Basecam за проверку и оперативный ремонт платы. Жаль, что некоторые другие официалы Basecam в Москве не перенимают опыт общения с клиентами и техподдержки. Проблема была в отгоревшей земле на шине i2c, повезло что обошлось одним фильтром. Тестирую энкодеры дальше)
Без перемычек - это ролл, там А1 и А2 должны быть 0.
Ну вот хоть убейте - не видит его программа!!! В аналогичной ситуации. Подключаю на ролл А1 и А2 без перемычек и ничего не происходит. Пошел паять на GND перемычки.
Вопрос: сразу после добавления энкодера (после перезагрузки) должен ли вновь добавленный энкодер давать данные в диагностику? Или он даст данные только после калибровки?
Спаял. Подключил. Ничего не работает.
Плата - без проблем.
Подключенный через PWM энкодер - без проблем.
Оба энкодера по i2c - ну никак.
Спаял перемычки а1, а2 в соответствии с инструкцией. Все подключил. Включил энкодеры на ролл и яв, указав 5048В, адрес оставил дефолт (пробовал и расставить 0х40 и 0х42, результата тоже нет). Ни в диагностике, ни во вкладке debug нет никакой информации - debug пишет disconnected, диагностика показывает 0 на оба энкодера.
Если поставить галочку “skip auto detection” и выставить адреса - лезет тонна ошибок по i2c, но энкодеры не работают. При этом в debug получаю:
Encoder[ROLL] type: AS5048B (I2C)
magnitude: 0, auto-gain: 0
diagnostic: no problems
read errors: 11206
Encoder[PITCH] type: AS5048A,B (PWM)
read errors: 0
Encoder[YAW] type: AS5048B (I2C)
magnitude: 0, auto-gain: 0
diagnostic: no problems
read errors: 11196
DRIVERS STATE: OTW=0, DRV_FAULT=0
и соответственно кол-во ошибок чтения растет, моторы на соответствующих осях работают крупными секторами.
Голова сломана. Кто что подскажет? Может и правда в поддержку Basecam написать? Или повыбрасывать все и заняться вязанием?
Проверьте, звонятся ли точки для проводов на плате SDA и SCL на ноги микрух. У меня на неработающей плате звонились только при сильном нажатии, т.е. микруха как бы висела над платой и не была пропаяна.
Вы пробовали работающую плату переключить с PWM на I2C?
Данные вроде видны сразу без калибровки (ИМХО)
Если отключены какие то из осей во вкладке Дополнительно, то на этих осях нету рав данных с энкодеров в Диагностике, даже если на этих осях энкодеры выбраны.
звонятся ли точки для проводов на плате SDA и SCL на ноги микрух
да, без нажатия
Вы пробовали работающую плату переключить с PWM на I2C?
Нет, перепаивать ноги придется, да и PWM уже готовый, вклеен.
Если отключены какие то из осей во вкладке Дополнительно, то на этих осях нету рав данных с энкодеров в Диагностике, даже если на этих осях энкодеры выбраны.
Это в смысле выходы на моторы? Выходы включены и соответствуют осям. Все моторы работают и стабилизируют. Но не работают энкодеры)
Написал в техподдержку Basecam - надеюсь, жду.
Алгоритм контроля мотора завязан на энкодеры,
Алексей, а нет ли варианта какого-либо расширения кол-ва PWM? Не хватает двух каналов для подключения энкодеров и получается вся описанная в данной ветке проблема с подключением их по i2c. Если бы был вариант какого-то “сплиттера” для PWM - было бы проще. Каналы задействованы управлением с пульта всех каналов + переключение режимов.
Алексей, а нет ли варианта какого-либо расширения кол-ва PWM?
Есть решение - все управление вы може завести через Sum-PPM (на входе RC_ROLL в обычной прошивке или AUX3 в энкодерной). Упаковать 8 PWM каналов в Sum-PPM можно с помощью кодировщика, они часто продаются вместе с ардупилотом, стоят копейки. Или, если у вас приемник имеет такой выход, можете его использовать. Можно и самому сделать из ардуины.
Но вообще странно что I2C завести не удается. Это ж самая простая шина, три провода подключить и все, они напрямую идут к ногам чипа и ошибиться сложно. Если конечно чип не SPI (с буквой A на конце). Если подозрения что не ставится адрес - попробуйте перебрать адреса в GUI (оставив только один энкодер на шине) пока он не определится. Да, ещё замечание - “I2C high speed” не должен быть включен - эти энкодеры только на 400kHz работают.
Да, ещё замечание - “I2C high speed” не должен быть включен - эти энкодеры только на 400kHz работают.
Алексей, если бы можно было поставить 3 раза спасибо - поставил бы))) все заработало, по крайней мере только что все энкодеры отозвались в диагностике. Но я (как и многие пользователи) не ясновидящий - почему же об этом нигде не написано? Я наоборот считал, что повышенная скорость шины нужна, т.к. большее кол-во потребителей (да, потребительское отношение, я пилот и некоторые вещи в электрике только познаю)))
Еще раз спасибо, пошел настраивать.
Ну вот, все откалибровалось, работает отлично. Система передачи информации с ява со слипрингом не дает люфтов. Эпопея с настройкой закончилась, теперь надо все убрать в коробки (буду печатать) и на поле для летных испытаний.
Энкодеры - вещь. И с учетом темы на стедиках обязательно ставьте их! Я поставил на подвес ради увеличения возможностей ява (иногда сдувало) - результат прекрасный! В данной конфигурации подвес никогда не мог держать углы, которые держит теперь. Усилие отличное. По энергопотреблению и безотказности - буду тестировать.
Ну вот, все откалибровалось, работает отлично
ээх, поздравляю, хоть общими усилиями за пару страниц постов к чему то пришли, дико интересно потребление,
c Алексеем (Vecmilgravis) поставили такие штуки
удобно и видно все
поставили такие штуки
удобно и видно все
Ну такой штуки у меня нет. Я скорее смогу в сравнении сказать, как было - как стало. На 4 банках 1000 ман подвес работал около часа. Сейчас явно будет меньше, уровень мощности моторов на минимуме - значит и есть будет меньше. Поведение соответствует тому, как должно быть с энкодерами.
Но вот есть у меня скромный такой вопрос. А кто подскажет, за счет чего энкодеры так изменяют работу двигателя? Почему увеличивается усилие, уменьшается потребление и пропадают шаги? Каков механизм этой панацеи?
Ну такой штуки у меня нет.
дк тестером не интерсно тыкнуть и узнать сколько ест устройство разве?
А кто подскажет, за счет чего энкодеры так изменяют работу двигателя? Почему увеличивается усилие, уменьшается потребление и пропадают шаги? Каков механизм этой панацеи?
я так понимаю за счет того, что когда моторы в покое они не так же потребляют нежели без энкодеров, когда постоянно удерживают на том power которое указанно, может меня и поправят
А кто подскажет, за счет чего энкодеры так изменяют работу двигателя?
ну я не спец в этом, но предпологаю за счет того что система очень точно понимает на каком моторе больше нагрузки, за счет того что сенсор ловит горизонт, контроллер ообрабатывает эти данные, а энкодеры сообщают угловые отклонения, вот и получается что когда отклонений нет или они минимальны, то не надо столько мощности, ну и отсюда точность управления повышается, следовательно и нет подергиваний. А вот точные алгоритмы знает только Алексей.
то не надо столько мощности, ну и отсюда точность управления повышается, следовательно и нет подергиваний. А вот точные алгоритмы знает только Алексей
Ок. Мощность понизилась - это ладно. Усилие почему увеличилось? Куда шаги делись?
Вопрос просто для общего развития, думаю полезно разобраться.
тестером не интерсно тыкнуть и узнать сколько ест устройство разве
Проверю, сейчас тестер на 200 мА, найду побольше и проверю.
Куда шаги делись?
То есть уже просто так не перещёлкивается мотор совсем, даже если сильно его провернуть?
Усилие почему увеличилось? Куда шаги делись?
за счет линейности усилия, раньше как усилие было, нарастает потом бац сорвалось, все кратно полюсам, и получается что не попал в фазу задрожало и сорвало, вот и приходилось пиды понижать.
а шаги все там же, просто теперь система точно знает (14бит = 0.02гр) где сейчас мотор. Я думаю Алексей если прочитает, то отпишет более подробно.
дк тестером не интерсно тыкнуть и узнать сколько ест устройство разве
у меня в спокойствии 0.04А=40мА, под нагрузкой (если рукой двигать все оси сразу) до 0.9А, если просто болтать то не больше 0.1А
Я думаю Алексей если прочитает, то отпишет более подробно.
Думаю всем было бы полезно.
То есть уже просто так не перещёлкивается мотор совсем, даже если сильно его провернуть?
Да, именно так. Мотор стал “резиновый” - упругий и без трещотки.