MultiWii на самолете
Я не в курсе по поводу OpenLRSng, но неужели приемник может возвращать модель домой? И зачем городить огород? Прошивка под MultiWii с RTH уже есть, испробована и со своей функцией полностью справляется.
Она и используется, приемник только говорит, что пора домой, когда сигнал потерян 😃
Есть еще особенности по настройкам модернизированной самолетной прошивки с RTH, но про них расскажу отдельно, если кому интересно.
Да что уж, рассказывайте 😃
Правим в config.h:
- важно раскомментировать
#define DONT_RESET_HOME_AT_ARM
- переключение режимов я повесил на D8, т.к. на D12 висит серва (или правим код)
#define RCAUXPIN8
- желательно сервы оттриммировать здесь а не в передатчике
#define SERVO_OFFSET { 0, 0, 0, 0, 0, 0, 0, 0 }
В гуи теперь надо настроить полетные режимы. Я поставил на трех-позиционный тумблер HORIZON+BARO, ANGLE и PASSTHRU. На второй двух-позиционный повесил GPS_HOME и ARM (среднее положение и крайнее, см. картинку)
На Failsafe приемника надо настроить уровень газа и включение режимов HORIZON и GPS HOME
FW_Nav_130322 прошивка для MultiWii www.ex.ua/load/83808740 (Выставляем свою плату, датчики и магнитное склонение)
i2c-gps-nav www.ex.ua/load/83809003
MinimOSD www.ex.ua/load/83814772
Видео полета
На 3:57, 4:40, 5:30, 7:48 видно как проскакивают FS и связь отрубается, самолет разворачивается домой
Парни, требуется консультация.
Сделал связку Crius AIO и Remzibi OSD. Зашит допиленный под ремзиби мультивий 2.2 в режиме airplane. Криус запитан от внешнего ВЕСа, подключены ВТ, ЖПС МТК-3329, приемник FrSky D4R-II по PPMSum. Arming движка выведен через AUX1. Все работает, в ГУИ ползунки бегают, диапазоны изменения 1000- 2000, subtrim`ы выставлены на 1500, ремзиби правильно накладывает цифирьки в AmCap. Вопрос: Почему не работают сервы при подключении к D2, D5, D6, D7 (перенесен с D37). М.б. что-нибудь забыл раскомментить?
Config.h
#define AIRPLANE
#define CRIUS_AIO_PRO_V1
закомментил //#define ALLOW_ARM_DISARM_VIA_TX_YAW
#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11
#define PPM_ON_THROTTLE
#define GYRO_SMOOTHING {20, 20, 3}
#define GPS_SERIAL 2
#define MTK_BINARY19
#define INIT_MTK_GPS
#define MAG_DECLINIATION 9.63f
#define OSD_REMZIBI_SERIAL 1
#define RX_RSSI_PIN A3
#define MOTOR_STOP
def.h
изменения для переноса сервы 1 элерона с 37 пина на 7-й
#define SERVO_4_PINMODE pinMode (37, OUTPUT); pinMode (7, OUTPUT);
#define SERVO_4_PIN_HIGH PORTC |= 1<<0;PORTH |= 1<<4;
#define SERVO_4_PIN_LOW PORTC &= ~(1<<0);PORTH &= ~(1<<4);
Попутно еще вопросик, если раскомментить
#define USE_THROTTLESERVO // For use of standard 50Hz servo on throttle
то выхода на ESC вообще не будет, т.е. это сделано для ДВС?
Вот картинки ГУИ
Разобрался. Вот, чтобы другие не наступали на те же грабли.
Оказывается, на трехпиновый ряд разъемов (D2 и т.д.) питание с самой платы вообще не подается, а попадает обычно с ESC, и выходы для серв оказываются не запитаны, пока не подключишь сигнальный провод от ESC на D3.
А я, как прилежный пионер, подключал по очереди сначала серву (естественно не работает), потом ее вытащил и воткнул ESC (мотор работает). Короче, тупанул😍
Выплыл баг платы. Если эл. движка вообще нет, а есть, скажем, бензиныч, то как подать питание на сервы - вопрос, или бросать соплю с +5в платы на трехрядные пины или возить для этого на борту отдельный ВЕС:(
Добрался наконец до своего ЛК. Хочу к нему мультивий на криус SE колхозить. Пока для стабилизации, в дольнейшем если попрет под ГПС и возврат.
А, как у вас успехи с мультивием на самолетах ? Есть какие новости в плане настроек ?
Multiwii с настройками по дефолту прекрасно летает на самолете.
Вышла новая прошивка с возвратом, но я ее не тестировал, не на чем. Самолет мой улетел. Отказал мотор после того, как отрубилось управление, и самолет унесло ветром хвостом вперед. Последние координаты по видеоканалу я видел на расстоянии 7-8км и 500м высоты от места взлета. Это максимум, что пробил 200мВт передатчик на 5.8Г. Найти самолет не удалось.
Печаль.
В декабре подключил Remzibi и на этом успокоился. А на днях попытался настроить Вия, и оказалось, что работают не все сервы. Подробнее тут. Буду рад любой помощи.
это мне удачно ссылку дали 😃
вчера наконец кроме размышлений заставил себя что-то сделать - а именно подключил контроллер от коптера к самолету. Контроллер Crius SE v2, самолет - пушер с V- хвостом
собрал, код чуть подправил, что-то заработало (лежит на столе в куче, самолет собрать не было ни метса, ни времени… час ночи однако) - плату наклоняю, сервы отрабатывают что-то
слегка “истерично”, настройку для чувствительности видел, но то на потом
я туплю, но не могу найти в коде (2.3 мультивии), где инвертировать сервы?! для элеронов инвертировал в гуе одну машинку, но то не дело, если перешью со сбросом eeprom и забуду про донастроить
для хвоста вообще пока хардкодом микс сделал
с одной стороны, делаю себе, хардкоды - не страшно; кроме того, там же есть деф MY_PRIVATE_MIXING, можно свой код в отдельный файлик, тогда и проблем с обновлением исходников никаких
а с другой - “абидно, слушай”… все цитируют строчку для раскомментирования реверса серв, но ее в коде нет (правда мне лень было исходники 2.2 посмотреть, может поменялось что-то в коде)
кажется мне я вчера зря поленился и не посмотрел, что вот это в config.h делает
/* if you want to preset min/middle/max values for servos right after flashing, because of limited physical
* room for servo travel, then you must enable and set all three following options */
//#define SERVO_MIN {1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020}
//#define SERVO_MAX {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000}
//#define SERVO_MID {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500} // (*)
//#define FORCE_SERVO_RATES {30,30,100,100,100,100,100,100} // 0 = normal, 1= reverse
(у меня есть оправдание конечно - спать хотелось)
FORCE_SERVO_RATES наверно надо раскоментить и править; из комента правда непонятно, какие 0, какие 1, если там число до 100, наверное просто “-” добавлять для реверса
у меня затык с окончательной деталью перед запуском - с этим *** армингом двигателя
по разным причинам хочу, чтобы двигатель сразу со старта был “армирован” - у меня мотор отключается в аппе тумблером и меня более чем устраивает
но что надо для этого сделать - хз
вроде очевидный вариант - в гуи поставить “галочки” на arm для всех 3-х положений какого-нибудь AUX - а вот болт; работает один раз, после перезагрузки контроллера галки стоят, а арм не активен (не подсвечен зеленым), ну и мотор не работает естественно
Вий, с включенным армингом, при подаче питания, залипает. Он стартовать должен с выключенным армом.
Вий, с включенным армингом, при подаче питания, залипает. Он стартовать должен с выключенным армом.
инфа 100%? 😉
ибо печаль тогда 😦 у меня закончились порты ввода на контроллере - похоже я сжег D8 случайно, так что на aux повесить не получиться…
у меня закончились порты ввода на контроллере
Завести по PPM?
Вот тут я немного туплю 😃
Надо читать про этот Ваш РРМ; это вообще применимо к любой аппе? К 9rx в частности?
у меня затык с окончательной деталью перед запуском - с этим *** армингом двигателя
по разным причинам хочу, чтобы двигатель сразу со старта был “армирован” - у меня мотор отключается в аппе тумблером и меня более чем устраивает
но что надо для этого сделать - хзвроде очевидный вариант - в гуи поставить “галочки” на arm для всех 3-х положений какого-нибудь AUX - а вот болт; работает один раз, после перезагрузки контроллера галки стоят, а арм не активен (не подсвечен зеленым), ну и мотор не работает естественно
Я добавил в multiwii.cpp
#if defined(FIXEDWING)
if ((rcData[THROTTLE] < MINCHECK) && (calibratingG == 0) && f.ACC_CALIBRATED) go_arm();
#endif
Надо читать про этот Ваш РРМ; это вообще применимо к любой аппе? К 9rx в частности?
Он не мой 😃 Смысл - передача нескольких каналов(чаще 8) через один провод. Аппа не важна, важно чтобы приёмник умел его отдавать.
if ((rcData[THROTTLE] < MINCHECK) && (calibratingG == 0) && f.ACC_CALIBRATED) go_arm();
2-е и 3-е условия и так проверяются в go_arm; а в каком месте вставлять? что-то у меня пока не получается 😦
2-е и 3-е условия и так проверяются в go_arm; а в каком месте вставлять? что-то у меня пока не получается 😦
Я ставил перед
//**** PITCH & ROLL & YAW PID ****
Я ставил перед
все, получилось вроде, тупил (ненавижу этот чисто сишный код с миллиардом дефайнов)
вчера наконец доделал прошивку - сделал как: после рестарта мотор дизармленный, так что работает настройка через гуй/блютуз; а если двинуть газ вверх (+у меня надо тумблер переключить, иначе двигай - не двигай, мотор не включится) - мотор армится
пара непоняток:
- со временем наростает какая-то погрешность “курсовая”: включаю, переключаю на angle или hor (самолет стоит на столе) - плоскости не меняют положения; но если пройдет какое-то время и переключится на стабилизацию - рулевые плоскости перемещаются
у меня V-микс на хвосте, так что так сразу не скажешь, какая и в какую сторону, вечером буду играться
но если тронуть руль направления и отпустить - рулевые плоскости становятся в нейтральное положение
включен или выключен компас - мне показалось, что разницы никакой; барометр отключен - самолет лежал на идеально горизонтальном столе (проверял пузырьком); откалибровал аккселерометр - после этого ведь самолет должен пытаться удерживать вот такое положение в полете? а он у меня в воздухе при включении стабилизации летит идеально ровно (видно визуально), НО слегка наклонив нос вниз 😦
удачный запуск (после нескольких неудачных) произошел уже когда начало резко темнеть, так что уже не разбирался, оставил “на потом” (всю неделю никаких вариантов выйти попускать, буду на кухне крыльями махать 😃 )
в субботу полетал, со стабилизацией, работает; сделал наконец какие-то выводы
со временем у меня нарастает погрешность, которая проявляется в том, что если через какое-то время после включения питания включить стабилизацию (неважно, angle или hor), то на хвосте (у меня V-хвост на самолете) одна плоскость приподнимается вверх, другая опускается вниз; на немного
эквивалентно рулению руддером (если кстати двинуть немного руль направления в любую сторону и вернуть назад - плоскости становятся в “нулевое” положение)
уверен более чем, что это именно то, что есть - контроллер пытается “подрулить” руддером, курс держит… а почему решает, что уходит с курса - потому что силовые провода действуют на компас
вот самолет
мотор - в хвосте толкающий, под (3) прячется контроллер и приемник, плюс-минус аккселерометр находится в цт самолета; (2) - это аккумулятор
силовые провода от акка идут к esc (5), мимо контроллера естественно
и ничего-то с этим не сделать 😦