Создание собственной системы стабилизации

mahowik
HikeR:

так может просто не нужно отключать фильтры и мучаться с максимальной частотой

так фильтры никто не отключает… отключать, это если полный спектр гармоник надо глянуть…

HikeR:

если и так все работает?

не работает в том и дело… тут, как писал выше, именно в искажении исходного сигнала внутренним АЦП, когда синусоуда режется ограничением диапазона акселя…
т.е. смотри, внутри мемс цифр. акселя: аналог. аксель => АЦП => цифровой НЧ фильтр… так искажение происходит уже после АЦП и далее данные уже не верные как не фильтруй (по осям где переполнение произошло)…

я пользовал VibAnalyser… плюс в том, что вибрации меряем самим полетным контроллером, т.е. по сути тем же сенсором на котором летаем…
если есть ардуина или контроллер на меге то вот:
rcopen.com/forum/f134/topic224135/199
rcopen.com/forum/f134/topic224135/218

им же и моторы пробовал балансить… все отлично видно…

upd: вот кстати нашел всю историю как это было… читать отсюда + много страниц 😃

mataor
mahowik:

я пользовал VibAnalyser… плюс в том, что вибрации меряем самим полетным контроллером, т.е. по сути тем же сенсором на котором летаем…
если есть ардуина или контроллер на меге то вот:
Виброизоляция, виброразвязка и демпфирование. Балансировка.
Виброизоляция, виброразвязка и демпфирование. Балансировка.

им же и моторы пробовал балансить… все отлично видно…

О… когда-то видел… потом доолго искал но найти не мог… Опять возродилась идея добавить ее в виде модуля к коду вия (как уже добавил модуль прошивки регулей ESC_USBLinker)

rual

Ну понаписали )))

Sir_Alex:

Как теорему Котельникова применить к обработке Аналогово сигнала я знаю. Sample Rate тут по всей видимости никаким боком (Это частота на которой обновляются регистры с выходными данными)

На самом деле всё связано со всем:) Ща попробую объяснить, берём данные гиры, которая формирует их с частотой 200Гц, а мы получаем и обрабатываем их с частотой 50Гц. Получается мы получаем только каждый 4й отсчёт. Что мы получим при интегрировании? Мы каждый раз пропускаем 3и отсчёта в течении которых может быть “горбик”, либо “провал”. Соответственно в первом случае при интегрировании мы получим “недокрут”, в последнем “перекрут”. А может быть ещё хуже, допустим гира дает гармонический сигнал кратный частоте обработки, и мы можем в данном случае получить попадание либо в максимумы, либо в минимумы. В первом случае будет постояное вращение в одну сторону, в последнем в другую, а на самом деле имеется гармоническая вибрация со средней линией в нуле. Более сложные ситуации сами себе нафантазируйте (например частоты биений). Т.е. чтобы правильно интегрировать сигнал, нам нужна его полная форма. Увидели Котельникова?
Для “абсолютных” датчиков это не так важно, т.е компас будет показывать примерно в одном направлении, ну немножко будет уплывать мат.ожидание (тоже самое с ГПС). А вот если аксель используем для быстрого получения верт. скорости, то этот момент тоже крайне важен, а для горизонта не очень:)

Sir_Alex
mahowik:

я пользовал VibAnalyser… плюс в том, что вибрации меряем самим полетным контроллером, т.е. по сути тем же сенсором на котором летаем… если есть ардуина или контроллер на меге то вот: Виброизоляция, виброразвязка и демпфирование. Балансировка. Виброизоляция, виброразвязка и демпфирование. Балансировка. им же и моторы пробовал балансить… все отлично видно… upd: вот кстати нашел всю историю как это было… читать отсюда + много страниц

Я когда говорил про FFT, в общем то и имел ввиду VibAnalyzer. Но я хотел бы его расширить. Что бы можно было на ходу менять фильтры и видеть результат. Ну и как дополнение, возможность управлять движками с пульта.

mahowik
rual:

На самом деле всё связано со всем Ща попробую объяснить, берём данные гиры, которая формирует их с частотой 200Гц, а мы получаем и обрабатываем их с частотой 50Гц. Получается мы получаем только каждый 4й отсчёт. Что мы получим при интегрировании? Мы каждый раз пропускаем 3и отсчёта в течении которых может быть “горбик”, либо “провал”. Соответственно в первом случае при интегрировании мы получим “недокрут”, в последнем “перекрут”. А может быть ещё хуже, допустим гира дает гармонический сигнал кратный частоте обработки, и мы можем в данном случае получить попадание либо в максимумы, либо в минимумы. В первом случае будет постояное вращение в одну сторону, в последнем в другую, а на самом деле имеется гармоническая вибрация со средней линией в нуле. Более сложные ситуации сами себе нафантазируйте (например частоты биений). Т.е. чтобы правильно интегрировать сигнал, нам нужна его полная форма.

ну вот чтобы не было проскоков по гире, ставим ее внутр. лпф на частоту как мин в два раза ниже частоты интегрирoвания… тогда и Котельников улыбается и сигнал полной формы 😃

rual:

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

