MultiWii

Musgravehill
gorbln:

напрягают пляски с бубном с целочисленными вычислениями, когда надо с плавающей точкой

Еще можно отказаться от ассемблерных вставок, оптимизированных алгоритмов быстрого вычисления корня и тригонометрии, таблиц заранее вычисленных значений. В итоге, код легко читается, баги проще вылавливать и допиливать за предыдущим программистом.

SergDoc
Musgravehill:

оптимизированных алгоритмов быстрого вычисления корня и тригонометрии, таблиц заранее вычисленных значений.

Это при уловии что компилятор работает с FPU, плюс я акцентировал внимание на I2C, надо, по возможности, избежать данной шины, вобщем надо очень многое переделать, и, это будет далеко не MultiWii…

raefa

Подскажите, какими должны быть правильными реакции на гироскоп и акселерометр???
Наклоняю квадрокоптер вперед, то передние моторы должны на немного времени прибавить обороты, чтобы попытаться стабилизировать отклонение? Это без акселерометра.
А с акселерометром должны вращаться на всем протяжении времени, пока не верну наклон в “нулевое” положение?

gorbln
raefa:

Наклоняю квадрокоптер вперед, то передние моторы должны на немного времени прибавить обороты, чтобы попытаться стабилизировать отклонение? Это без акселерометра.
А с акселерометром должны вращаться на всем протяжении времени, пока не верну наклон в “нулевое” положение?

Ага. Типа того.

raefa

Полетел 😃 Только сначала по оси закружило. Инвертировал Z (Yaw) у гироскопа и стало нормально.
Поигрался с PID пока наугад и уже латает не хуже Кука. Только бывает рвется вверх.
С акселерометром по Z угадал сразу.

Если кому интересно расположение:
Выпиленный гироскоп ITG3205 (плата у меня такая rcopen.com/files/4d58ca36997073007701affb) поставил левой стороной платы с картинки - вперед.
Плака с акселерометром (buyincoins.com/…/mma7361-angle-sensor-inclination-…) - смотрит X вперед, Y влево.

  1. Как теперь добиться стабилизации по акселерометру? Несет в сторону, но выровнять пытается. Начинаю изучать теорию PID.
  2. Как победить, чтобы вверх сильно не улетал?
raefa

Забыл сразу что-то добавить. Код для данного расположения этих датчиков.

#define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  =  Y; accADC[PITCH]  = -X; accADC[YAW]  = -Z;}
#define GYRO_ORIENTATION(Y, X, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] =  -X; gyroADC[YAW] = -Z;}
Taatarenkoff
raefa:
  1. Как победить, чтобы вверх сильно не улетал?

Настройте экспоненту газа. Будет проще держать высоту.

SkyAK

Собрал квадрокоптер:
Плата CRIUS ALL IN ONE PRO v1.1
регули Turnigy TY-P1 25Amp
передатчик Turingy 9x

Залил MultiWii_2_1

Проверил в GUI стики норм все двигается туда куда надо и в допустимых диапазонах.

Подключаю акум, мигают диоды, затем горят только 2 посередине платы, а диоды А В С не горят.
Зажимаю стик газа вправо вниз на запуск, загораются диоды А и С. Двигаю стик газа и ничего не происходит, что делать?

AvxMx
mahowik:

решение проблемы OLED экранчика с rctimer (чеб не потерялось):
rcopen.com/forum/f123/topic258132/2387
rcopen.com/forum/f123/topic258132/2390

Все-таки установка резисторов и диодов в общую цепь питания OLED экранчика не совсем хорошо, так как там step-up конвертер который поднимает до 10В напругу и как раз изменение тока потребления от выведенного рисунка на экран происходит по этой линии питания. Для питания логики там стоит отдельный стабилизатор на 3.3В, вот его и надо развязать резистором, 82-100 Ом (для этого необходимо разрезать дорожку на плате). Также желательно поставить резистор 10 кОм в нагрузку по этой линии питания, так как если выключить питание и сразу включить, память OLED не обнуляется и в результате, на экране сохраняются старые данные, которые были на нём при выключении, при этом графическая заставка может не отображается.

