MultiWii
непонятно, зачем использовать F4 с его производительностью
Ну, например, OSD в том де чипе вкорячить. Красивое. Быстрое. Запись маршрута там, не знаю. Всякую фигню, на которую щас “времени проца не хватает”. Плюс, Александр mahowik говорил, что напрягают пляски с бубном с целочисленными вычислениями, когда надо с плавающей точкой. Ну то есть - тема-то перейти есть, только кто этим заниматься будет…
Да хотя бы отладка в STM32 просто в разы удобнее - поставил точку останова и все, она сработала. И отладочная плата 600р всего со всей периферией. Среда разработки CoIDE кстати бесплатная, и на базе Eclipse, т.е. функциональность на уровне.
А под AVR что-то отладить, либо танцы с бубном, либо отладочные комплекты от 100 евро.
напрягают пляски с бубном с целочисленными вычислениями, когда надо с плавающей точкой
Еще можно отказаться от ассемблерных вставок, оптимизированных алгоритмов быстрого вычисления корня и тригонометрии, таблиц заранее вычисленных значений. В итоге, код легко читается, баги проще вылавливать и допиливать за предыдущим программистом.
оптимизированных алгоритмов быстрого вычисления корня и тригонометрии, таблиц заранее вычисленных значений.
Это при уловии что компилятор работает с FPU, плюс я акцентировал внимание на I2C, надо, по возможности, избежать данной шины, вобщем надо очень многое переделать, и, это будет далеко не MultiWii…
решение проблемы OLED экранчика с rctimer (чеб не потерялось):
rcopen.com/forum/f123/topic258132/2387
rcopen.com/forum/f123/topic258132/2390
Подскажите, какими должны быть правильными реакции на гироскоп и акселерометр???
Наклоняю квадрокоптер вперед, то передние моторы должны на немного времени прибавить обороты, чтобы попытаться стабилизировать отклонение? Это без акселерометра.
А с акселерометром должны вращаться на всем протяжении времени, пока не верну наклон в “нулевое” положение?
Наклоняю квадрокоптер вперед, то передние моторы должны на немного времени прибавить обороты, чтобы попытаться стабилизировать отклонение? Это без акселерометра.
А с акселерометром должны вращаться на всем протяжении времени, пока не верну наклон в “нулевое” положение?
Ага. Типа того.
Полетел 😃 Только сначала по оси закружило. Инвертировал Z (Yaw) у гироскопа и стало нормально.
Поигрался с PID пока наугад и уже латает не хуже Кука. Только бывает рвется вверх.
С акселерометром по Z угадал сразу.
Если кому интересно расположение:
Выпиленный гироскоп ITG3205 (плата у меня такая rcopen.com/files/4d58ca36997073007701affb) поставил левой стороной платы с картинки - вперед.
Плака с акселерометром (buyincoins.com/…/mma7361-angle-sensor-inclination-…) - смотрит X вперед, Y влево.
- Как теперь добиться стабилизации по акселерометру? Несет в сторону, но выровнять пытается. Начинаю изучать теорию PID.
- Как победить, чтобы вверх сильно не улетал?
Забыл сразу что-то добавить. Код для данного расположения этих датчиков.
#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;}
- Как победить, чтобы вверх сильно не улетал?
Настройте экспоненту газа. Будет проще держать высоту.
Собрал квадрокоптер:
Плата CRIUS ALL IN ONE PRO v1.1
регули Turnigy TY-P1 25Amp
передатчик Turingy 9x
Залил MultiWii_2_1
Проверил в GUI стики норм все двигается туда куда надо и в допустимых диапазонах.
Подключаю акум, мигают диоды, затем горят только 2 посередине платы, а диоды А В С не горят.
Зажимаю стик газа вправо вниз на запуск, загораются диоды А и С. Двигаю стик газа и ничего не происходит, что делать?
решение проблемы OLED экранчика с rctimer (чеб не потерялось):
rcopen.com/forum/f123/topic258132/2387
rcopen.com/forum/f123/topic258132/2390
Все-таки установка резисторов и диодов в общую цепь питания OLED экранчика не совсем хорошо, так как там step-up конвертер который поднимает до 10В напругу и как раз изменение тока потребления от выведенного рисунка на экран происходит по этой линии питания. Для питания логики там стоит отдельный стабилизатор на 3.3В, вот его и надо развязать резистором, 82-100 Ом (для этого необходимо разрезать дорожку на плате). Также желательно поставить резистор 10 кОм в нагрузку по этой линии питания, так как если выключить питание и сразу включить, память OLED не обнуляется и в результате, на экране сохраняются старые данные, которые были на нём при выключении, при этом графическая заставка может не отображается.
Думаю на этом “танцы с бубном” вокруг экранчика можно закончить.
Круто, но уж проще диод/резистор в питание, чем в такую мелочь smd впаивать 😃
Подскажите, что не так
Если в скетче config.h ничего не меняли, то показалось странным, что в шапке Arduino IDE у вас не видна ее версия. Т.е. отображается ${version}, вместо к примеру 1.0.3, если у вас такая… Соот-но проблема в самой Arduino IDE скорее всего…
Ваш пользователь имеет тип “Администратор” в системе? Есть подозрение что Arduino IDE не видит свои настройки (нет доступа), которые хранятся в c:\Documents and Settings\<USERNAME>\Application Data\Arduino\preferences.txt
Сегодня попробовал настроить BMP 180 на RC1 пободался минут 40, сломал одну лапу на квадрике потом плюнул, все мид поинты настроил пиды тоже менял, после активации альт холда просто проваливается и все. В общем проще нупить на мелкого нормальный баро, чем пилить старое железо.
а eeprom чистил? если да то пиды на баро будут 3.0-0.010-25
пиды с чищенным еепромом даже такие ставил, и стандартные из 2.1 нифига не помогает проваливается и все тут и кстати даже если менять пиды поведение не меняется. но кстати у меня аксель и гира от ST возможно еще и это влияет я честно говоря не знаю, но мне эти датчики честно говоря нравятся больше. там настроек по даташиту, всяких фильтров и пр больше чем у мпу.
но кстати у меня аксель и гира от ST возможно еще и это влияет
100%
вообще провалы, это значит скорость не правильно считается из-за вибраций… если можно, выставь на свой аксель внутренний НЧ филтр на 5-10гц…
- попробуй врубить дефайн KILL_VIBRO
Да у меня аксель и гира внутренними фильтрами настроены, все что надо затянуто, я потом еще гляну как там ось Z у меня в полете реагирует.
можно 10, можно 25, кстати какое лучше G ставить, у меня сейчас 2 стоит.
кстати у меня дебаги вообще неактивны все 0
я потом еще гляну как там ось Z у меня в полете реагирует
на debug3 (debug[2] в коде) скорость вертикальная сидит… вруби в руках АХ и посмотри, что с ней… уверен, что там будет просадка на 50…150 единиц в минус…
кстати какое лучше G ставить, у меня сейчас 2 стоит.
это плохо!!! 😉 от тут расписал подробно …
не, поставил фильтр 10 герц у меня аксель поплыл при 400 ГЦ норм работает.
#define VARIO_ALT_CHANGE
#define VARIO_P 20
#define VARIO_I 15
#define VARIO_D 10
это надо менять? или нет)