Стедикам из подвеса на бесколлекторных двигателях.

Vecmilgravis

Проверьте, звонятся ли точки для проводов на плате SDA и SCL на ноги микрух. У меня на неработающей плате звонились только при сильном нажатии, т.е. микруха как бы висела над платой и не была пропаяна.
Вы пробовали работающую плату переключить с PWM на I2C?
Данные вроде видны сразу без калибровки (ИМХО)
Если отключены какие то из осей во вкладке Дополнительно, то на этих осях нету рав данных с энкодеров в Диагностике, даже если на этих осях энкодеры выбраны.

V_I_P_E_R
Vecmilgravis:

звонятся ли точки для проводов на плате SDA и SCL на ноги микрух

да, без нажатия

Vecmilgravis:

Вы пробовали работающую плату переключить с PWM на I2C?

Нет, перепаивать ноги придется, да и PWM уже готовый, вклеен.

Vecmilgravis:

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

Это в смысле выходы на моторы? Выходы включены и соответствуют осям. Все моторы работают и стабилизируют. Но не работают энкодеры)

Написал в техподдержку Basecam - надеюсь, жду.

V_I_P_E_R
alexmos:

Алгоритм контроля мотора завязан на энкодеры,

Алексей, а нет ли варианта какого-либо расширения кол-ва PWM? Не хватает двух каналов для подключения энкодеров и получается вся описанная в данной ветке проблема с подключением их по i2c. Если бы был вариант какого-то “сплиттера” для PWM - было бы проще. Каналы задействованы управлением с пульта всех каналов + переключение режимов.

alexmos
V_I_P_E_R:

Алексей, а нет ли варианта какого-либо расширения кол-ва PWM?

Есть решение - все управление вы може завести через Sum-PPM (на входе RC_ROLL в обычной прошивке или AUX3 в энкодерной). Упаковать 8 PWM каналов в Sum-PPM можно с помощью кодировщика, они часто продаются вместе с ардупилотом, стоят копейки. Или, если у вас приемник имеет такой выход, можете его использовать. Можно и самому сделать из ардуины.

Но вообще странно что I2C завести не удается. Это ж самая простая шина, три провода подключить и все, они напрямую идут к ногам чипа и ошибиться сложно. Если конечно чип не SPI (с буквой A на конце). Если подозрения что не ставится адрес - попробуйте перебрать адреса в GUI (оставив только один энкодер на шине) пока он не определится. Да, ещё замечание - “I2C high speed” не должен быть включен - эти энкодеры только на 400kHz работают.

V_I_P_E_R
alexmos:

Да, ещё замечание - “I2C high speed” не должен быть включен - эти энкодеры только на 400kHz работают.

Алексей, если бы можно было поставить 3 раза спасибо - поставил бы))) все заработало, по крайней мере только что все энкодеры отозвались в диагностике. Но я (как и многие пользователи) не ясновидящий - почему же об этом нигде не написано? Я наоборот считал, что повышенная скорость шины нужна, т.к. большее кол-во потребителей (да, потребительское отношение, я пилот и некоторые вещи в электрике только познаю)))
Еще раз спасибо, пошел настраивать.

Ну вот, все откалибровалось, работает отлично. Система передачи информации с ява со слипрингом не дает люфтов. Эпопея с настройкой закончилась, теперь надо все убрать в коробки (буду печатать) и на поле для летных испытаний.
Энкодеры - вещь. И с учетом темы на стедиках обязательно ставьте их! Я поставил на подвес ради увеличения возможностей ява (иногда сдувало) - результат прекрасный! В данной конфигурации подвес никогда не мог держать углы, которые держит теперь. Усилие отличное. По энергопотреблению и безотказности - буду тестировать.

Rovbuilder
V_I_P_E_R:

Ну вот, все откалибровалось, работает отлично

ээх, поздравляю, хоть общими усилиями за пару страниц постов к чему то пришли, дико интересно потребление,
c Алексеем (Vecmilgravis) поставили такие штуки
удобно и видно все

V_I_P_E_R
Rovbuilder:

поставили такие штуки
удобно и видно все

Ну такой штуки у меня нет. Я скорее смогу в сравнении сказать, как было - как стало. На 4 банках 1000 ман подвес работал около часа. Сейчас явно будет меньше, уровень мощности моторов на минимуме - значит и есть будет меньше. Поведение соответствует тому, как должно быть с энкодерами.
Но вот есть у меня скромный такой вопрос. А кто подскажет, за счет чего энкодеры так изменяют работу двигателя? Почему увеличивается усилие, уменьшается потребление и пропадают шаги? Каков механизм этой панацеи?

Rovbuilder
V_I_P_E_R:

Ну такой штуки у меня нет.

дк тестером не интерсно тыкнуть и узнать сколько ест устройство разве?

V_I_P_E_R:

А кто подскажет, за счет чего энкодеры так изменяют работу двигателя? Почему увеличивается усилие, уменьшается потребление и пропадают шаги? Каков механизм этой панацеи?

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

RuslanG
V_I_P_E_R:

А кто подскажет, за счет чего энкодеры так изменяют работу двигателя?

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

V_I_P_E_R
RuslanG:

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

