Первичная настройка MultiWii

Решил написать небольшой мануал по настройке мультивия, себе на память и начинающим на подмогу.
Мануал планирую потихоньку редактировать, вспоминая и находя нужные куски текста в большой куче форума.
Нусь… начнем потиххоньку:
1. Настройка ориентации сенсоров.
Для начала необходимо определится, какие сенсоры у вас на плате.

Если это готовая плата - смотрим на описание платы, практически все дефайны уже есть в def.h, остается только раскомментировать нужную в config.h.

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

Далее компилим прошивку и заливаем ее в аппарат.

Теперь необходимо проверить правильность ориентации, для этого располагаем платку предполагаемым передом от себя и начинаем крутить:
а) при наклоне вправо должен увеличиватся угол ROLL по акселю и положительный скачок ROLL по гироскопу, Z ось акселя и компаса должны уменьшатся.
б) при наклоне вперед - аналогично по PITCH, Z ось акселя и компаса должны уменьшатся.
в) при наклонах влево и назад - значения должны быть минусовые, Z ось акселя и компаса должны уменьшатся.
г) при подъеме вверх (с норм скоростью) должен увеличиваться Z акселя, при переворачивании - менять знак
д) при повороте вправо должен быть скачок по гироскопу оси Z в положительную сторону
е) в горизонте Z ось акселя и компаса должны быть положительными
П.С.: По данным гироскопа вы увидите вначале скачок в одну, а потом в противоположную сторону - это нормально, так как вы вначале поворачиваете, а потом тормозите плату.
Источник: How_should_be_the_sensor_axis_directions

также для правильной настройки компаса вы должны указать параметр MAG_DECLINIATION (в config.h в разделе настроек ЖПС)
Для этого идем на magnetic-declination.com, находим свое местоположение, щелкаем на карту и запоминает, например у меня это Magnetic declination: 8° 41’ EAST
После чего получаем нужную нам цифру: 8+41/60 = 8,6833f.

Если все соответствует - значит с определением осей все в порядке.
В противном случае запоминаем, по какой оси у нас были другие показания, и меняем направления либо в def.h (для вашей платы), либо в config.h для версии 2.2

/* enforce your individual sensor orientation - even overrides board specific defaults */
      //#define FORCE_ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  =  Y; accADC[PITCH]  = -X; accADC[YAW]  = Z;}
      //#define FORCE_GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] =  X; gyroADC[YAW] = Z;}
      //#define FORCE_MAG_ORIENTATION(X, Y, Z)  {magADC[ROLL]  =  X; magADC[PITCH]  =  Y; magADC[YAW]  = Z;}

2. Арм/дизарм и подключение приемника
Важная часть настройки для начинающих.
Во первых, определяем, поддерживает ли приемник PPM SUM (для подключения одним 3-х жильным кабелем) или нет.
Далее идем в config.h, и если у нас приемник, поддерживающий PPM SUM на одном из каналов (для прошитого телеметрийного приемника FrSky это 1-й канал при замыкании сигнальных контактов 3 и 4-го контакта) то раскомментируем строчку:

#define SERIAL_SUM_PPM         ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Robe/Hitec/Futaba

После чего заливаем любую прошивку к аппарату с подключенным приемником.

Далее запускаем конфигуратор, соеденяемся и двигая стики убеждаемся в правильности настройки каналов.
Также при этом можно сразу оттриммировать значения каналов для ROLL, PITCH и YAW на центральное положение 1500 (это делается триммерами на пульте)

После этого, двигая стик газа, запоминаем минимальное и максимальное положение (например 1047 и 1980), и повторяем такую же процедуру и для остальных стиков (для примера R P Y 1137/1884 1054/1987 1097/1920).
После этого, принимаем для текущего примера газа мин значение 1100 и макс значение 1900 (1950), а для остальных стиков при текущем примере мин 1150 и макс 1850 (необходим запас как минимум примерно в 50)
Значения для газа заносим в файле config.h в поля:

#define MINTHROTTLE 1100
#define MAXTHROTTLE 1900

а значение #define MINCOMMAND на 50 меньше MINTHROTTLE

Значения остальных стиков (вычисленное) заносим в файле MultiWii.ino в строчках

// ******************
// rc functions
// ******************
#define MINCHECK 1150
#define MAXCHECK 1850

После данной настройки заливаем нашу прошивку в аппарат.

Арм/дизарм после данной настройки, а также все остальные комбинации стиков делаются без проблем.

Также не забываем в config.h раскомментировать

   /********************************    ARM/DISARM    *********************************/
   /* optionally disable stick combinations to arm/disarm the motors.
     * In most cases one of the two options to arm/disarm via TX stick is sufficient */
    #define ALLOW_ARM_DISARM_VIA_TX_YAW
    //#define ALLOW_ARM_DISARM_VIA_TX_ROLL

После этого:
АРМ: Газ вниз и YAW вправо
ДИЗАРМ: Газ вниз и YAW влево
при необходимости можно изменить строчку, при этом будет то же самое, только вместо YAW будет стик ROLL

