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

SergDoc

Мои соображения ARM патентованая технология и за неё надо платить Cortex - ядро Грарвардской архитектуры, и с ним надо работать - так-то и так-то (библиотеки), а остальное обвязка по желанию производителя, по ней и даташит и написан… надеюсь ничего не напутал 😃

rual
SergDoc:

а кстати кеил не переваривает переменных объявленных прямо в цикле Код: float dT = cycleTime * 1e-6;это оттуда же, или что-то не так?

Это вполне нормально для “нормального” Ц, переменные объявляются и инициализируются до кода модуля. ГЦЦ не строго придерживается правил , посему можно писать на смеси Ц и Ц++. Чтоб не париться с переписыванием, измени файлу расширение на *. cpp

SergDoc:

воткнул я этот кальманутый фильтр в мелкоплату - цикл 2000 и…

Сергей, интересно насколько хорош этот калман, в его математике я полный нуль, но вроде как правильный должен связывать между собой несколько датчиков, а это фильтрует одномерные координаты. Когда полетишь? Интересно качество работы такого фильтра.

oleg70:

Так и заставляют абстрагироваться от железа и привязать все к библиотекам, поэтому и по регистрам в даташите практически ничего. Не так ли?

Не так, все биты найдете в соответсвующем пдфе на стшном сайте, но писать всё (особенно первый проект) в прямом обращениии к регистрам нереальный гемор, и смысла нет, т.к. компиллер всё оптимизирует к “чтение-модификация-запись”, да и вызво подпрограмм в СТМ очень быстрый.

oleg70:

Поясните (если не сложно) мне начинающему. Я все читаю Ваш листинг (RUS_ins) как пример для изучения методики программирования под stm и возник следующий вопрос (чисто теоретический): Неужели удобно так усложнять (как мне кажется) структуру проекта, создавать несколько отдельных *.с и *.h файлов, затем их линковать ?

Сергей ниже всёверно написал -модульность. Иначе замена проца или датчиков будет стоить вам переписывания всего кода.

SergDoc
rual:

Чтоб не париться с переписыванием, измени файлу расширение на*. cpp

там их пять штук было, объявил вначале и всё, на счёт как летает, на Naze32 говорят, что лучше чем комплиментарный, одно только не догнал, аксель я вообще без проблем добавил а вот ДУС какой-то косяк, пришлось MPU3050 в коде автодетекта пристрелить тут добавилось без проблем:

 // Autodetect gyro hardware. We have MPU3050 or MPU6050.
    if (mpu6050Detect(&acc, &gyro, cfg.mpu6050_scale)) {
        // this filled up  acc.* struct with init values
        haveMpu6k = true;
    } else if (l3g4200dDetect(&gyro)) {
        havel3g4200d = true;
    } else if (lsm330gyroDetect(&gyro)) {
        haveLSM330 = true;
    }	else if (!mpu3050Detect(&gyro)) {
        // if this fails, we get a beep + blink pattern. we're doomed, no gyro or i2c error.
        failureMode(3);
    }

а тут - настройки фильтра:

 // todo: this is driver specific :(
      if (havel3g4200d) {
        l3g4200dConfig(cfg.gyro_lpf);
    } else {
        if (haveLSM330)
            lsm330gyroConfig(cfg.gyro_lpf);
           }
		//else {
   //     if (!haveMpu6k)
   //         mpu3050Config(cfg.gyro_lpf);
   // } 

пришлось убрать MPU3050 иначе ругется что lsm330gyroConfig не объявлена почему-то и переменная haveLSM330 объявлена но не используется…
сколько не копал не нашел причину…

oleg70
rual:

Не так, все биты найдете в соответсвующем пдфе на стшном сайте,

Ткните меня носом пожалуйста на ссылку, ну ни как не найду…😃

SergDoc
rual:

Когда полетишь?

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

дааа, поковырялся я в этой штуке, в общем фильтрует он сырые данные с датчиков, а потом скармливает их мультивийному иму на комплиментарном фильтре, где глубинный смысл? проц нагрузить? про барометр (BMP085) молчу если даже сказать груди, сиськи от этого лучше не станут скорость(вертикальная) как не фильтруй, а всё равно до 10см/с добегает - коэффициенты пока умолчательные…

Razek
SergDoc:

Не поверишь, дожди а дома негде…

Серег, пора уже пора, зафиксировать релиз и подлетнуть, БК мотору дожди пофиг, салатница решает =)))

SergDoc

Салатница только на мосх одета, регули на лучах не герметизированы, хотя можно и скотчем залепить, сам хочу, а мелкоплате почти год день варенья скоро 😃
Сегодня выдерну BMP-шку проверю 5611

