Изготовление системы стабилизации самолёта
В авиации я и сам пока дальше самолёта-тренера и простого вертолёта не ушёл)
То, что я пишу , касаемо выходов, не обязательно знать. Я попытаюсь сделать, и в случае успеха, опишу всё максимально просто, в формате - что купить, и куда припаять
Это как раз то что мне надо что купить куда припаять как прошить ! Ты наверное сделаешь самую большую услугу всем новичкам ))) я тоже начал этим заниматься когда племяннику подарили 3 каналку вертолет потом цестна по видио на ютюбе теперь вот ЯК-3 строим
Через переходник usb uart можно будет подружить компьютер с данной программой?
Да.
Недавно собрал стаб на мультивие себе на цессну из потолочки. Пока не летал, только настроил.
Будете собирать контроллер самостоятельно - обращайте внимание на расположение датчика (MPU6050) и его ориентацию в пространстве. От этого будут зависеть настройки в файле config.h (или в def.h, если захотите “запомнить” свою плату).
Мой контроллер, установлен в цесну. Сделан на Arduino pro mini и модуле MPU6050. Гейские радужные провода уже заменены на нормальные МГТФ.
Ну и это… “буду собирать - спрошу” - тупая тактика. Почитайте минимум факов по мультивию.
Первая ссыль - блог Патрика - чела, который плотно занимается именно вием для самолёта.
Вторая ссыль - официальный фак мультивия (довольно-таки устаревший - но там есть ответы на 90% вопросов - надо только искать)
Третья ссыль - русский (в отличие от остальных ссылок) ресурс с довольно подробным описанием как, чего и куда. Наполняет ресурс Дмитрий omegapraim с этого форума. Как минимум - надо прочитать его. Забить на разделы про ГПС и прошивку регуляторов - на самоле оно не особо актуально.
К слову - словил тут фейл. AUX2 на ноге D8 - у меня не заработал. Ещё проверю, почему так получилось - но вот так. В интернетах рекомендуют переносить его на D12 - но на самолёте там висит серва.
AUX2 на ноге D8 - у меня не заработал.
Там, по идее, одно-единственное место, где это играет, в def.h:
#if !defined(RCAUXPIN8)
#if !defined(MONGOOSE1_0)
…
#endif
#else
#define BUZZERPIN_PINMODE ;
#define BUZZERPIN_ON ;
#define BUZZERPIN_OFF ;
#define RCAUXPIN
#endif
и в RX.cpp
/************* atmega328P’s Specific Aux2 Pin Setup *********************/
#if defined(PROMINI)
#if defined(RCAUXPIN)
PCICR |= (1 << 0) ; // PCINT activated also for PINS [D8-D13] on port B
#if defined(RCAUXPIN8)
PCMSK0 = (1 << 0);
#endif
#if defined(RCAUXPIN12)
PCMSK0 = (1 << 4);
#endif
#endif
#endif
Как бы нет причин не работать.
Как бы да, но как бы нет =))) Не работает, скотино =)
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
дефайном включается
Ну ёшкин пень… Я вием занимаюсь со времён, когда гироскопы из WiiMotion выпиливали. Естественно, я в курсе про этот дефайн =)))) Не работает, зараза.
Ну мало ли… Я вот тоже про него знал, а потом когда не работал вход - подумал, что порт сжег
Егор, попробуйте подебажить потихоньку. Я бы начал в такой последовательности:
1а. При наличии осциллографа посмотрите, приходит ли на 8-й пин нужный сигнал (лучше смотреть на ноге самой атмеги).
1б. При отстутствии осциллографа, проверьте простым скетчем. Должен ловить смену состояния пина в одну из сторон 50 раз в секунду или около того, и/или считать длину импульса в микросекундах. Впрочем, такую проверку и при наличии осциллографа провести стоит.
2. Если с железом все ОК, то, вероятно, что-то сломалось в коде. Закомментируйте вызовы serialCom() и подебажьте через стандартный Serial.print() по всем кускам кода, где идёт обработка логики входа с приёмника.
3. Если не получается, попробуйте залить оригинальный мультивий с правками только config.h. Мало ли что случайно поломали.
Это же компьютеры, они всегда работают только так, как им велено. Чудес не бывает…
Ну, для начала - я сам тупой. Тестил изменения на плате, у которой к “AUX2” подключена какая-то левая нога, типа А5. =)
Ну а с контроллером в самолёте - очистил EEPROM, скачал чистый вий 2.3, добавил туда свою плату и раскомментил RCAUXPIN8 - залил - всё пошло как по маслу. Видимо изначально взял корявый скетч (у меня на коптерах прошивка маховика, а 2.3 нашёл в архиве - видимо, я с ней до этого что-то делал)
Потестил полёт - очень понравилось в режиме акро, очень НЕ понравилось в режиме LEVEL. В левеле - самолёт просто клевал носом и нёсся к земле. Такое ощущение, что контроллер не старается выравнивать самолёт, а просто выставляет по элеронам и РВ какие-то усреднённые значения, необходимые, по его мнению, чтобы выровнять самолёт. И пофиг, что он падает =)))
Зато в акро - прекрасно. Самолёт летает как в симуляторе - плавно, ровно. На ветер пофигу (до определённого предела, конечно).
какие “акро”, какие “левел”? 😃
angle и horizont же; в англе нельзя накренится больше 45 град, в хоризонте можно (я упорно не понимаю логику названий)
кстати если не указать paththrough (не уверен что правильно написал 😃 ), то контроллер пытается удерживать самолет (коптер) “как есть” - как наклонили, так и летит
з.ы. это если мы про 2.3 говорим
angle и horizont же; в англе нельзя накренится больше 45 град, в хоризонте можно (я упорно не понимаю логику названий)
кстати если не указать paththrough (не уверен что правильно написал ), то контроллер пытается удерживать самолет (коптер) “как есть” - как наклонили, так и летитз.ы. это если мы про 2.3 говорим
angle & horizon - это 2 варианта одного и того же - удержания горизонта по акселерометру. Работает невнятно, говорю же, сложилось впечатление, что это “пропорциональное отклонение рулевых поверхностей в зависимости от наклона аппарата”, а не полноценное выравнивание в горизонт, как на коптере. Возможно бИда из-за того, что цессна у меня в хлам ушатанная, с изменяющим =) выкос движком (болтающимся, другими словами) и всё такое прочее.
пассфру - это когда вообще всё-всё, кроме миксов и лимитов перемещения - выключено. Стабилизации нет никакой. Управляем по-старинке, ручками.
А вот когда не включено ничего из вышеперечисленного - это и есть акро. То бишь - стабилизация по гироскопу, компенсация порывов ветра.
К слову говоря, когда я пару лет назад приходил на поле с коптером - местные самолётчики смотрели на него как на говно с комментариями типа “да там всё за тебя электроника делает”. И вот недавно я узнаЮ, что оказывается, контроллеры, аналогичные вию в акрорежиме - норма для маститых самолётчиков, называют они это “стабилизатор” и совсем не стесняются того, что “за них всё электроника делает”. С комментариями “а как же иначе летать-то? О_о” Вот такое вот лицемерие =)))
ну а у меня на самолетах (крылья/икар/бикслер) angle/horizont работает отлично - именно полноценное выравнивание - ручки бросил и самолет уже летит ровно (как откалибровал точнее 😃 )
–
а когда барометр подключить (alt hold то есть), то вообще так забавно - моторчик то взревет, то потише 😃
похоже (да так и есть думаю) что он чтобы подняться как коптер - обороты увеличивает, а руль высоты и не задействует
Итак. Пришла ардуина, пришёл 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 для калибровки через компьютер. Но, посмотреть, работает ли вообще, хочу
Дмитрий, раскройте тему “Что-то ничего не работает”: что именно “ничего” и как именно “не работает”. Например, “GUI не подключается”, “в GUI лезут ошибки I2C” и т.д. Проверьте подключение каналов приемника и серв согласно, например, …blogspot.ru/…/how-to-setup-multiwii-airplane-same…
Дмитрий, раскройте тему “Что-то ничего не работает”: что именно “ничего” и как именно “не работает”. Например, “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, т.к. так маркирована плата гироскопа
Без первоначальной настройки само по себе оно работать не будет, т.ч. ждите переходник. В частности, то что Вы хотите, называется режим Passthru, его надо навесить в GUI на какое-то положение в канале, например, AUX1. Также требуется взвести контроллер (арминг, arming), т.к. по началу он будет невзведён (задизармлен, disarmed) - это делается какой-то марсианской комбинацией стиков на пульте, я её в своём образце всю эту логику удалил. Читайте доки, они рулез 😃
А вообще - сверху уже советовали вопросы по мультивию задавать в профильном топике. Велкам.
Без первоначальной настройки само по себе оно работать не будет, т.ч. ждите переходник. В частности, то что Вы хотите, называется режим Passthru, его надо навесить в GUI на какое-то положение в канале, например, AUX1. Также требуется взвести контроллер (арминг, arming), т.к. по началу он будет невзведён (задизармлен, disarmed) - это делается какой-то марсианской комбинацией стиков на пульте, я её в своём образце всю эту логику удалил. Читайте доки, они рулез 😃
А вообще - сверху уже советовали вопросы по мультивию задавать в профильном топике. Велкам.
Спасибо, буду ждать переходник. Пока что, перехожу в ветку к мультивию
Народ, подскажите пож, есть плата 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 также ничего не выдают, подскажите где что подправить?
не могу до конца разобраться на какие пины подключать сервы и каналы приемника, распиновка 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);
Народ, подскажите пож, кто сталкивался, есть Arduino Pro Mini+MPU-5060 c Multiwii 2.3, в режиме стабилизации руддер сразу уезжает в сторону, на своем сайте Patrik Emilsson (…blogspot.ru/…/how-to-setup-multiwii-airplane-same…) советует сделать в этом случае YAW_I = Zero, но мне это не помогло, где еще копать?