MultiWii на самолете
GPS без конвертера
Разьясните
Плата SE2.5 на меге 328, я так понимаю что она читает данные только по i2c, для этого и существует i2c-gps nav module
На этой плате есть последовательный порт, подписан FTDI. Модуль I2C-GPS существует для многих целей, но автор его забросил в пользу интеграции навигации в основной код мультвия ценой потери совместимости со всеми платами 328. Учитывая, что навигация по точкам через эту плату так и не заработала, а код, позволяющий мультвию на последовательном порту одновременно обслуживать и GPS и ГУИ, есть в ветке 2.4 и выносим в 2.3, большой нужды в этом переходнике нет. Практика показала, что все вычисления GPS вполне вписываются в цикл 3-5мс осовной платы, поэтому и эта причина существования переходника уже тоже малосущественна. Хотите использовать - пожалуйста, но проще тогда подправить код, чтобы он с переходника брат только raw values, декодированные с приемника (опять же, см. текущий код в ветке 2.4).
Ещё раз повторюсь “Для чайников пожалуйста”
Я понял что ЖПС надо повесить в место FTDI а именно без конвернера напрямую у дорожкам,что нужно изменять в прошивке ? Какие дефайны нужно раскоментировать ?
Какой у Вас GPS, на какой скорости работает и какой протокол использует? Какую прошивку заливаете?
Плата CRIUS MultiWii SE V2.5
GPS Ublox CN-06 v.2
Скорочть 115200
По протоколу не разбираюсь, не скажу, висит на I2C
Прошивка офф 2.3
В плате I2C-GPS прошивку меняли? Если да, то что в конфиге там?
Евгений, я сам недавно с похожей проблемой боролся. Я в итоге скачал с сайта юблокса интерфейс для работы с жпс, подключил сам модуль к фтдай , и увидел что у жпс скорость порта 9600… А и в переходника и всамой мултивии в прошивках скорость115000. Так что либо у жпс менять скорость, либо в прошивакх
В том то и дело что на прошивке для коптера (стандарт 2.3) всё работает
С железом всё впорядке,всё коннектится,видит спутники и т.д.
I2C - GPS прошивал , всё делал как тут rcopen.com/forum/f123/topic221574/10629
Такое ощущение что тут сидят одни профи и полюдски ответить могут только еденицы.
Что делать с родной прошивкой ? Не хочу я шиться патриком,по непонятным причинам с аппой нет коннекта, так что будьте добры, возьмите кто нибудь drive.google.com/uc?export=download&id=0B8_pEI-_Sl… и поправте то что внесено в прошивке патрика,что бы не париться, в родной прошивке меня всё устраивает,как летает и прочее,ну раз вы утверждаите что при подсоидинении ЖПС к Вию начинаются чудеса,то помогите в исправлении кода, или выложите что в нём именно менять и где
? ? ?
После редактирования стандартной прошивки 2.3 получится как раз прошивка Патрика. Он то же на ее основе свой код делал. Лучше опишите проблему с подсоединением к приемнику.
Как идет сигнал с приемника PPM SUM или параллельное соединение ?
Здравствуйте, как настроить флапероны, что то не получается на пульте, в гуи пробовал тоже без успешно, что то не так делаю, подскажите пожалуйста.
Доброго времени суток всем. Стоит у меня сейчас прошивка Патрика, подключено по ППСУМу, все работает, но есть одно НО! - как настроить фэйлсейв, чтобы при пропадании сигналов включался RTH? (при отключении приемника выход ппсума отключается, мультивий видит это). В гуи этого не нашел, в прошивке - вроде искал… но тоже не увидел… Так что ткните носом, пожалуйста, куда копать.
Приемник какой?
Приемник турнига 9Х8С2 v2, к нему на ардуинке прилеплен ппсум (в мультивие задействовал три аукса, один на арм\дизарм, остальные на выбор режимов). Также собрана простая схемка(после ппсума), отключающая выход ппсума при исчезновении сигнала на 2-м выходе приемника (для отработки фэйлсэйфа).
В сём привет. Подскажите где в прошивке настраивается угол отклонения по pitch и roll для летательного аппарата.
собрана простая схемка(после ппсума), отключающая выход ппсума при исчезновении сигнала
Зачем? Поставьте на фэйлсейф переключение режима на возврат домой и дело в шляпе.
В сём привет. Подскажите где в прошивке настраивается угол отклонения по pitch и roll для летательного аппарата.
Угол отклонения чего от чего и в каких режимах? Сформулируйте вопрос нормально…
Зачем? Поставьте на фэйлсейф переключение режима на возврат домой и дело в шляпе.
В том-то и дело, что у меня ппсум без фэйлсефа настраиваемого… При пропадании каналов он тупо выдает последние значения. А мне нужно как-то дернуть AUX для RTH . В ГУИ этого я не нашел, вот и не могу додуматься, как сделать. При добавлении той схемки, отключающей ппсум, у меня хоть сам мультивий становится в фэйлсэйф и через пару секунд сбрасывает газ до нуля. Может, где-то в коде это можно привязать к возврату домой, но я не настолько силен в понимании этого кода, чтобы не напортачить… 😦 Может, я Вас не совсем понял, тогда объясните, пожалуйста, по шагам, что и куда.
Написал небольшое дополнение для тех у кого при пропадании сигнала приемник остается в последнем состоянии на момент пропадания сигнала. Работает и по 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 проверка на небольшое изменение сигнала .
Гена, приветствую. Попробовал скомпилировать, ругается на необъявленную переменную failsafeCnt_charge++ . Какой тип нужен для этого?
Да забыл написать . Сюда добавить
multiwii.cpp
int16_t failsafeEvents = 0;
volatile int16_t failsafeCnt = 0;
volatile int16_t failsafeCnt_charge = 0;
Спасибо, скомпилил, ошибок нет. Завтра залью в мультик и буду настраивать
Что-то не понимаю… Прошил с этими изменениями. Когда армлю, газ управляется с пульта, но через секунд 5-10 начинаются хаотичные включения возврата домой, газ сам увеличивается до максимума, потом сбрасывается до середины и опять в максимум… При ручке газа в ноль газ уменьшается до нуля, но тоже примерно через 5-10 сек самостоятельно включается на 50 процентов… Т.е. поведение, как будто бы выключился пульт и сработал фэйлсэйф, но мультивий “видит” сигналы с пульта… Может, что-то коряво вставил в коде?
Если нужны мои файлы мультивия с исправлениями, то я выложил их на my-files.ru/uga6jp . Может, я чего-то начудил с фэйлсэйфом…