SergDoc
SergDoc:
  1. Барометр с гудлака оказался паяный (до этого времени не распаковывал)

Уряяя!!! баро жив!!! разница с BMP видна сразу в ГУИ, правда мелкоплата стала похожа на франкенштейна - ну и ладно этож эксперимент 😃

rual
oleg70:

Ткните меня носом пожалуйста на ссылку, ну ни как не найду…

www.st.com/internet/com/…/DM00043574.pdf

SergDoc:

дааа, поковырялся я в этой штуке, в общем фильтрует он сырые данные с датчиков, а потом скармливает их мультивийному иму на комплиментарном фильтре, где глубинный смысл?

вот и я об этом

SergDoc:

про барометр (BMP085)

SergDoc:

Сегодня выдерну BMP-шку проверю 5611

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

SergDoc

У меня подозрение, что он призван победить вибрации, надо моторы запустить посмотреть что будет…

rual
SergDoc:

У меня подозрение, что он призван победить вибрации, надо моторы запустить посмотреть что будет…

не думаю , что в корне что то изменит
я тут МАРГ пробовал к своему проекту привязать, хотя при дерганьи рукой он ведет себя лучше, но всё равно происходит завал гризонта и горизонт постоянно плавает, а моего просто уплывает по-тихому вправо.

SergDoc

Проверю, у меня приёмник с аппендиксом внутри запущу сейчас посмотрю как PPM работает, потом поставлю на коптер…

Что-то всё гладко пошло, PPM работает, баро работает иии самое интересное - серва не дёргается как паралитик даже при завышеных ПИДах!

SergDoc

Гонял моторы без пропов, раньше резонанс был примерно на 50% газа, теперь нет…

Только одна беда, при арме в гуи загорается не ARM а RTH и если настроить ARM на выключатель - ARM в гуи будет светится но не армится, а вот если RTH настроить то армится через него, где что напутано?

SergDoc

Вопросы вроде решены, попробую подлетнуть вечером…

serj
oleg70:

Мысли вслух по поводу Cortex и т.п.:
Так и заставляют абстрагироваться от железа и привязать все к библиотекам, поэтому и по регистрам в даташите практически ничего.
Не так ли?

Это в AVR все в одной куче, т.к атмел все сам придумывал.
У ST в дашите только электрические и временные характеристики и общая структура.
описание регистров периферии- в Reference manual,
описание регистров относящихся к ядру (например нвик, систаймер) ищите на сайте APM. ( ST ядро купили)

SergDoc:

так я сейчас и планировал заняться, на мелкоплате именно Z, повесить ms5611 проверить, за одно проверить как DT-шки отнесутся к 12-м гефманам и вот этим пропам, взял на пробу, по предположению моему, должны тягу давать примерно как APC, подшаманил трёху, ///

Тезка, не берите эти пропы! Г редкостное. они вибрируют и дают на 15% меньше тяги чем APC 11x4.7 при той же подводимой мощности. Синие 10"х4.5" пропеллеры оттуда же работают лучше ( мотор NTM 2836, kv=750). Также на трикоптере.

oleg70

Ребята, поделитесь мнением: стоит ли связываться с RTOS для данной задачи?
У меня есть свои соображения конечно, но хочется услышать более опытных людей…

SergDoc

Отчитаюсь: два взлёта одна посадка 😦
в HORIZONT - носит беспощадно еле посадил…
в ANGLE - перевернулся
Wii-щики выручайте, ощущения непонятные - пытается всё время свалиться по крену или тангажу как буд-то ПИДы маловаты, но если выровняю, начинаются осциляции как буд-то с ПИДами перебор.
вибрации как бы исключаю.
О, вспомнил, как буд-то регули тормознутые не перепрошитые…
P.S. на 12-х гефманах взлетает на 40% газа вес перед взлётом 1100гр.
P.S.P.S. как ни странно не один проп не пострадал…

SergDoc

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

rual
SergDoc:

Wii-щики выручайте, ощущения непонятные - пытается всё время свалиться по крену или тангажу как буд-то ПИДы маловаты, но если выровняю, начинаются осциляции как буд-то с ПИДами перебор.

Очень похоже на неправильную работу горизонта, наверно с что то с фильтром. Надо лог смотреть. Либо на земле покрутить руками, посмотреть как горизонт себя ведёт.

SergDoc

Крутил и с движками включеными крутил (пропы естественно сняты) ничего необычного не заметил, вот логирование не включал, завтра ещё раз попробую - доча до программатора добралась - теперь чинить надо (она у меня чёт больше к моей аппаратуре расположена чем сын)…
блин для логов в полёте надо батарейку в ноут купить и хотя-бы синезуб…
наверно что-то с акселем, ибо курс держит…