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

rual
SergDoc:

8192*4 = 32768 ну если дотошно то должно быть 32767 ибо 32768 уже -1 получается) так почемууу? аксель считается от 16 бит т.е. 65535 ??? они чё на бивнях считали что-ли?

погоди, не горячись, что uint16_t, что int16_t всё это одно и тоже 16-битное целое, только знаковое как бы “переломлено в минус” через нуль. Например, если счетчик 8 бит считает в минус …0х02, 0х01, 0х00, а дальше отрицательное переполнение 0xff=-1, 0xfe = -2… 0x80 максимальное отрицательное -128 ( для 16 бит -32768). Т.е ничего неизменилось, диапазон значений тот же 256 или 65536, меняется только “середина” диапазна не 0х80, а0х00.

SergDoc

i2cWrite(LSM330ACC_ADDRESS, LSM330_CTRL_REG4_A, 0x98) вот где кака - должно быть 0Х28, вылезла другая бяка - теряю ДУСы блин…

rual
SergDoc:

вылезла другая бяка - теряю ДУСы блин…

В телеметрию выведи сырые данные, а лучше отлачиком “проутюж”

SergDoc

в расчётах разобрался, датчик в 16g включался вот и считал что в два раза больше получаются делители, а следовательно и максимальное число, ДУСы рубятся где-то кальманом я и забыл совсем, что обновлял алгоритм…

SergDoc

Бугага, ДУСы душит файлсейв 😃
теперь у меня две версии с Кальманом и без, разницы пока не вижу…
а ЛСМ-ка по одной оси Y не досчитывает! вот и увод вправо!!!
В общем как только закажу платы для большОй, займусь переделкой Мелкоплаты - нравится она мне, только 6050 ставить не буду, а то NAZE32 получится 😃

Вот интересно, а почему правда в NAZE32 4-я ревизия два акселя, а никто не фильтрует их вместе? хватило бы и комплиментарного фльтра?

leprud
SergDoc:

Вот интересно, а почему правда в NAZE32 4-я ревизия два акселя, а никто не фильтрует их вместе?

Я тут для побочного проекта считал “векторы” вибраций отдельно акселей и отдельно гироскопов (датчик - пресловутый 6050). Дак несовпадение полное получил, что расстроило, понятное дело.
Причем вибрация - явно ниже 100 Гц, однако суммы квадратов (x^2+y^2) вращались относительно друг друга с изменяющейся частотой! То ли фазовая разница, то ли сам дурак…

Я к чему это все - насколько можно доверять данным с двух разных датчиков?

SergDoc

Буду пробовать калибровку по всем осям делать, делать то всё равно нечего, и посмотрю - нафига ФС душить ДУСы…

leprud:

Я к чему это все - насколько можно доверять данным с двух разных датчиков?

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

rual
leprud:

Причем вибрация - явно ниже 100 Гц, однако суммы квадратов (x^2+y^2) вращались относительно друг друга с изменяющейся частотой! То ли фазовая разница, то ли сам дурак…

Аксель и ДУС мериют разные физвеличины. Как они могли одинаковые (симфазные) данные показать?

leprud:

Я к чему это все - насколько можно доверять данным с двух разных датчиков?

Если датчики мериют одно и тоже, либо их приводят к одним величинам, но сами дачики разные ( и исправные), то можно повысить отношение сигнал/шум.

SergDoc

Копаюсь в акселе дальше - второй регистр:

#define LSM330_A_HPCF1		0x10	/* High-pass filter cutoff frequency selection	*/
#define LSM330_A_HPCF2		0x20	/* High-pass filter cutoff frequency selection	*/
#define LSM330_A_HPCF3		0x30	/* High-pass filter cutoff frequency selection	*/

выбор частоты среза, но нигде не написано какой?

rual
SergDoc:

выбор частоты среза, но нигде не написано какой?

см. стр. 39, там правда для гиры, но вроде как одинаково с акселем.

SergDoc

у гиры 3 бита у акселя 2?
Вечером попробовать надо…

rual
SergDoc:

у гиры 3 бита у акселя 2?

Частота среза и там и там 2 бита, частота дескретизации у акселя 4 бита.

