Изготовление системы стабилизации самолёта

fat_hamster

AUX2 на ноге D8

дефайном включается

тут есть тема “мультивии на самолете” у нас на форуме если что… не фак, не разжевано, но что-то да есть

    /*********************************    Aux 2 Pin     ***********************************/
      /* possibility to use PIN8 or PIN12 as the AUX2 RC input (only one, not both)
         it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8) */
      //#define RCAUXPIN8
      //#define RCAUXPIN12
gorbln
fat_hamster:

дефайном включается

Ну ёшкин пень… Я вием занимаюсь со времён, когда гироскопы из WiiMotion выпиливали. Естественно, я в курсе про этот дефайн =)))) Не работает, зараза.

fat_hamster

Ну мало ли… Я вот тоже про него знал, а потом когда не работал вход - подумал, что порт сжег

Scott_Tiger

Егор, попробуйте подебажить потихоньку. Я бы начал в такой последовательности:

1а. При наличии осциллографа посмотрите, приходит ли на 8-й пин нужный сигнал (лучше смотреть на ноге самой атмеги).
1б. При отстутствии осциллографа, проверьте простым скетчем. Должен ловить смену состояния пина в одну из сторон 50 раз в секунду или около того, и/или считать длину импульса в микросекундах. Впрочем, такую проверку и при наличии осциллографа провести стоит.
2. Если с железом все ОК, то, вероятно, что-то сломалось в коде. Закомментируйте вызовы serialCom() и подебажьте через стандартный Serial.print() по всем кускам кода, где идёт обработка логики входа с приёмника.
3. Если не получается, попробуйте залить оригинальный мультивий с правками только config.h. Мало ли что случайно поломали.

Это же компьютеры, они всегда работают только так, как им велено. Чудес не бывает…

gorbln

Ну, для начала - я сам тупой. Тестил изменения на плате, у которой к “AUX2” подключена какая-то левая нога, типа А5. =)
Ну а с контроллером в самолёте - очистил EEPROM, скачал чистый вий 2.3, добавил туда свою плату и раскомментил RCAUXPIN8 - залил - всё пошло как по маслу. Видимо изначально взял корявый скетч (у меня на коптерах прошивка маховика, а 2.3 нашёл в архиве - видимо, я с ней до этого что-то делал)

Потестил полёт - очень понравилось в режиме акро, очень НЕ понравилось в режиме LEVEL. В левеле - самолёт просто клевал носом и нёсся к земле. Такое ощущение, что контроллер не старается выравнивать самолёт, а просто выставляет по элеронам и РВ какие-то усреднённые значения, необходимые, по его мнению, чтобы выровнять самолёт. И пофиг, что он падает =)))

Зато в акро - прекрасно. Самолёт летает как в симуляторе - плавно, ровно. На ветер пофигу (до определённого предела, конечно).

fat_hamster

какие “акро”, какие “левел”? 😃

angle и horizont же; в англе нельзя накренится больше 45 град, в хоризонте можно (я упорно не понимаю логику названий)
кстати если не указать paththrough (не уверен что правильно написал 😃 ), то контроллер пытается удерживать самолет (коптер) “как есть” - как наклонили, так и летит

з.ы. это если мы про 2.3 говорим

gorbln
fat_hamster:

angle и horizont же; в англе нельзя накренится больше 45 град, в хоризонте можно (я упорно не понимаю логику названий)
кстати если не указать paththrough (не уверен что правильно написал ), то контроллер пытается удерживать самолет (коптер) “как есть” - как наклонили, так и летит

з.ы. это если мы про 2.3 говорим

angle & horizon - это 2 варианта одного и того же - удержания горизонта по акселерометру. Работает невнятно, говорю же, сложилось впечатление, что это “пропорциональное отклонение рулевых поверхностей в зависимости от наклона аппарата”, а не полноценное выравнивание в горизонт, как на коптере. Возможно бИда из-за того, что цессна у меня в хлам ушатанная, с изменяющим =) выкос движком (болтающимся, другими словами) и всё такое прочее.
пассфру - это когда вообще всё-всё, кроме миксов и лимитов перемещения - выключено. Стабилизации нет никакой. Управляем по-старинке, ручками.
А вот когда не включено ничего из вышеперечисленного - это и есть акро. То бишь - стабилизация по гироскопу, компенсация порывов ветра.

К слову говоря, когда я пару лет назад приходил на поле с коптером - местные самолётчики смотрели на него как на говно с комментариями типа “да там всё за тебя электроника делает”. И вот недавно я узнаЮ, что оказывается, контроллеры, аналогичные вию в акрорежиме - норма для маститых самолётчиков, называют они это “стабилизатор” и совсем не стесняются того, что “за них всё электроника делает”. С комментариями “а как же иначе летать-то? О_о” Вот такое вот лицемерие =)))

