MultiWii на самолете

djsatan

Плата CRIUS MultiWii SE V2.5
GPS Ublox CN-06 v.2
Скорочть 115200
По протоколу не разбираюсь, не скажу, висит на I2C
Прошивка офф 2.3

Scott_Tiger

В плате I2C-GPS прошивку меняли? Если да, то что в конфиге там?

dilan

Евгений, я сам недавно с похожей проблемой боролся. Я в итоге скачал с сайта юблокса интерфейс для работы с жпс, подключил сам модуль к фтдай , и увидел что у жпс скорость порта 9600… А и в переходника и всамой мултивии в прошивках скорость115000. Так что либо у жпс менять скорость, либо в прошивакх

djsatan

В том то и дело что на прошивке для коптера (стандарт 2.3) всё работает
С железом всё впорядке,всё коннектится,видит спутники и т.д.
I2C - GPS прошивал , всё делал как тут rcopen.com/forum/f123/topic221574/10629
Такое ощущение что тут сидят одни профи и полюдски ответить могут только еденицы.
Что делать с родной прошивкой ? Не хочу я шиться патриком,по непонятным причинам с аппой нет коннекта, так что будьте добры, возьмите кто нибудь drive.google.com/uc?export=download&id=0B8_pEI-_Sl… и поправте то что внесено в прошивке патрика,что бы не париться, в родной прошивке меня всё устраивает,как летает и прочее,ну раз вы утверждаите что при подсоидинении ЖПС к Вию начинаются чудеса,то помогите в исправлении кода, или выложите что в нём именно менять и где
? ? ?

gena_g

После редактирования стандартной прошивки 2.3 получится как раз прошивка Патрика. Он то же на ее основе свой код делал. Лучше опишите проблему с подсоединением к приемнику.
Как идет сигнал с приемника PPM SUM или параллельное соединение ?

mitek

Здравствуйте, как настроить флапероны, что то не получается на пульте, в гуи пробовал тоже без успешно, что то не так делаю, подскажите пожалуйста.

10 days later
alezalez

Доброго времени суток всем. Стоит у меня сейчас прошивка Патрика, подключено по ППСУМу, все работает, но есть одно НО! - как настроить фэйлсейв, чтобы при пропадании сигналов включался RTH? (при отключении приемника выход ппсума отключается, мультивий видит это). В гуи этого не нашел, в прошивке - вроде искал… но тоже не увидел… Так что ткните носом, пожалуйста, куда копать.

alezalez

Приемник турнига 9Х8С2 v2, к нему на ардуинке прилеплен ппсум (в мультивие задействовал три аукса, один на арм\дизарм, остальные на выбор режимов). Также собрана простая схемка(после ппсума), отключающая выход ппсума при исчезновении сигнала на 2-м выходе приемника (для отработки фэйлсэйфа).

geniys

В сём привет. Подскажите где в прошивке настраивается угол отклонения по pitch и roll для летательного аппарата.

Scott_Tiger
alezalez:

собрана простая схемка(после ппсума), отключающая выход ппсума при исчезновении сигнала

Зачем? Поставьте на фэйлсейф переключение режима на возврат домой и дело в шляпе.

geniys:

В сём привет. Подскажите где в прошивке настраивается угол отклонения по pitch и roll для летательного аппарата.

Угол отклонения чего от чего и в каких режимах? Сформулируйте вопрос нормально…

alezalez
Scott_Tiger:

Зачем? Поставьте на фэйлсейф переключение режима на возврат домой и дело в шляпе.

В том-то и дело, что у меня ппсум без фэйлсефа настраиваемого… При пропадании каналов он тупо выдает последние значения. А мне нужно как-то дернуть AUX для RTH . В ГУИ этого я не нашел, вот и не могу додуматься, как сделать. При добавлении той схемки, отключающей ппсум, у меня хоть сам мультивий становится в фэйлсэйф и через пару секунд сбрасывает газ до нуля. Может, где-то в коде это можно привязать к возврату домой, но я не настолько силен в понимании этого кода, чтобы не напортачить… 😦 Может, я Вас не совсем понял, тогда объясните, пожалуйста, по шагам, что и куда.

gena_g

Написал небольшое дополнение для тех у кого при пропадании сигнала приемник остается в последнем состоянии на момент пропадания сигнала. Работает и по PPM_SUM и PWM.

MultiWii.cpp

было

int16_t rcData[RC_CHANS]; // interval [1000;2000]
int16_t rcSerial[8]; // interval [1000;2000] - is rcData coming from MSP
int16_t rcCommand[4]; // interval [1000;2000] for THROTTLE and [-500;+500] for ROLL/PITCH/YAW
uint8_t rcSerialCount = 0; // a counter to select legacy RX when there is no more MSP rc serial data
int16_t lookupPitchRollRC[5];// lookup table for expo & RC rate PITCH+ROLL
int16_t lookupThrottleRC[11];// lookup table for expo & mid THROTTLE

добавить

int16_t rcData[RC_CHANS]; // interval [1000;2000]
int16_t rcSerial[8]; // interval [1000;2000] - is rcData coming from MSP
int16_t rcCommand[4]; // interval [1000;2000] for THROTTLE and [-500;+500] for ROLL/PITCH/YAW
uint8_t rcSerialCount = 0; // a counter to select legacy RX when there is no more MSP rc serial data
int16_t lookupPitchRollRC[5];// lookup table for expo & RC rate PITCH+ROLL
int16_t lookupThrottleRC[11];// lookup table for expo & mid THROTTLE

#if defined(FAILSAFE_CHANEL_NO_CHARGE)
int16_t rcData_last[RC_CHANS]; // interval [1000;2000]
#endif