если делать позиционирование по акселю (с коррекцией по гпс), то и для горизонта важно…

Sir_Alex:

Я когда говорил про FFT, в общем то и имел ввиду VibAnalyzer. Но я хотел бы его расширить. Что бы можно было на ходу менять фильтры и видеть результат. Ну и как дополнение, возможность управлять движками с пульта.

та вроде как стенд уже и не нужен… т.е. все уже понятно что куда прописать 😃

rual:

Да, это без калибровки. Особо не вижу в этом смысла, по кругу расхождение в максимумах единицы градусов.

хммм… как так? магнетометр там уже с завода калиброванный чтоль? т.е. биасы его надо узнать както…

HikeR

действительно, понаписали.

rual:

берём данные гиры, которая формирует их с частотой 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};

более с этими цифрами не делается ничего.

mahowik:

чтобы не было проскоков по гире, ставим ее внутр. лпф на частоту как мин в два раза ниже частоты интегрирoвания

а если есть только гира без встроенной обработки, есть какие-либо реализации “на посмотреть”?

mahowik
HikeR:

действительно, понаписали

ну так не флуд всякий, а по делу! 😃 а вы расстраиваетесь…

HikeR:

а если есть только гира без встроенной обработки, есть какие-либо реализации “на посмотреть”?

вопрос про аналоговые гиры?

HikeR
mahowik:

вопрос про аналоговые гиры?

не, городить фильтры на ОУ мне сейчас некстати ;)
есть набор данных (вернее несколько) с датчиков в покое, есть старые wav-ники с “записанными” вибрациями, есть на худой конец генератор всяко-разного шума. вот и хочется глянуть пошагово, как и зачем все эти цифровые LPF/HPF-ы работают.

p.s.
вобщем-то, вопросы снимаются, надыбал книжку “Стивен Смит. Цифровая обработка сигналов”, теории и абстракций минимум, практических примеров достаточно, как раз для моего уровня ;)

mahowik
HikeR:

вопросы снимаются, надыбал книжку “Стивен Смит. Цифровая обработка сигналов”, теории и абстракций минимум, практических примеров достаточно

чаще всего википедии хватает, но выкладывай, если полезная и если это не нарушит никаких копирайтоФ… 😃

HikeR

английская авторская онлайн-версия тут, а русская не менее полезная, но нарушит.

SergDoc

Я сегодня обнаружил ошибку в схеме - не было питания аналоговой части (глюк Игла - не содинил цепь почему-то) пришлось после этого дабы не плодить лишних дырок, поставить несколько пофигисторов (нулевых резисторов), думаю страху большого не будет, да и если что закорочу они первыми сгорят 😃

SergDoc

Ну а вот так будет выглядеть слепленая на скорую руку верхняя плата, надеюсь в выходные начну делать обе…

DVE

Здесь вроде самый грамотный народ собрался, поэтому не будет большим оффтопом: Autoquad 6.5 (уже настроенный) для опытов и экспериментов никому не нужен? Кому надо, отдам по себестоимости, пишите в лс.

Sir_Alex

Я тут случайно нашел документик (может кому то и будет полезен)
docs.google.com/document/d/…/edit?pli=1
Тут описывается алгоритм полета по точкам, который планируется встроить в ArduPlane.

SergDoc

Оживил немного Github, теперь есть раздел Hardware, выложил схемы платы и библиотеку github.com/SergDoc/Nev_MultirotorControl
так что копируйте, изготавливайте (если не страшно) изменяйте по соему усмотрению, вобщем можно делать всё что угодно с этими файлами 😃
если надо продублирую сюда…

SergDoc

Да чтож такое-то, тонер нормально не садится, хватило только на сверловку (думаю ладно хоть высверлю отверстия, а потом уже нормальный тонер найду да вытравлю платки), так нет-же все свёрла 0.7 тупые (весь пакетик перетрёс), ладно - натфиль наше всё - пошло дело, блин сверлилка сдохла 😦 , неужели у меня руки на столько кривые, или просто день не задался, вот зачем спрашивается столько приключений? надо наверно потратится и заказать платки, а то ведь психану и брошу нафиг, неее не брошу, и так далеко зашел 😃

SergDoc
SergDoc:

Оживил немного Github, теперь есть раздел Hardware, выложил схемы платы и библиотеку

Внимание! Сергей Rabbit_Fly обнаружил у меня ошибку в разводке платы, дорожка BOOT0 пересекает питание и корпус! Ошибку я исправил, но пока не перезаливал, надо немного подшаманить (постараюсь переходные отверстия сделать 0.8 - у меня свёрла есть хорошие такие) и есть ещё мысли по оптимизации, как справлюсь сообщу…

Alexey_1811
SergDoc:

Картинка:

Красота.
Скажите, на сколько точно определяется высота по бародатчику?
Валяю ОСД и вот у меня дилемма, высоту брать с ЖПС или барометра.

Sir_Alex
Alexey_1811:

высоту брать с ЖПС

Отсюда точно не стоит. Баро может обеспечить точность в несколько десятков сантиметров. А используя Z аксель, так практически сантиметры.