MultiWii
ура, multiwii внезапно полетел у меня о_0 но вот только в акро, в стабе даже взлететь не могу - запускаю моторы, чуть газу и он брыкается пока тупо не переворачивается… а в акро взлетает как по рельсам, настройки никакие не трогал (только гиру загрубил #define ITG3200_LPF_20HZ)
пока управляемость оценить сложно - полетная зона 1.5 на 2 метра, при размахе коптера почти 80см (с винтами) =) но взлетает шикарно
датчики: пиленый wmp, т.е. itg3205 + adxl345, 2 мотора вообще не вибрируют, 1 мотор немного и 1 жутковато - видно как луч гуляет, взлетный вес 860г
Level I убавь до 0.030 в стаб моде и P убавь до 3.0
вроде лучше стало, даже взлететь удалось, но всеравно брыкается при взлете
видео взлета в acro и stab режимах
буду искать больше места - в комнате чуть взлет и уже куда-то врезаюсь =)
в комнате чуть взлет и уже куда-то врезаюсь =)
Глеб, виброгашение продумайте по лучше, будет летать отменно.
А в руке его клонит в одну сторону или в разные примерно на 50% газа? соответственно вопрос по стаб моде…
зы если в одну сторону, то модуляция (потребуется больше гасить вибрацию), если в разные, то ПИДы настраивать
И попробуй придушить аппу, rc rate поставь наполовину (0.5 кажется), может в этом дело)
Получил моторы, всё собрал) Вылезло 2 проблемы) Один мотор больше всех крутится, один хуже всех) По программе тоже самое, даже если регули не подключены. 2 проблема, сначала глушился, потом перестал) Заводится и молотит, не выключается на дисарм) в чём проблемы? Раньше всё было хорошо) Только пирата записывал на эту ардуину, но щас уже пробовал шить раза 3) Пофигу)
ура, multiwii внезапно полетел у меня о_0 но вот только в акро, в стабе даже взлететь не могу - запускаю моторы, чуть газу и он брыкается пока тупо не переворачивается… а в акро взлетает как по рельсам, настройки никакие не трогал (только гиру загрубил #define ITG3200_LPF_20HZ)
главная проблема стаб. мода это вибрации. Решить можно 2-мя способами: механикой и математикой… я упрямый и люблю второе потому победил вибрации без механики, а коптер мой очень таки вибро… 😃
Уже известная проблема цифровых акселей это перенасыщение (вибрациями в нашем случае). В двух словах если амплитуда вибраций больше выбранного диаппазона акселя, то спектр вибраций урезается и потом уж фильтры не помогут…
www.multiwii.com/forum/viewtopic.php?f=8&t=849&sta…
Потому нужно величивать диаппазон. С ADXL345 по идее все ок. Там +/-8g и резолюшн хороший на этот диаппазон.
Потому проверь следующее:
- раскомменти
#define TRUSTED_ACCZ
-
прижми коптер к полу и плавно увеличивая газ проверь не просядает ли Z ось. Если на месте во всем диаппазоне, то суппер гут. В принципе она не должна просядать в рабочем диаппазоне газа (в моем конфиге это 45-70%… и проваливаться начинает при при 80% с bma020 +/-8g). Если просядает в рабочем диаппазоне то смотри даташит можно ли еще увеличить диаппазон акселя, к примеру на +/-16g (ток незабудь изменить делители в ACC_getADC() и acc_1G). Если уж вибрации диаппазонами акселя не победить, то закоменти #define TRUSTED_ACCZ…
-
увеличь GYR_CMPF_FACTOR до 340.0f - 350.0f
IMU тогда больше смотрит на гиру чем на аксель -
из всех перепробавваных LPF фильтров лучшие результаты дал флоатовый:
найди
accTemp[axis] = (accTemp[axis] - (accTemp[axis] >>4)) + accADC[axis];
accSmooth[axis] = accTemp[axis]>>4;
и замени на
static float accTempF[3];
....
#define lfpFactor 0.987f
//lfpFactor = 0.9f + constrain(rcData[AUX2]-1000, 0, 990)/10000.0f; // k=0..0.99
accTempF[axis] = accTempF[axis]*lfpFactor + accADC[axis]*(1.0f - lfpFactor);
accSmooth[axis] = accTempF[axis];
- в комплиментарном фильтре используй это же флоатовое значение
найди
EstG.A[axis] = (EstG.A[axis] * GYR_CMPF_FACTOR + acc) * INV_GYR_CMPF_FACTOR;
замени на
EstG.A[axis] = (EstG.A[axis] * GYR_CMPF_FACTOR + accTempF[axis]) * INV_GYR_CMPF_FACTOR;
-
фильтр на гиру подыми хотябы до ITG3200_LPF_42HZ лучше до ITG3200_LPF_98HZ
-
если аппа бюджетная с НК выставь #define DEADBAND 30
- для этой аппы будет полезна примочка throttle expo… высоту легко держать и летать проще… поищи поиском тут
ах да и ПИД-ы:
roll/pitch: 6.0-0.035-40…45
yaw: 8.0-0.045
level: 7.0-0.015
rcrate: 0.52…0.56
как бы не потерять это всё - теперь в следующий раз попробую полетать уже после НГ
как бы не потерять это всё
давно собираюсь такие моменты-фиксы-воркэрраунды в дневник записывать… видимо пора 😃
видимо пора
rcwiki.ru для этого сделал кто-то из форумчан
за веткой не слежут, поэтому вопрос про OSD назреk - никто никакой OSD не цеплял? например от Syberian с мегапирата (который на hobbyking e-osd сделан)?
код от мегапирата довольно простой, только вот хз как быть с serial портом, на обычной ардуинки он один - варианты: переключение режимов порта через аппу или сотфверный serial
Народ помогите подружить дисплей www.ebay.com/itm/…/230706362193 с мультивии 1.9
Подключаю к плате на меге 2560 к контакту Rx.Включаю питание на дисплее тестовая картинка на 2 секунды появляется ,потом слэш слева вверху.Активирую режим дисплея,слэш пропадает и немного притухает яркость дисплея.На этом все 😦
Народ помогите подружить дисплей
Купленный экран на 19200 бод, а в multiwii стандартом идет 9600…
Купленный экран на 19200 бод, а в multiwii стандартом идет 9600…
Сменить скорость в коде мультивии? Что поправить в коде?
Что поправить в коде?
думаю тут - #define SERIAL_COM_SPEED 115200
Точно Не тут!!! Смотреть раздел про LCD!!!
Точно Не тут!!! Смотреть раздел про LCD!!!
Смотрел ,но что-то напоминающее скорость только это
/ 1000000 / 9600 = 104 microseconds at 9600 baud.
как поменять 2 оси у гиры ?
из датчиков только не пиленный MP (3205)
меняю в sensors в самом верху:
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = X; gyroADC[PITCH] = Y; gyroADC[YAW] = Z;}
на
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = X; gyroADC[YAW] = Z;}
заливаю. запускаю конфиг, так же (смотрю на цифры в Gyro roll и Gyro pitch) .
Нашел в config внизу, раскомментировал строчку:
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = X; gyroADC[YAW] = Z;}
не помогает.
Когда пользовал “все в одном” то просто находил в def.h #if defined(ALLINONE) и понимал что всё там (адреса и ориентация)
А простой MP не могу развернуть на 90 гр.
Подключаю к плате на меге 2560 к контакту Rx.
судя по документации подключать нужно к контакту Тх
судя по документации подключать нужно к контакту Тх
И это тоже пробывал 😃
ADXL345 по идее все ок. Там +/-8g и резолюшн хороший на этот диаппазон
хотелось бы немножко об акселерометрах поговорить. Как я понял из темы multiwii форума, проблемы с уплыванием связаны с тем, что происходит насыщение выхода акселя под воздействием ВЧ вибраций. Чтобы от этого избавиться, надо увеличивать диапазон полной шкалы (или виброизолировать датчики), т.е, к примеру, если раньше +/- FS достигалась при значениях +/- 1g (FS - полная шкала), то теперь при +|- 8(16) g, но при этом появляется проблема - падает разрешающая способность и как следствие возрастает ошибка определения угла, так?
Данные какой битности использует multiwii для своих расчетов? Где-то мелькала цифра 10 бит. Глянул даташит к adxl345 и bma180. У них 10 и 14 бит, соответственно. Собсно такой вопрос как владельца bma180 - у нас имеется дополнительные 4 бита, т.е. не ухудшая разрешающей способности по отношению к bma020 (10бит) мы можем поднять диапазон измерения Ж до 16 раз. Верно? Если да, то, к примеру, почему бы не сделать +/- FS = +/- 8g? Насколько понял, значение Acc_Z при таких настройках почти у всех уже перестает проседать. Получилось бы более или менее универсальное решение. Поправьте, если вдруг где не прав.
Но это были рассуждения. А теперь главное - как это сделать? - Править регистры, но надо знать что и как править. Никто не сталкивался с уже готовыми кусками кода? Если нет, то придется изучать даташит. О результатах напишу )