Ок. Мощность понизилась - это ладно. Усилие почему увеличилось? Куда шаги делись?

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

Rovbuilder:

тестером не интерсно тыкнуть и узнать сколько ест устройство разве

Проверю, сейчас тестер на 200 мА, найду побольше и проверю.

lokanaft
V_I_P_E_R:

Куда шаги делись?

То есть уже просто так не перещёлкивается мотор совсем, даже если сильно его провернуть?

RuslanG
V_I_P_E_R:

Усилие почему увеличилось? Куда шаги делись?

за счет линейности усилия, раньше как усилие было, нарастает потом бац сорвалось, все кратно полюсам, и получается что не попал в фазу задрожало и сорвало, вот и приходилось пиды понижать.
а шаги все там же, просто теперь система точно знает (14бит = 0.02гр) где сейчас мотор. Я думаю Алексей если прочитает, то отпишет более подробно.

Rovbuilder:

дк тестером не интерсно тыкнуть и узнать сколько ест устройство разве

у меня в спокойствии 0.04А=40мА, под нагрузкой (если рукой двигать все оси сразу) до 0.9А, если просто болтать то не больше 0.1А

V_I_P_E_R
RuslanG:

Я думаю Алексей если прочитает, то отпишет более подробно.

Думаю всем было бы полезно.

lokanaft:

То есть уже просто так не перещёлкивается мотор совсем, даже если сильно его провернуть?

Да, именно так. Мотор стал “резиновый” - упругий и без трещотки.

alexmos
V_I_P_E_R:

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

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

V_I_P_E_R:

Но вот есть у меня скромный такой вопрос. А кто подскажет, за счет чего энкодеры так изменяют работу двигателя? Почему увеличивается усилие, уменьшается потребление и пропадают шаги? Каков механизм этой панацеи?

Алгоритмы управления совсем разные. Без энкодеров мотор работает как синхронный двигатель - крутится магнитное поле постоянной амплитуды и магниты за ним следуют. Но поле крутится независимо от того, успевает мотор или нет - такой информации у системы нет. С энкодерами мы знаем угол магнитов по отношению к полю, и работает векторное управление. Если по простому - поле не крутится дальше, если мотор остановился. И амплитуду можно в 0 сбросить, если не нужно усилие. Более подробно в этих отличных статьях:
geektimes.ru/company/npf_vektor/blog/270666/
geektimes.ru/company/npf_vektor/blog/269486/

vankinvenik

Может, уже появились моторы со слипрингами и енкодерами сразу?

V_I_P_E_R
alexmos:

Алгоритмы

Алексей, а есть ли возможность изменить скорость возврата в ноль в случае чрезмерной нагрузки? Срыва нет, но есть сдвиг от внешнего усилия например на 15 градусов. В ноль ось восстанавливается достаточно долго. Имею ввиду ось с энкодером.

Vecmilgravis
V_I_P_E_R:

Алексей, а есть ли возможность изменить скорость возврата в ноль в случае чрезмерной нагрузки? Срыва нет, но есть сдвиг от внешнего усилия например на 15 градусов. В ноль ось восстанавливается достаточно долго. Имею ввиду ось с энкодером.

От значения “I” в пидах очень зависит скорость возврата, разве нет?

У меня тоже вопросик. Через слипринги + кольцевые магниты + энкодеры - не могу избавиться от ошибок по I2C. На 8 бит можно было как то бороться толи резиками, толи кондюками, а на 32битке что то ещё можно попробовать, кроме колец на шнурки моторов? Когда моторы выключены - ошибок нет, когда включены - несколько штук в секунду. 😦

V_I_P_E_R
Vecmilgravis:

а на 32битке что то ещё можно попробовать, кроме колец на шнурки моторов?

А какая длина кабелей? У меня 2 на i2c с длинами 5 и 25 см. - ни одной ошибки.

Жестко установлены энкодеры? Я когда еще формировал модель крепления для печати крепил на времянку - ошибки лезли.

Vecmilgravis:

От значения “I” в пидах очень зависит скорость возврата, разве нет?

Это да, но я говорю не о стабилизации, а о восстановлении после внешнего воздействия (ну рукой повернули на 15 градусов ось питч например). А этот параметр по идее не меняется изменением ПИДов.

alexmos
V_I_P_E_R:

Алексей, а есть ли возможность изменить скорость возврата в ноль в случае чрезмерной нагрузки? Срыва нет, но есть сдвиг от внешнего усилия например на 15 градусов. В ноль ось восстанавливается достаточно долго. Имею ввиду ось с энкодером.

Сейчас в 8бит и 32бит эта скорость зависит от “I”, увеличивайте ее. Вот только недвано я это изменил, теперь на большом угле зависит от “OuterP” и “P”. В следующем релизе будет так.

Vecmilgravis
V_I_P_E_R:

А какая длина кабелей? У меня 2 на i2c с длинами 5 и 25 см. - ни одной ошибки.

Жестко установлены энкодеры? Я когда еще формировал модель крепления для печати крепил на времянку - ошибки лезли.

Длины от 15 до 50см, энкодеры закреплены жёстко. Но дело то в том, что в времянке провода были раза в полтора длиннее, и всё шевелилось, и ошибок не было, а
перепаял со слип рингами - и началось…