Это нужно вставить

#if defined(FAILSAFE_CHANEL_NO_CHARGE)
int rcData_temp = 0;
static int16_t rx_no_charge[8] = FAILSAFE_RX;

for(i=0; i<RC_CHANS; i++)
{
rcData_temp = rcData_temp + (rcData_last[i]-rcData[i]) ;
rcData_last[i]=rcData[i];
}

if (abs(rcData_temp) < FAILSAFE_NO_CHARGE_DEADBAND)
{
failsafeCnt_charge++;
}else{
failsafeCnt_charge = 0;
}

if ( failsafeCnt_charge > (5*FAILSAFE_NO_CHARGE_DELAY))
{
for(i=0; i<RC_CHANS; i++) rcData[i] = rx_no_charge[i];
}
#endif

после родного FAILSAFE

#if defined(FAILSAFE)
if ( failsafeCnt > (5*FAILSAFE_DELAY) && f.ARMED) { // Stabilize, and set Throttle to specified level
for(i=0; i<3; i++) rcData[i] = MIDRC; // after specified guard time after RC signal is lost (in 0.1sec)
rcData[THROTTLE] = conf.failsafe_throttle;
if ((failsafeCnt > 5*(FAILSAFE_DELAY+FAILSAFE_OFF_DELAY)) && !f.FAILSAFE_RTH_ENABLE) { // Turn OFF motors after specified Time (in 0.1sec)
go_disarm(); // This will prevent the copter to automatically rearm if failsafe shuts it down and prevents
f.OK_TO_ARM = 0; // to restart accidentely by just reconnect to the tx - you will have to switch off first to rearm
}
failsafeEvents++;
}
if ( failsafeCnt > (5*FAILSAFE_DELAY) && !f.ARMED) { //Turn of "Ok To arm to prevent the motors from spinning after repowering the RX with low throttle and aux to arm
go_disarm(); // This will prevent the copter to automatically rearm if failsafe shuts it down and prevents
f.OK_TO_ARM = 0; // to restart accidentely by just reconnect to the tx - you will have to switch off first to rearm
}
failsafeCnt++;
#endif

config.h добавить в любое место

#define FAILSAFE_CHANEL_NO_CHARGE
#define FAILSAFE_NO_CHARGE_DELAY 50 // Guard time for failsafe activation after signal lost. 1 step = 0.1sec - 1sec in example
#define FAILSAFE_NO_CHARGE_DEADBAND 10
// #define FAILSAFE_RX {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500}
#define FAILSAFE_RX {1500, 1500, 1500, 1300, 1500, 2000, 1000, 1000}
// ROLL PITCH YAW THR AUX1 AUX2 AUX3 AUX4

FAILSAFE_NO_CHARGE_DELAY время срабатывания файлсейфа 1 это 0,1 с .
FAILSAFE_NO_CHARGE_DEADBAND проверка на небольшое изменение сигнала .

alezalez

Гена, приветствую. Попробовал скомпилировать, ругается на необъявленную переменную failsafeCnt_charge++ . Какой тип нужен для этого?

gena_g

Да забыл написать . Сюда добавить
multiwii.cpp

int16_t failsafeEvents = 0;
volatile int16_t failsafeCnt = 0;
volatile int16_t failsafeCnt_charge = 0;

alezalez

Спасибо, скомпилил, ошибок нет. Завтра залью в мультик и буду настраивать

alezalez

Что-то не понимаю… Прошил с этими изменениями. Когда армлю, газ управляется с пульта, но через секунд 5-10 начинаются хаотичные включения возврата домой, газ сам увеличивается до максимума, потом сбрасывается до середины и опять в максимум… При ручке газа в ноль газ уменьшается до нуля, но тоже примерно через 5-10 сек самостоятельно включается на 50 процентов… Т.е. поведение, как будто бы выключился пульт и сработал фэйлсэйф, но мультивий “видит” сигналы с пульта… Может, что-то коряво вставил в коде?

Если нужны мои файлы мультивия с исправлениями, то я выложил их на my-files.ru/uga6jp . Может, я чего-то начудил с фэйлсэйфом…

gena_g

Я кое что подправил . Позвони мне завтра

John_Locke

Вопрос. На руках две arduino pro mini , модули neo-6m и gy-87. Вопрос, по какой схеме собирать все вместе, дабы получить полный автопилот для самолета, нужен полет по точкам, возвращение домой при потере связи и прочие плюшки. Прошивать надо простым вием 2.4, или пойдет только прошивка Патрика?

1 month later
fat_hamster

Как выходной, так и дождь - так что я себе от нечего делать придумал мороку:
Втулил на тренер ардуину и 2 датчика, компас и акселерометр; спаял датчики как проще, друг над другом на общие “штырьки”, но из-за этой простоты плата компаса получилось повернутой на 90 и " вверх ногами" 😃

Не я то помнил что дефайн есть и можно переназначить оси, но дошло до дела и я в каком то затыке 😄

Ни у кого опыта не было такого? Ссылки которые нашёл по быстрому как то не очень помогают

Вообще говоря компас то не очень и нужен сейчас, емнип это для жпс важно, а для жпс места уже все равно нет, да и самолёт не тот, чтоб жпс нужен был… Так что буду испытывать без компаса - но просто из интереса уже интересно…

kostya-tin

multiwiifaq.ts9.ru/3----------------------.html
внизу страницы. оси можно не только переназначать с + и -, но и менять их местами (предупреждаю, т.к. когда то долго с этим мучался, пока не дошло, что их тоже можно переназначать.
www.multiwii.com/wiki/index.php?title=Config.h#sen… - тут описано, как должны себя вести датчики при изминении положения платы