SergDoc

Не на 39 странице для гиры задаётся и частота дискретизации и частота среза, у акселя в этом регистре только частота дискретизации 29стр. меня же интересует ВЧ фильтр акселя 30стр. у гиры 40 стр. у гиры я не использую хватает первого регистра 39стр. а у акселя такого нет…
Я сейчас могу задействовать лапу прерывания готовности, BMP выкинул и входы (аппаратные) прерываний свободны, к тому же дорожки около ЛСМ-ки проходят, было бы классно задействовать, хотя тоже самое и программным сделается…

DVE

А Вы не пробовали разобраться, что за данные умеет выдавать MPU6000/6050? Там же на борту какой-то onboard Digital Motion Processor заявлен, судя по описанию.

onboard Digital Motion Processor™ (DMP™) capable of processing complex 9-axis MotionFusion algorithms. The parts’ integrated 9-axis MotionFusion algorithms access external magnetometers or other sensors through an auxiliary master I²C bus, allowing the devices to gather a full set of sensor data without intervention from the system processor

SergDoc

А я разобрался куда деваются ДУСы при ФС - на этой платке PPM все каналы уходят при выключении передатчика в 1000, что как раз соответствует калибровке их любимых, в Wii по идее тоже самое будет происходить, значит либо переделывать ПО платки, а лучше всё-таки купить нормальные передатчик с приёмником…

Sir_Alex
DVE:

А Вы не пробовали разобраться, что за данные умеет выдавать MPU6000/6050? Там же на борту какой-то onboard Digital Motion Processor заявлен, судя по описанию.

Там 6axis а не 9. Кроме того, вун Дидроновцы уже давно пытаются заюзать DMP, но пока не видно результата. Хотя как вторичный AHRS его можно включить в Ардукоптере. В принципе и код можно оттуда передрать если очень надо, то разобраться там без описания будет сложновато.

SergDoc

Потанцевал с бубном вокруг акселя: перевёл на 400Гц, 1g=1024, acc_lpf_factor = 80. Дёрганий резких нет, имеется увод на 1.5-2 градуса. АХ (ещё не настраивал) имеют место прыжки 0.5м, при использовании акселя имеются небольшие осцилляции на снижении (с магнитометром ведёт себя чуть получше), в целом - лучше чем было но доверять ещё не стоит (акселю)…
а на зависть товарищам из ветки rcopen.com/forum/f123/topic156768/3835 серва быстрая цифровая Operating Speed: 0.07sec.60º/ 0.06sec.60º ведёт себя прилично без осцилляций (стоит как вкопаная в нужном положении)

rual

Сергей, несколько впросов. Это ты про ЛСМ330ю? acc_lpf_factor - праметр фильтра ЛСМ или проги? Из 400сот отсчётов все обрабатываешь?
Я без поднятия частоты отсчетов усреднил вектор от акселя и получил довольно стабильный горизонт, единственный недостаток при нескльких кувырках накаливается статистическая ошибка из-за замеделенной реакции полученного вектора,на самоль не пойдёт, но зато при плавныхполётах никаких завалов, а для самоля не так важна виброустойчивость. Так шта можно игратца коэффициентом усреднения.

SergDoc

Да про ЛСМ на 400 наблюдаю меньший шум, что в принципе странно, acc_lpf_factor - простое усреднение (80 - как раз получается как-бы 50 раз в секунду я получаю данные), надо всё-таки пробовать выводить ногу на прерывание и задействовать внутренний фильтр, иначе он не работает…
сегодня с акселем полетал почти как в акро, так что улучшения явно есть…

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

SergDoc

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

serj

А вот кстати, какие скорости снижения коптера являются критическими? Я слышал что на многих контроллерах наблюдаются осцилляции при быстром снижении… Сегодня пробовал “падать” на трикоптере с сотни метров м, быстрее 10-12 м/с страшно, но осцилляций нет. Ручка газа где-то на 20% газа была. Небольшие осцилляции (градусов 5…10 на глаз, не более) происходят если дать полный газ с целью быстро остановится, осцилляции происходят в момент гашения скорости. Если давать газ плавно, то осцилляций на глаз нет. торможу я метров с 25…