Думаю на этом “танцы с бубном” вокруг экранчика можно закончить.

DVE

Круто, но уж проще диод/резистор в питание, чем в такую мелочь smd впаивать 😃

mahowik
c4Faraon:

Подскажите, что не так

Если в скетче config.h ничего не меняли, то показалось странным, что в шапке Arduino IDE у вас не видна ее версия. Т.е. отображается ${version}, вместо к примеру 1.0.3, если у вас такая… Соот-но проблема в самой Arduino IDE скорее всего…
Ваш пользователь имеет тип “Администратор” в системе? Есть подозрение что Arduino IDE не видит свои настройки (нет доступа), которые хранятся в c:\Documents and Settings\<USERNAME>\Application Data\Arduino\preferences.txt

omegapraim

Сегодня попробовал настроить BMP 180 на RC1 пободался минут 40, сломал одну лапу на квадрике потом плюнул, все мид поинты настроил пиды тоже менял, после активации альт холда просто проваливается и все. В общем проще нупить на мелкого нормальный баро, чем пилить старое железо.

mahowik

а eeprom чистил? если да то пиды на баро будут 3.0-0.010-25

omegapraim

пиды с чищенным еепромом даже такие ставил, и стандартные из 2.1 нифига не помогает проваливается и все тут и кстати даже если менять пиды поведение не меняется. но кстати у меня аксель и гира от ST возможно еще и это влияет я честно говоря не знаю, но мне эти датчики честно говоря нравятся больше. там настроек по даташиту, всяких фильтров и пр больше чем у мпу.

mahowik
omegapraim:

но кстати у меня аксель и гира от ST возможно еще и это влияет

100%
вообще провалы, это значит скорость не правильно считается из-за вибраций… если можно, выставь на свой аксель внутренний НЧ филтр на 5-10гц…

  • попробуй врубить дефайн KILL_VIBRO
omegapraim

Да у меня аксель и гира внутренними фильтрами настроены, все что надо затянуто, я потом еще гляну как там ось Z у меня в полете реагирует.

можно 10, можно 25, кстати какое лучше G ставить, у меня сейчас 2 стоит.

кстати у меня дебаги вообще неактивны все 0

mahowik
omegapraim:

я потом еще гляну как там ось Z у меня в полете реагирует

на debug3 (debug[2] в коде) скорость вертикальная сидит… вруби в руках АХ и посмотри, что с ней… уверен, что там будет просадка на 50…150 единиц в минус…

omegapraim:

кстати какое лучше G ставить, у меня сейчас 2 стоит.

это плохо!!! 😉 от тут расписал подробно

omegapraim

не, поставил фильтр 10 герц у меня аксель поплыл при 400 ГЦ норм работает.

#define VARIO_ALT_CHANGE
#define VARIO_P 20
#define VARIO_I 15
#define VARIO_D 10

это надо менять? или нет)

mahowik
omegapraim:

не, поставил фильтр 10 герц у меня аксель поплыл при 400 ГЦ норм работает.

фиговый значит аксель 😃 технически долго писать почему…

omegapraim:

это надо менять? или нет)

нет, не надо!

ты читал по ссылке выше?! выставь диапазон 8g иначе нихера не будет!

  • не забудь про acc_1G, т.к. во многих акселях разрешение падает при увеличении диапазона…
omegapraim

Значит технически хреновый аксель)))))) спорить с тобой не буду а разбираться лень, буду летать на одном акселе и гире, этож мелколет, выставил 8г я еще утром вашу беседу почитал.

mahowik:

фиговый значит аксель 😃 технически долго писать почему…

нет, не надо!

ты читал по ссылке выше?! выставь диапазон 8g иначе нихера не будет!

  • не забудь про acc_1G, т.к. во многих акселях разрешение падает при увеличении диапазона…

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