Создание собственной системы стабилизации
- гира 42гц - если для умеренных и быстрых полетов гира 20гц - для авто полетов, фпв и начнающих летунов Не смотря на довольно низкие значения скорости гир вполне хватает для четкой стабилизации и отброса вибраций… 2) аксель 5-10гц - при условии что внутреннее усреднение сделано по нормальному в чипе, т.е. при понижении LPF не уменьшается самплиннг… т.к. к примеру в какашечном adxl345 сделано именно уменьшением самплинга…
Эммм… так вроде в MPU, LPF выставляется одновременно для Гиры и Акселя.
Посмотрим какие будут отзывы о мерапирате 2,9 - там можно выбрать частоту LPF…
еще оч. важный параметр акселя это внутр. диапазон акселя… нужно брать 8-16g, иначе от вибраций и внутренних резонансов на этих самых вибрациях может происходить перенасыщение внутреннего АЦП акселя и тогда уже никакие внутр/внешн. фильтры и матеметика не помогут… типа как синусоида режется в меандр с диким расширением спектра гармоник…
в вие пока не доперли до этого, мучались с дрейфами в став/левел моде ибо “на столе” все пахало, а полете всплывало…
Эммм… так вроде в MPU, LPF выставляется одновременно для Гиры и Акселя.
ну да, я тоже задавался этом вопросом, но в даташит так и не залез… оставил на 42-20гц + внешний НЧ для акселя…
при понижении LPF не уменьшается самплиннг
неужто есть такие волшебные датчики??
нужно брать 8-16g
вот никогда не понимал этого. если аксель показывает цифры больше 2g, то его показания вобще можно не учитывать, а увеличение диапазона автоматом уменьшает разрешение. ну и если на аппарате идут вибрации больше 2g, то тут уже надо напильник брать, а не фильтровать.
вот никогда не понимал этого. если аксель показывает цифры больше 2g, то его показания вобще можно не учитывать
при переполнении плюс на минус поменяется 😦
вот никогда не понимал этого. если аксель показывает цифры больше 2g, то его показания вобще можно не учитывать, а увеличение диапазона автоматом уменьшает разрешение. ну и если на аппарате идут вибрации больше 2g, то тут уже надо напильник брать, а не фильтровать.
я не зря написал про внутренние резонансы самого акселя… дело скорее всего именно в них, т.к. тоже недоумевали откуда вибрации могут быть в таких кол-вах G…
но это уж факт, проводили тесты, спектр. состав смотрели и т.д… я делился подобными мыслями с vis.asta, так он подвердил тоже самое, что допер до этого уже год назад и у него 8g… а как у него летает, думаю все видели 😃
что до падения разрешения, то в норм. акселях даже при 8-16g это от 512 и выше, т.е. с головой т.к. нелинейность самих осей даст больше погрешности в разы…
плюс на минус поменяется
выкопал валяющийся CC3D, как мог колотил по столу, но увидел только “полочку” упирающуюся в дефолтные 8G. может все-таки предусмотрена хоть какая-то защита? или надо перешить на менее низкую чувствительность?
а как у него летает, думаю все видели
вот честно скажу, “как” - неинтересно, интересно “почему”.
Посмотрим какие будут отзывы о мерапирате 2,9 - там можно выбрать частоту LPF…
раньше кстати в арду 3g для bma180 выбрано было… посмотри что сейчас…
выкопал валяющийся CC3D, как мог колотил по столу, но увидел только “полочку” упирающуюся в дефолтные 8G.
калотить не надо 😃, это не то… отруби внутренний НЧ акселя, выставь самплинг на макс., вруби моторы и скорми данные FFT… увидишь много нового 😉, на некоторых полках газа от 30% и выше всплывают резонансы до 4g и это без пропов! видимо ВЧ вибрации моторов оч. хорошо совпадают с размерами и конструктивными особенностями мемс акселей в плане резонансов…
так может просто не нужно отключать фильтры и мучаться с максимальной частотой, если и так все работает?
да, мотор у меня один, вертолетный 😉 только “трансмиссия” вносит кучу бякости, сам мотор ~40K, основной ротор ~3К плюс хвостовой ротор ~14К (К = 1000об/мин). то есть получается связка ~660/50/230 Гц в всех 3-х плоскостях, цеплял когда-то пару мемс-микрофонов и писал с них на обычный диктофон, там такая каша, что просто удивительно как вобще может что-то работать.
так может просто не нужно отключать фильтры и мучаться с максимальной частотой
так фильтры никто не отключает… отключать, это если полный спектр гармоник надо глянуть…
если и так все работает?
не работает в том и дело… тут, как писал выше, именно в искажении исходного сигнала внутренним АЦП, когда синусоуда режется ограничением диапазона акселя…
т.е. смотри, внутри мемс цифр. акселя: аналог. аксель => АЦП => цифровой НЧ фильтр… так искажение происходит уже после АЦП и далее данные уже не верные как не фильтруй (по осям где переполнение произошло)…
я пользовал VibAnalyser… плюс в том, что вибрации меряем самим полетным контроллером, т.е. по сути тем же сенсором на котором летаем…
если есть ардуина или контроллер на меге то вот:
rcopen.com/forum/f134/topic224135/199
rcopen.com/forum/f134/topic224135/218
им же и моторы пробовал балансить… все отлично видно…
upd: вот кстати нашел всю историю как это было… читать отсюда + много страниц 😃
я пользовал VibAnalyser… плюс в том, что вибрации меряем самим полетным контроллером, т.е. по сути тем же сенсором на котором летаем…
если есть ардуина или контроллер на меге то вот:
Виброизоляция, виброразвязка и демпфирование. Балансировка.
Виброизоляция, виброразвязка и демпфирование. Балансировка.им же и моторы пробовал балансить… все отлично видно…
О… когда-то видел… потом доолго искал но найти не мог… Опять возродилась идея добавить ее в виде модуля к коду вия (как уже добавил модуль прошивки регулей ESC_USBLinker)
Ну понаписали )))
Как теорему Котельникова применить к обработке Аналогово сигнала я знаю. Sample Rate тут по всей видимости никаким боком (Это частота на которой обновляются регистры с выходными данными)
На самом деле всё связано со всем:) Ща попробую объяснить, берём данные гиры, которая формирует их с частотой 200Гц, а мы получаем и обрабатываем их с частотой 50Гц. Получается мы получаем только каждый 4й отсчёт. Что мы получим при интегрировании? Мы каждый раз пропускаем 3и отсчёта в течении которых может быть “горбик”, либо “провал”. Соответственно в первом случае при интегрировании мы получим “недокрут”, в последнем “перекрут”. А может быть ещё хуже, допустим гира дает гармонический сигнал кратный частоте обработки, и мы можем в данном случае получить попадание либо в максимумы, либо в минимумы. В первом случае будет постояное вращение в одну сторону, в последнем в другую, а на самом деле имеется гармоническая вибрация со средней линией в нуле. Более сложные ситуации сами себе нафантазируйте (например частоты биений). Т.е. чтобы правильно интегрировать сигнал, нам нужна его полная форма. Увидели Котельникова?
Для “абсолютных” датчиков это не так важно, т.е компас будет показывать примерно в одном направлении, ну немножко будет уплывать мат.ожидание (тоже самое с ГПС). А вот если аксель используем для быстрого получения верт. скорости, то этот момент тоже крайне важен, а для горизонта не очень:)
я пользовал VibAnalyser… плюс в том, что вибрации меряем самим полетным контроллером, т.е. по сути тем же сенсором на котором летаем… если есть ардуина или контроллер на меге то вот: Виброизоляция, виброразвязка и демпфирование. Балансировка. Виброизоляция, виброразвязка и демпфирование. Балансировка. им же и моторы пробовал балансить… все отлично видно… upd: вот кстати нашел всю историю как это было… читать отсюда + много страниц
Я когда говорил про FFT, в общем то и имел ввиду VibAnalyzer. Но я хотел бы его расширить. Что бы можно было на ходу менять фильтры и видеть результат. Ну и как дополнение, возможность управлять движками с пульта.
На самом деле всё связано со всем Ща попробую объяснить, берём данные гиры, которая формирует их с частотой 200Гц, а мы получаем и обрабатываем их с частотой 50Гц. Получается мы получаем только каждый 4й отсчёт. Что мы получим при интегрировании? Мы каждый раз пропускаем 3и отсчёта в течении которых может быть “горбик”, либо “провал”. Соответственно в первом случае при интегрировании мы получим “недокрут”, в последнем “перекрут”. А может быть ещё хуже, допустим гира дает гармонический сигнал кратный частоте обработки, и мы можем в данном случае получить попадание либо в максимумы, либо в минимумы. В первом случае будет постояное вращение в одну сторону, в последнем в другую, а на самом деле имеется гармоническая вибрация со средней линией в нуле. Более сложные ситуации сами себе нафантазируйте (например частоты биений). Т.е. чтобы правильно интегрировать сигнал, нам нужна его полная форма.
ну вот чтобы не было проскоков по гире, ставим ее внутр. лпф на частоту как мин в два раза ниже частоты интегрирoвания… тогда и Котельников улыбается и сигнал полной формы 😃
А вот если аксель используем для быстрого получения верт. скорости, то этот момент тоже крайне важен, а для горизонта не очень
если делать позиционирование по акселю (с коррекцией по гпс), то и для горизонта важно…
Я когда говорил про FFT, в общем то и имел ввиду VibAnalyzer. Но я хотел бы его расширить. Что бы можно было на ходу менять фильтры и видеть результат. Ну и как дополнение, возможность управлять движками с пульта.
та вроде как стенд уже и не нужен… т.е. все уже понятно что куда прописать 😃
Да, это без калибровки. Особо не вижу в этом смысла, по кругу расхождение в максимумах единицы градусов.
хммм… как так? магнетометр там уже с завода калиброванный чтоль? т.е. биасы его надо узнать както…
действительно, понаписали.
берём данные гиры, которая формирует их с частотой 200Гц, а мы получаем и обрабатываем их с частотой 50Гц.
по-моему, это поиск проблем на ровном месте. зачем принудительно снижать частоту опроса и попадать на т.н. “aliasing”? читаем 4 значения подряд, усредняем или еще как фильруем, на выходе те же 50Гц, но уже куда более достоверные. если железка слабая, то накой тогда такие частоты опроса, которые она (железка) не может обработать…
ради интереса пробежался по всяким арду и мегапилотам, блин, почти везде именно такая картина: опрашиваем датчики с частотой F, реально берем показания с частотой <F/2, затем обычно стоит туча фильтров и сглаживаний.
под рукой какой-то старый код из CC, читает весь накопившийся буфер акселя (который заведен на 3.2кГц, вроде бы, цикла хватает на 6-7 считываний):
do {
i++;
samples_remaining = PIOS_ADXL345_Read(&accel_data);
x += accel_data.x;
y += -accel_data.y;
z += -accel_data.z;
} while ( (i < 32) && (samples_remaining > 0) );
float accel[3] = {(float) x / i, (float) y / i, (float) z / i};
более с этими цифрами не делается ничего.
чтобы не было проскоков по гире, ставим ее внутр. лпф на частоту как мин в два раза ниже частоты интегрирoвания
а если есть только гира без встроенной обработки, есть какие-либо реализации “на посмотреть”?
действительно, понаписали
ну так не флуд всякий, а по делу! 😃 а вы расстраиваетесь…
а если есть только гира без встроенной обработки, есть какие-либо реализации “на посмотреть”?
вопрос про аналоговые гиры?
вопрос про аналоговые гиры?
не, городить фильтры на ОУ мне сейчас некстати ;)
есть набор данных (вернее несколько) с датчиков в покое, есть старые wav-ники с “записанными” вибрациями, есть на худой конец генератор всяко-разного шума. вот и хочется глянуть пошагово, как и зачем все эти цифровые LPF/HPF-ы работают.
p.s.
вобщем-то, вопросы снимаются, надыбал книжку “Стивен Смит. Цифровая обработка сигналов”, теории и абстракций минимум, практических примеров достаточно, как раз для моего уровня ;)
вопросы снимаются, надыбал книжку “Стивен Смит. Цифровая обработка сигналов”, теории и абстракций минимум, практических примеров достаточно
чаще всего википедии хватает, но выкладывай, если полезная и если это не нарушит никаких копирайтоФ… 😃
английская авторская онлайн-версия тут, а русская не менее полезная, но нарушит.
Я сегодня обнаружил ошибку в схеме - не было питания аналоговой части (глюк Игла - не содинил цепь почему-то) пришлось после этого дабы не плодить лишних дырок, поставить несколько пофигисторов (нулевых резисторов), думаю страху большого не будет, да и если что закорочу они первыми сгорят 😃
Здесь вроде самый грамотный народ собрался, поэтому не будет большим оффтопом: Autoquad 6.5 (уже настроенный) для опытов и экспериментов никому не нужен? Кому надо, отдам по себестоимости, пишите в лс.