3. Настройка акро ПИД
Это основная настройка для вия, от нее можно сказать пляшут и остальные настройки.
Очень желателен еще один человек, которому необходимо как минимум показать как делать арм/дизарм и где канал газа и как его двигать…

Для начала, заливаем нужную прошивку на готовый аппарат (про виброразвязку и балансировку тут не буду говорить), оставляем включенным только АКРО, идем в центр зала/на улицу, берем аппарат снизу в руки, делаем арм и даем газу до примерной точки взлета (аппарат начинает терять вес).

Вначале следует обратить внимание на то, есть ли осцилляции (самопроизвольная вибрация/раскачка), если ее нету, то пробуем резкими движениями менять положения коптера, наклоняя вперед/назад, влево/вправо, при этом вы должны ощутить сопротивление изменению положения (хотя при слабых ПИД-ах иногда бывает практически не заметно).

Если сопротивление слабое, либо достаточно сильное(но есть желание отстроить по максимуму), то идем к компьютеру и повышаем P на 0,1-0,5 (с каждым последующим разом уменьшаем шаг изменения) и повторяем процедуру до появления осцилляций, после чего уменьшаем P на ~20% от его текущего значения вниз.

По желанию можно продолжить дальнейшую отстройку параметров D и I
что и за что отвечает - добавлю позже…

  • 12520
Comments
gorbln

Требую добавки!!! 😁

Думается мне, надо добавить:

  • арм контроллера (75% первого новичкового вопроса) да и вообще сцыль на пдф-ку с описанием комбинаций стиков и за что они все отвечают.
  • “плата лежит на столе, я делаю арм, добавляю газ, а газ на движки движется КАК-ТО не так… ааа, всё сгорело, мне послали нерабочую плату, автор прошивки мудаг, верните мои деньги!!!” (99% второго вопроса, после того, как расскажут про арм)

А вообще, конечно, решпект за труды. Про компас обязательно надо рассказать. Про его ПРАВИЛЬНУЮ калибровку. типа как здесь:

фразу “чем дальше настройка, чем меньше” - надо либо исключить, либо переработать. Минут пять тупил, пока не понял, что это означает “чем ближе мы к появлению осцилляций, тем меньшими шагами добавляем коэффициент”

gorbln

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

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

SergDoc

(контроллер ArduCopter - не включает и после арма, что, на мой взгляд, серьёзная ошибка).

не факт, я на первом контроллере делал так же, ибо боялся, единственный минус это если невзначай газ в ноль убрать - моторы остановятся…
Вот думаю в Вие бы не помешала калибровка гир при АРМ-е на всякий случай ну как в КУК-е или том же СС и CC3D - типа АРМ-калибровка-включение движков…

gorbln

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

mahowik

во во… я тоже об этом попугаил на форуме уже 10 раз, но народ упорно хочет стопа движков ))

soliada

“Взведение” моторов в боевое состояние нехитрой комбинацией стиков- великая функция!

Prikupets

Хочется чтобы когда газ в ноль, движки сразу останавливались. Бывает нет времени на движение для disarm’а. Например, когда ребенок к коптеру приближается, или коптер задел что-то.
А чтобы пузом не задевать, надо лампочки на arm подключить, ну и осторожно двигать газ для проверки перед взятием коптера - выработать эту привычку.

Shuricus

А у меня при газе в ноль движки не крутятся! Нужно прошить регули WIIESC и выставить там нижний порог. И вообще эта прошивка удобнее и лучше чем Саймон во всех смыслах.

Shuricus

А что бы не получить в рожу коптером нужно сделать автодизарм, если в течении 5 сек газ не пошел вверх! Ну и вообще думать, что делаешь.

Avocado

Коллеги, вопрос.
Вот Сергей пишет “при наклоне вправо должен увеличиватся угол ROLL по акселю и положительный скачок ROLL по гироскопу, Z ось акселя и компаса должны уменьшатся.”
И таки да - именно так и происходит на экране в MultiWiiConf-е. Однако акселерометр измеряет ускорение, а гироскоп - абсолютный наклон по осям. Т.е. “при наклоне вправо должен увеличиватся угол ROLL по гироскопу и положительный скачок ROLL по акселю”. Нигде про этот глюк ничего не нашёл. Но летает, вроде, славабогу, гекса правильно…

mataor

это будет правильно для именно гироскопа и акселерометра.
а мы тут имеем дело с МЕМС датчиками, а в них эти понятия немного другие:
МЕМС гироскоп измеряет угловую скорость
МЕМС аксель измеряет угол относительно силы гравитации при отсутствии движения с ускорением, или вектор между силой гравитации и силой корилиса(вроде так) при движении с ускорением
www.analog.com/ru/mems-sensors/…/index.html

Avocado

Да, и вправду так… Очередная “традиция” в терминах - как с размером диагонали “условного видикона” - реальный размер матриц фиг найдёшь