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

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

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

gorbln
VitaliyDF:

Спасибо идею понял

Нет, не поняли, видимо =)))

Мы канал делим пополам. В первой половине - режим левел (например), а во второй - пассфру. Посередине - зазор, чтобы из-за дребезга аппы не происходило переключение режимов и бросков руддера.
Таким образом, середина руддера будет иметь 2 значения: 1150 и 1850 мс.

gorbln

*рукалицо* ну я не знаю как уже объяснить ещё понятнее.
Руддером как обычно. В аппе - микс. А в мультивие - вот там копаться надо, чтобы оно и режимы переключало, и руддер адекватно воспринимало.

8 months later
BoNy

Народ, кто нибудь пробовал к платкам, типа такой **tp://ru.aliexpress.com/item/mini-Stm32f103c8t6-system-board-stm32-learning-development-board/1568685935.html, на STM32 подключать датчики MPU6050, MS5611, HMC5883L?
Где бы схему подключений посмотреть?

gorbln
BoNy:

Где бы схему подключений посмотреть?

А чего там смотреть? по I2C подключаются датчики эти.
Другой вопрос - что в эту стм заливать? Сколь-нибудь рабочих портов вроде бы нету.

BoNy
gorbln:

А чего там смотреть? по I2C подключаются датчики эти.
Другой вопрос - что в эту стм заливать? Сколь-нибудь рабочих портов вроде бы нету.

Это понятно что по I2C, я распиновку платы имел в виду, что на каких выводах.
А по поводу того что заливать: например BaseFlight попробовать.