Уф! Слава богу, поборол третью ось! Из-за нее летели постоянные ошибки по I2C! Восмибитная плата от Алекса и платка третьей оси никак не хотели дружить.( Грешил на провода, пропущенные внутри пустотелых валов. Пробовал экранировать их. Разводить провода на датчик дальше от силовых. Ничего не помогало. Пришлось пол дня читать ветку на rcdesign! В итоге скопировал все в один файл и записал. Помогло!
...В моем случае платы были разнесены на расстоянии 15см и соединялись землей тонким, 0.5 МГТФ проводом. Поставил платки рядом, тем самым убрал лишнюю емкость проводов на датчик, все-таки 15см тоже какая-то помощь, а главное соединил две платы надежной землей, толстым проводом. И случилось чудо. Ошибки прекратились, подвес стал адекватным. Пока тонко не настраивал, работает веь! Сегодня первые испытания, от добра добра не ищут! ...Главное провода от датчика идут вместе с силовыми через пустотелые валы моторов без ферритовых колец и экранов.
Кстати вот выдержки из вышеуказанного сайта, эдакая каша! Может кому пригодится? Уж больно муторно всю ветку перелапачивать)))!!!
===
===
===
Дергание может быть если строил пиды и мощность на просаженной батарее, а потом ставишь свеже-заряженную и мощи уже много
все расколбасы от неровности геометрии и люфтов, датчик начинает вибрировать самовозбуждает систему, так же стоит ПИДы настроить.
Если есть тряска, регулировал PID-ами и мощностью на двигатели. Добивался "тишины", т.е. отсутствием всякого "подергивания" моторов.
Была такая проблема в связи с плохой жесткостью закрепа камеры-она резонирует с мотором. Снизу на подвесе заметно что-то пористое - если это что-то мягкое - убрать. Камера должна быть очень жестко притянута к площадке, а площадка очень жестко к мотору.
Плавает горизонт? Калибруйте по 6 точкам.
Калибровка датчика по 6 точкам: Взял датчик, отстегнул от подвеса, положил горизонтально, нажал "калибрэйт акс", подождал пока проморгается сетодиод, повернул датчик на переднее ребро, нажа ал калибрэйт..., подождал промаргивание, повернул датчик на спину нажал на калибрыйт, подождал, поставил на заднее ребро, нажал подождал... Повернул на левое боковое ребро нажал подождал, повернул на правое ребро, нажал подождал... ВСЁ
I2C , она-же TWI разрабатывалась как низкоскоростная шина для подключения к контроллерам медленной периферии в пределах платы ...
она изначально не предназначена для работы в условиях сильных помех и для подключения удаленных устройств ...
потом её разогнали в 4 раза ...
мы со времен МК и MultiWii упорно пытаемся использовать её не по назначению цепляя то регули , то датчики на отдельных платх , притом на высокой скорости ...
мало того , мы еще и цепляем туда устройства с разными уровнями сигнала ...
вот три фактора в сумме (длинная шина, помехи , низкий уровень сигнала ) и приводят к таким результатам ...
в идеале нужно повозможности убирать все 3 фактора ....
1. хороший провод к датчику с толстой изоляцией (меньше емкость) ...
2. ферритовые кольца на кабели моторов ...
3. хорошая толстая земля между платами основного контроллера и третьей оси ...
4. датчик подключаеть через LLC , притом LLC фильтры на датчик желательно ставить непосредственной близости от датчика , по кабелю лучше пускать сигнал 5в уровня ...
схему публиковали наверное мульён раз , навсяк случай повторю
можно купить готовый у китайцев http://www.ebay.com/...=STRK:MEBIDX:IT
лично я использую не эту схему а PCA9306 ... как её использовать подробно расписано в даташите ...
уменя еще осталось некоторое количество платок от RU-IMU , на которые можно припаять PCA9306 и MPU6050 , если сильно нада могу поделиться ...
Пропробуйте, кто-нибудь, запитать плату третьей оси вместе с ее мотором от отдельного аккумулятора. Если ошибки на шине i2c пропадут, тогда будет ясно, как их побороть.
Что такое ПИДы на примере копания траншеи
P – чувствительность мотора. В зависимости от того, что требуется сделать, контроллер подает на него электричество, ровно столько сколько нужно для выполнения действия. Так вот этот параметр отвечает за соответствие того, что говорит регулятор и реальными действиями мотора. Контроллер говорит: «копать траншею, 3 метра». Регулятор: «махать лопатой?» «тыкать лопатой в землю?» ну и если вам повезло, то «копаю лопатой 3 метра, плюс минус метр».
I – скорость выравнивания подвеса. Подвес пальцем сдвинули, он возвращается в нормальное положение. С какой скоростью он это делает, отвечает этот параметр.
D – обратная компенсация P. Когда Р все четко отрабатывает, у него есть некий излишек действий, выражаемый в виде вибрации (вроде все отлично, но настолько усердно, что аж дрожит ☺) Вот D – это аля «дружище полегче, надо выкопать траншею 3 метра, а не 3 метра и плюс минус метр.» Вот этот плюс минус метр и убирает D.
PWM – сила с которой мотор удерживает подвес. Тут все просто. Если на лопату давить еле-еле, то лопата не войдет в землю. Так и подвес будет падать при наклонах. Если значение слишком высокое, то работать все будет отлично, но недолго (моторы когда-нибудь перегреются и сгорят). Опять же в примере с траншеей: лопату можно с небольшим усилием воткнуть в землю и чутка придавив ногой воткнуть, затем поднять землю и откинуть на полметра в сторону – и все отлично. А можно: со всей дури двумя руками втыкать лопату в землю, с размаху ногой бить по лопате, чтобы та влетела в землю, потом подняв землю со всей силы откидывать ее метров на 5 в сторону. Результат тот же – 3 метра траншеи, но в первом варианте вы чутка поднапряжетесь, а во втором случае с отдышкой и сошедшими 7 потами будете офигевать от усталости. А если надо выкопать 100 метров? Правильно работая по второму варианту, вы просто умрете на половине пути.
Сам процесс настройки
И так моторы перемотаны, подвес собран, контроллер и датчик подключены, камера установлена. Самое главное подвес собрать таким образом, чтобы по умолчанию он сам по себе стоял ровно и не заваливался, самое простое отбалансировать всю систему двигая камеру, используя ее как противовес моторам.
Включаем и видим, как вся эта конструкция живет обсолютно своей жизнью.
Шаг 1
Ставим P=5 I=0 D=2 PWM= 20
При таких значениях танцы подвеса должны прекратиться и подвес просто болтается, как сопля на ветру
Шаг 2
Калибруем датчик. Я просто кладу всю конструкцию на стол, так чтобы датчик лежал ровно и нажимаю калибровку. Во время калибровки подвес руками нетрогать и вообще в его сторону лучше не дышать.
Датчик лучше всего располагать на пересечении линий осей моторов и посадить жестко на клей или прикрутить винтами. Такое расположение избавит от необходимости дальнейшей настройки положения датчика относительно центра осей, что просто экономит время и нервы. Крепить на двусторонний скотч недопускается, 2 раза пробовал – 2 раза всю конструкцию колбасило. Хотя можно поиграться со скотчами разной толщины, мне проще на клей посадить. Датчик располагается Y - в сторону куда смотрит камера, Х – влево или вправо.
Шаг 3
Отключаем мотор Pitch
Шаг 4 (для Roll)
Теперь с шагом в 5 единиц увеличиваем PWM. До тех пор пока на моторах не появится такое усилие, чтобы удержать ось. Можно просто просто пальцами пошевелить подвес и будет понятно есть усилие на моторе или нет.
Шаг 5 (для Roll)
Ставим I=0,1 или любое другое минимальное значение
Шаг 6 (для Roll)
С шагом в 2 единицы увеличиваем P. До тех пор пока подвес не начнет держать правильное положение и появится легкая вибрация. Появилась вибрация - уменьшаем значение Р на 1 единицу.
Шаг 7 (для Roll)
С шагом в 1 единицу увеличиваем D. До тех пор пока вибрация не пропадет или почти пропадет
Шаг 8
Подключаем мотор Pitch. Повторяем шаги 4-7 для Pitch. Если моторы у вас одинаковые, то значения у вас должны быть ниже чем для Roll. Связано с тем, что ось Pitch менее нагружена (еще есть момент про работу самого датчика и его удаленность, но не будем вдаваться в дебри)
Шаг 9
С шагом в 0,05 единиц увеличиваем значение I. Наклоняем подвес и смотрим как резко он возвращается назад. Молниеносной скорости тут не надо, все должно быть плавно и четко, резкие движения при съемках недопустимы.
Шаг 10
Если у вас осталась легкая вибрация по осям, то попеременно пощелкайте с шагом 1 единицу значения P и D (но не меняйте значения больше чем на 1 единицу, т.е. ваши итоговые значени P и D не должны отличаться от тех, что были получены в шаге 7 более чем на 1 единицу) Вибрация пропадет.
Шаг 11
Берем подвес и крутим, вертим, тестируем и наслаждаемся результатом.
Еще одна проверка: берем подвес и вращаем его вокруг своей оси (оси Z), камера должна стоять ровно. Если при поворотах камера наклоняется, то перекалибруйте датчик. Ось Х (Pitch) не соответствует реальному горизонту, как вариант воспользуйтесь уровнем (пузырьковым или в мобильнике) для выравнивания датчика перед калибровкой.
Ну и довесок (может пригодится кому):
Мои настройки для подвеса RCTIMER 2-Axis Brushless Gimbal For GoPro (с моторами HP2212 / 0.15мм / 70T / 18 Ом) ну гоупроху соответвенно:
P=15 I=0,2 D=10 PWM=130
P=9 I=0,2 D=9 PWM=70
PS: Надеюсь статья поможет новичкам типа меня, которые только пытаются понять что к чему. Старожилам и Гуру просьба сильно не пинать. В свою очередь хочу выразить респект SteinDen за пост #227 (обязательно к ознакомлению) который дал возможность хоть как то попробовать понять процесс настройки.
=================================================
Горячий двигатель = слишком большое значение PWM (и / или механически несбалансированный подвес, моторы перегружены, работают неэффективно, возможны срывы в движении). Помните - подвес должен быть очень точно сбалансирован. Только в этом случае, возможно добиться нормальной работы подвеса.
Слишком высокое значение PWM = Не позволит увеличивать значение P свыше определенного значения - при этом возникают осцилляции, мотор начинает вибрировать, трястись.
P слишком низкий = плохая точность и значительный дрейф системы.
Полюса мотора - указывается количество магнитов двигателя. Обычно - 14. Было замечено, что ввод фактического числа полюсов мотора не всегда дает положительный результат. Например для 28 полюсного мотора - установка значения 28 приводила к гораздо худшей работе, то же самое для мотора с 6 полюсами - лучшие значения для работы были 12 и 14. Рекомендуется устанавливать значения 12 или 14.
Процедуру настройки подвеса лучше проводить поэтапно, сначала одну ось, потом другую. Для этого, можно отключить провода мотора от платы контроллера, или выставить значение maxPWM = 0. Обычно, я начинаю с оси Roll.
Установите значения IAcc=0, P=20, D=2, max PWM (Power) 40 для проведения тестов.
Шаг 1:
Наклоните подвес, обратите внимание на камеру - остается ли она в своем положении, или при движении видны срывы. Так же можно немного потрясти, имитируя воздействие внешних сил, чтобы убедиться, что момент развиваемый двигателем достаточный для удержания камеры в заданной позиции.
Если камера не удерживается в первоначальном положении, увеличьте значение maxPWM на 5 единиц и вернитесь к Шаг 1 заново.
Если мощность на валу мотора достаточна для удержания камеры, следуйте к следующему шагу.
Шаг 2:
Включите график (Chart), удерживайте подвес в руках примерно по уровню. Вращайте подвес на 90 градусов. Обратите внимание на разницу в углах графиков. Это дрифт. Выключите график.
Шаг 3:
Увеличьте значение P на 5 единиц.
Шаг 4:
Появилась вибрация, тряска?
Если Нет - возвращайтесь к Шаг 2.
Если Да - увеличьте значение D на 0,1.
Теперь, возвращайтесь к началу Шаг 4 и повторите процедуру.
В конце концов, вы получите такое значение D, которое уже не сможет устранять осцилляции, вызываемые высоким значением P. В этом случае, уменьшите немного значение P, при этом возможно придется подкорректировать D. Теперь все. Это лучшее, что можно было получить от вашего подвеса.
Проследуйте к Шаг 2, и обратите внимание, что величина дрифта, отображаемая на графике стала значительно меньше, а это означает, что достигнуто более высокое качество работы подвеса.
Теперь установите значение Iacc равное 1 или 2, для того, чтобы подвес возвращался точно в уровень. Это также может вызвать осцилляции. В этом случае необходимо немного уменьшить значения P и\или maxPWM.
При подключении второго двигателя, или установки значения maxPWM отличное от нуля, вы можете заметить, что ранее настроенная ось начала вибрировать. В этом случае следует увеличить значение D и\или уменьшить P, maxPWM.
Ось Pitch более чувствительна к осцилляциям, чем ось Roll. Я полагаю, это объясняется тем, что мотор Roll, расположенный дальше всего от датчика MPU6050, оказывает меньше всего низкочастотного воздействия. Двигатель Pitch, наоборот расположен ближе всего к плате гироакселя MPU6050.
Все современные MEMS гироскопы\акселерометры работают благодаря пьезоэлектрическому эффекту и имеют отличный микрофонный (акустический) эффект. По мере удаления источника вибрации( мотора Roll) становится возможным применение гораздо более высоких значений P и maxPWM, чем для оси Pitch. Отсюда следует такая практическая рекомендация - ставить на ось Pitch гораздо меньший по размерам двигатель, чем на Roll, тем более, ось Pitch является менее нагруженной. Это позволит увеличить значение P и maxPWM.
Старайтесь избегать применения моторов с "запасом мощности". Это даст большие сложности с настройкой - преждевременное появление осцилляций, большой вес всего подвеса. Некачественная работа всей системы.
Для нагрузки в виде GoPro, для оси Pitch более чем достаточно мотора 20 - 25 грамм, с 6 полюсами. При этом maxPWM будет на уровне 90-120. Для оси Roll в зависимости от конструкции подвеса и его массы возможно потребуется более крупный мотор.
Ну и раз уж сообщение переросло в мини FAQ - если у вас слишком длинный , тонкий провод ( в моем случае это проблемный силикон AWG28) идущий к MPU6050, вы можете заметить, как подвес начинает жить своей жизнью - крутится по всем осям произвольно. В этом случае, достаточно установить резисторы 1 Ком вместо 4,7 кОм на плате контроллера БК подвеса. На фото обозначено красным кружком. Для плат версии 3. Таким образом мы изменили номиналы подтяжки шины I2C.