fat_hamster

ну а у меня на самолетах (крылья/икар/бикслер) angle/horizont работает отлично - именно полноценное выравнивание - ручки бросил и самолет уже летит ровно (как откалибровал точнее 😃 )

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

19 days later
John_Locke

Итак. Пришла ардуина, пришёл mpu6050. Решил для начала побаловаться с ардуиной. Но не смог её прошить своим usbasp. После долгих мучений выяснил, что этот агрегат китайской промышленности просто не тянет нагрузку, в результате чего напряжение на его выходе 5в проседает до 2.8в. Запититал ардуину от другого usb, смог прошить. При прошивке вылетает ошибка:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.

Но она нисколько не мешает прошивке.
Итак, припаял mpu6050 к ардуине. Нашёл пример для этого акселерометра, проверил на работоспособность - работает. Теперь вот хочу попытаться настроить и подключить всё это добро к самолёту, но пока не получается. В config.h раскоментил #define AIRPLANE и #define GY_521 . Что-то ничего не работает. Хотя, я ещё не уверен, что правильно подключаю приёмник и сервы к ардуине. Так что жду подсказки от вас, форумчане, как настроить конфиг для самолёта, и куда что подключать . Пока не буду с ним летать, т.к. ещё не пришёл переходник usb uart для калибровки через компьютер. Но, посмотреть, работает ли вообще, хочу

Scott_Tiger

Дмитрий, раскройте тему “Что-то ничего не работает”: что именно “ничего” и как именно “не работает”. Например, “GUI не подключается”, “в GUI лезут ошибки I2C” и т.д. Проверьте подключение каналов приемника и серв согласно, например, …blogspot.ru/…/how-to-setup-multiwii-airplane-same…

John_Locke
Scott_Tiger:

Дмитрий, раскройте тему “Что-то ничего не работает”: что именно “ничего” и как именно “не работает”. Например, “GUI не подключается”, “в GUI лезут ошибки I2C” и т.д. Проверьте подключение каналов приемника и серв согласно, например, …blogspot.ru/…/how-to-setup-multiwii-airplane-same…

пока не пришёл usb uart переходник, так что установить связь с gui не могу. просто раскомментил в конфиге #define AIRPLANE и #define
GY_521 . далее прошил этим мультивием ардуину. подключил к приёмнику в канал руля высоты d5, подключил серву в d10. включил приёмник и ардуину. На пульте двигаю стик, а серва не реагирует. при изменении положения гироскопа, положение сервы тоже не изменяется.
Питание всего идёт с приёмника. На него с bec от esc. Может я не то раскомментил? Кроме тех двух строк, болше ничего не трогал. Я не уверен, какую плату в конфиге нужно было выбрать? Я использовал gy-521, т.к. так маркирована плата гироскопа

Scott_Tiger

Без первоначальной настройки само по себе оно работать не будет, т.ч. ждите переходник. В частности, то что Вы хотите, называется режим Passthru, его надо навесить в GUI на какое-то положение в канале, например, AUX1. Также требуется взвести контроллер (арминг, arming), т.к. по началу он будет невзведён (задизармлен, disarmed) - это делается какой-то марсианской комбинацией стиков на пульте, я её в своём образце всю эту логику удалил. Читайте доки, они рулез 😃

А вообще - сверху уже советовали вопросы по мультивию задавать в профильном топике. Велкам.

John_Locke
Scott_Tiger:

Без первоначальной настройки само по себе оно работать не будет, т.ч. ждите переходник. В частности, то что Вы хотите, называется режим Passthru, его надо навесить в GUI на какое-то положение в канале, например, AUX1. Также требуется взвести контроллер (арминг, arming), т.к. по началу он будет невзведён (задизармлен, disarmed) - это делается какой-то марсианской комбинацией стиков на пульте, я её в своём образце всю эту логику удалил. Читайте доки, они рулез 😃

А вообще - сверху уже советовали вопросы по мультивию задавать в профильном топике. Велкам.

Спасибо, буду ждать переходник. Пока что, перехожу в ветку к мультивию

1 month later
BoNy

Народ, подскажите пож, есть плата Arduino Pro Micro+MPU-5060, прошита Multiwii 2.3 с дефайнами Nanowii для летающего крыла, в GUI все нормально отрабатывает, но не могу до конца разобраться на какие пины подключать сервы и каналы приемника, распиновка Pro Micro отличается от Pro Mini (часть каналов в Micoro не используется A4, A5, D11, D12, D13), методом научного тыка нашел: вход AUX1 на ноге 8, вход THROttle на ноге 7, Rudder на ноге 15, Elev+AIL на ногах 14,16, выход Servo Wing1, для сервы второго крыла выход я не нашел. В какую сторону копать или ткните носом где почитать? В инете и на форуме для Micro ничего толкового не нашел.

Также есть Arduino Pro Mini+MPU-5060, прошита Multiwii 2.3 с дефайнами Nanowii для летающего крыла, в GUI все нормально отрабатывает, подключал по схеме www.undcon.com/wp-content/uploads/…/Plane.jpg, не работает на ноге 4 вход ROLL, а также выходы на сервы крыльев на ногах 11, 12 также ничего не выдают, подскажите где что подправить?

gorbln
BoNy:

не могу до конца разобраться на какие пины подключать сервы и каналы приемника, распиновка Pro Micro отличается от Pro Mini

Смотрите файл def.h - там всё определяется.

// Servos
  #define SERVO_1_PINMODE   DDRF |= (1<<7); // A0
  #define SERVO_1_PIN_HIGH  PORTF|= 1<<7;
  #define SERVO_1_PIN_LOW   PORTF &= ~(1<<7);
  #define SERVO_2_PINMODE   DDRF |= (1<<6); // A1
  #define SERVO_2_PIN_HIGH  PORTF |= 1<<6;
  #define SERVO_2_PIN_LOW   PORTF &= ~(1<<6);
  #define SERVO_3_PINMODE   DDRF |= (1<<5); // A2
  #define SERVO_3_PIN_HIGH  PORTF |= 1<<5;
  #define SERVO_3_PIN_LOW   PORTF &= ~(1<<5);
  #if !defined(A32U4ALLPINS)
    #define SERVO_4_PINMODE   DDRD |= (1<<4); // 4
    #define SERVO_4_PIN_HIGH  PORTD |= 1<<4;
    #define SERVO_4_PIN_LOW   PORTD &= ~(1<<4);
  #else
    #define SERVO_4_PINMODE   DDRF |= (1<<4); // A3
    #define SERVO_4_PIN_HIGH  PORTF |= 1<<4;
    #define SERVO_4_PIN_LOW   PORTF &= ~(1<<4);
  #endif
  #define SERVO_5_PINMODE   DDRC |= (1<<6); // 5
  #define SERVO_5_PIN_HIGH  PORTC|= 1<<6;
  #define SERVO_5_PIN_LOW   PORTC &= ~(1<<6);
  #define SERVO_6_PINMODE   DDRD |= (1<<7); // 6
  #define SERVO_6_PIN_HIGH  PORTD |= 1<<7;
  #define SERVO_6_PIN_LOW   PORTD &= ~(1<<7);
  #define SERVO_7_PINMODE   DDRB |= (1<<6); // 10
  #define SERVO_7_PIN_HIGH  PORTB |= 1<<6;
  #define SERVO_7_PIN_LOW   PORTB &= ~(1<<6);
  #define SERVO_8_PINMODE   DDRB |= (1<<5); // 9
  #define SERVO_8_PIN_HIGH  PORTB |= 1<<5;
  #define SERVO_8_PIN_LOW   PORTB &= ~(1<<5);
20 days later
BoNy

Народ, подскажите пож, кто сталкивался, есть Arduino Pro Mini+MPU-5060 c Multiwii 2.3, в режиме стабилизации руддер сразу уезжает в сторону, на своем сайте Patrik Emilsson (…blogspot.ru/…/how-to-setup-multiwii-airplane-same…) советует сделать в этом случае YAW_I = Zero, но мне это не помогло, где еще копать?

14 days later
VitaliyDF

Так как у меня 4-х канальная аппаратура - нет возможности переключать режимы в MultiWii. Если переключать режимы простеньким сервотестером на к561ла7 - ардуинке плохо не станет?

gorbln
VitaliyDF:

Если переключать режимы простеньким сервотестером на к561ла7 - ардуинке плохо не станет?

Не станет. Только переключать режимы вы сможете исключительно на земле =)

VitaliyDF

То что на земле то понятно. Спрашиваю потому что сервы сильно пищат от данного сервотестера, боюсь навредить ардуине.
Хотелось-бы обойтись без него, но в программировании я ноль.

gorbln

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

А так-то варианты есть… Правда, непростые, и требуют программизма. Например, поделить канал руддера, смиксовать его с переключателем, а в ардуине настроить, чтобы она использовала половину диапазона, причём в зависимости от того, где эта половина - сверху диапазона или снизу - переключать полётный режим. Костыли, низкая точность - но работать будет. Как это сделать - надо разбираться в коде, где читаются каналы РУ. Сам делать не буду.

VitaliyDF

Спасибо идею понял. Как смиксовать думаю разберусь (выставить мин и макс значения рудера, а неиспользованные края диапазона выставить для переключения режима). Но сделать так чтобы при переводе стика из крайнего положения в среднее выставленный режим не отключался - сомневаюсь что осилю.