MultiWii
Всем доброго дня.
Прошу подсказать (или ткнуть носом где прочитать) –выделеное красным это гирик или другой какой-то режим.
В общем оказалось что дело всё же не в PPM выводе. Проверил - действительно есть баг со всеми каналами, выкрученными в максимум, но это ситуация редко достижимая. Мой случай, как оказалось - выражается вот в чём. При наличии некоей комбинации каналов, близких к максимальным значениям, а в особенности, если почему-то в этом списке оказывается канал газа - наблюдается подзависание платы так же, как и в баге с PPM-выходом. То есть стабильно воспроизводимо если ГАЗ+Pitch более 90%, или с некоей вероятностью срабатывает когда ГАЗ+другой канал > 90%. Пробовал на другой платке, - такой проблемы нет. Прошивал платку свою другой, стабильной прошивкой - проблема не уходит. Похоже что это проблема железа, хотя ума не приложу как такое может быть.
Дальше разбираться не буду - оттриммировал все каналы на максимальные значения в 85%…Речь идёт о плате - MultiWii Lite V1.0 Flight Controller w/FTDI
Сегодня столкнулся с похожей проблемой: летал в небольшой ветер, приемник HK-T6A c SUM PPM, Multiwii 2.0 на Crius SE 0.1. Примерно через 2-4 минуты полета, коптер полностью терял контроль. Запоминались последние переданные с пульта позиции стиков, и больше ни на что не реагировал (даже на выключение или перезагрузку пульта). Проблема повторялась три раза, в третий раз чуть не улетел с единственным экземпляром моего нового контроллера подвеса 😃 Версия 2.0 модифицированная, но в код чтения ресивера я не лез - а проблема похоже в нем. Летаю чуть меньше года на этой прошивке и этом железе, и ни разу не было такого. Судя по видео - основной цикл работал, стабилизация была в норме, а завис только цикл приема или сам приемник.
Летаю чуть меньше года на этой прошивке и этом железе, и ни разу не было такого. Судя по видео - основной цикл работал, стабилизация была в норме, а завис только цикл приема или сам приемник.
думаю что всеже приемник подзавис, т.к. если бы в прошивке дело было, то глюк поймал бы раньше чем через год… может новое обрудование (подвес), внесло свои коррективы, тем более если все на одной батарее висит и основной контролер питается от бека регуля или самого акб… т.е. мот по питанию что то поплыло и помехи прут…
А я сегодня опять раму раздолбил, висел в позишн холд + альт холд при ветре 15-18км/ч, потом коптер понесло в сторону с набором скорости за пределы стадиона… все что успел, сбросил газ… потом вспомнил, что на этом поле нужно магнетометр перекалибровывать. т.е. домашняя калибровка не катит… в итоге обрубки карбоновых лучей уже укорачивать некуда 😃 закрываю сезон короче 😃
Проблема в ppm (который ppm-sum).
У меня проявляется просто при газ + еще один канал >2000, по-моему. Остальное можно и не трогать. Управление замирает на довольно длительное время - проблему хорошо видно в WinGui
Mwii - crius от rctimer с 2.1
Ресивер - FrSKY V8R7-SP
Проблема в ppm (который ppm-sum).
Я проверял - у меня проблема не в PPM-SUM. У меня то же самое, и в случае по-канальной передаче сигнала… Зависает кстати на 1-1.5 секунды…
Я проверял - у меня проблема не в PPM-SUM. У меня то же самое, и в случае по-канальной передаче сигнала… Зависает кстати на 1-1.5 секунды…
Маленькая поправка. При двух каналах >1900 (а не >2000)
В коде особых граблей не видно. Сейчас буду проверять своей ppm-читалкой и ppm-генерилкой…
Народ чего вы гадаете?Поставте уже себе на фриску прошивку с увеличеным PPM кадром с 18 до 27 милисек.
Я лично зашил на свой D8R-II прошивку от D8R-XP и всё отлично работает.При замыкании 3 и 4 каналов на первом канале появляется 27мс РРМ,а на втором рсси.Без перемычки приёмник работает в обычном режиме.
Вот адрес прошивки.
frsky-rc.com/DownloadItem.asp
А вот сылка на прошивку.
frsky-rc.com/uploadfile/…/20121010020017621.zip
Народ чего вы гадаете?Поставте уже себе на фриску прошивку с увеличеным PPM кадром с 18 до 27 милисек.
Я лично зашил на свой D8R-II прошивку от D8R-XP и всё отлично работает.При замыкании 3 и 4 каналов на первом канале появляется 27мс РРМ,а на втором рсси.Без перемычки приёмник работает в обычном режиме.Вот адрес прошивки.
frsky-rc.com/DownloadItem.aspА вот сылка на прошивку.
frsky-rc.com/uploadfile/…/20121010020017621.zip
Для моего ресивера update’а нету, да и сомневаюсь что в этом дело. Не любые два канала >1900, а именно при thr>1900 + еще один канал. В коде mwii тротл (но не ппм) также используется для отсечки по failsafe…
И вот еще - зависание - это зависание mwii, а не ресивера. При зависании WinGui начинает показывать отрицательный loop time (видимо переполняясь)
Маленькая поправка. При двух каналах >1900 (а не >2000) В коде особых граблей не видно. Сейчас буду проверять своей ppm-читалкой и ppm-генерилкой…
А какая прошивка у вас? Какое доп. оборудование или режимы включены?
Я провел небольшое исследование - приемник не при чем, после зависания я перетыкаю приемник, и ничего не меняется. Зависает совершенно спонтанно, иногда даже просто оставляю приемник в покое в центральных положениях стиков, через 5 минут смотрю - завис цикл чтения. Все остальное работает в GUI. Очень похоже, что проблема только в моей модифицированной прошивке, т.к. раньше ничего подобного не было. Но что я там менял в последний раз - не помню 😦
Бага в коде.
Комментируем в MultiWii_2_1.ino строчки с
----------------
// end of failsave routine - next change is made with RcOptions setting
if (rcData[THROTTLE] < MINCHECK) {
----------------
(у меня это ~626 строка) и до
----------------
#if defined(INFLIGHT_ACC_CALIBRATION)
if (AccInflightCalibrationArmed && f.ARMED && rcData[THROTTLE] > MINCHECK && !rcOptions[BOXARM] ){ // Copter is airborne and you are turning it off via boxarm : start measurement
InflightcalibratingA = 50;
AccInflightCalibrationArmed = 0;
}
if (rcOptions[BOXPASSTHRU]) { // Use the Passthru Option to activate : Passthru = TRUE Meausrement started, Land and passtrhu = 0 measurement stored
if (!AccInflightCalibrationActive && !AccInflightCalibrationMeasurementDone){
InflightcalibratingA = 50;
}
}else if(AccInflightCalibrationMeasurementDone && !f.ARMED){
AccInflightCalibrationMeasurementDone = 0;
AccInflightCalibrationSavetoEEProm = 1;
}
#endif
----------------
(у меня это 775 строка). Включительно.
После чего проблемы в WinGui не наблюдается. Очевидно, проблема все-таки не в ppm-sum frsky, а в коде Mwii…
Летать не пробовал - надо смотреть внимательно код - я мог и что лишнее закомментить -)
ps. hatuul - проверьте, пожалуйста, что у вас проблема при выкрученном thr действительно отсутствует
А какая прошивка у вас? Какое доп. оборудование или режимы включены?
Я провел небольшое исследование - приемник не при чем, после зависания я перетыкаю приемник, и ничего не меняется. Зависает совершенно спонтанно, иногда даже просто оставляю приемник в покое в центральных положениях стиков, через 5 минут смотрю - завис цикл чтения. Все остальное работает в GUI. Очень похоже, что проблема только в моей модифицированной прошивке, т.к. раньше ничего подобного не было. Но что я там менял в последний раз - не помню 😦
2.1- #TRI
тестюсь на самой простой - без gps, баро, магнита
последовательно вырубил все что можно - не помогало
pps. у меня при этом залипании он начинает мигать синим диодиком. Ощущение что пытается в какую-нибудь настройку зайти…
Ложная тревога -)
Зависание имеет место быть только в disarm состоянии - действительно настройки. В Arm - все ок, не виснет
Вечер добрый, подскажите как в прошивке MultiWii_2_1_b3 переназначить сумарный PPM с входа RX на THROTTLE, плата контроллера crius ALL IN ONE PRO v1.0 на меге 2560
При замыкании 3 и 4 каналов на первом канале появляется 27мс РРМ,а на втором рсси.
О! свежак (10/10/2012)!
ты кстати RSSI (PWM) не пробовал мобидрону кормить? или ему только аналоговый RSSI подойдет, которого в D8R-II(XP) нет похоже… хотя из ШИМ-а в аналог не трудно перегнать… не гугля по идее обычный RC фильтр прокатит…
Вечер добрый, подскажите как в прошивке MultiWii_2_1_b3 переназначить сумарный PPM с входа RX на THROTTLE, плата контроллера crius ALL IN ONE PRO v1.0 на меге 2560
поищите тут… вроде было…
мобидрону кормить
Уже третий месяц кормиться посмотри на мои видео.Кстати рсси почти аналоговый (ШИМ) мобидрон их хорошо принимает через резюк и кандёр запитаный на землю.Силу сигнала отображает почти такую-же как на пульте ±10%.
мобидрон их хорошо принимает через резюк и кандёр запитаный на землю.
не гугля по идее обычный RC фильтр прокатит…
так про то и писал 😃
подскажи плз. параметры фильтра, т.е. какой кондер и резюк?
Уже не помну,брал,что под руку попалось.
Если не ошибаюсь кандер 10 нФ запаралелен с резюком 1к.
В обрыв кажетса 100 или 50 ом ставил.
Вечер добрый, подскажите как в прошивке MultiWii_2_1_b3 переназначить сумарный PPM с входа RX на THROTTLE, плата контроллера crius ALL IN ONE PRO v1.0 на меге 2560
отвечу на свой вопрос, разобрался такая возможность появилась в MultiWii dev version r1143 (2012/09/27)
необходимо отредактировать в
RX.ino после
/**************************************************************************************/
/*************** PPM SUM RX Pin reading ********************/
/**************************************************************************************/
// attachInterrupt fix for promicro
#if defined(PROMICRO) && defined(SERIAL_SUM_PPM)
ISR(INT6_vect){rxInt();}
#endif
вписать
#if defined(PPM_ON_THROTTLE) && defined(MEGA) && defined(SERIAL_SUM_PPM)
ISR(PCINT2_vect) { if(PINK & (1<<0)) rxInt(); }
#endif
затем в def.h в
/************************** all the Mega types ***********************************/
найти #define PPM_PIN_INTERRUPT attachInterrupt(4, rxInt, RISING); //PIN 19, also used for Spektrum satellite option
и заменить на
#if defined(PPM_ON_THROTTLE)
//configure THROTTLE PIN (A8 pin) as input witch pullup and enabled PCINT interrupt
#define PPM_PIN_INTERRUPT DDRK &= ~(1<<0); PORTK |= (1<<0); PCMSK2 |= (1<<0); PCICR |= (1<<2);
#else
#define PPM_PIN_INTERRUPT attachInterrupt(4, rxInt, RISING); //PIN 19, also used for Spektrum satellite option
#endif
и последнее в config.h после раскоменченного желаемого PPM дописать #define PPM_ON_THROTTLE
например так
/**************************************************************************************/
/******** special receiver types ********************/
/**************************************************************************************/
/**************************** PPM Sum Reciver ***********************************/
/* The following lines apply only for specific receiver with only one PPM sum signal, on digital PIN 2
Select the right line depending on your radio brand. Feel free to modify the order in your PPM order is different */
//#define SERIAL_SUM_PPM PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4 //For Graupner/Spektrum
//#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4 //For Robe/Hitec/Futaba
#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4 //For some Hitec/Sanwa/Others
#define PPM_ON_THROTTLE
проверил работает.
ну както так…
отвечу на свой вопрос
а мой ответ и конкретная ссылка не устроила?! 😃 если упростить до одного клика то вот…
и в 100-й раз… люди не читают и 2-х страниц… а иногда даже ответы на свои вопросы и на той же странице… 😃
Столкнулся с такой фигнёй:
Если включить управление подвесом - то каналы AUX3 и AUX4 - автоматом мапятся на поворот камеры по питчу и роллу соответственно. (вообще, на AIOP есть специальные пины под это дело, но они походу не используются). У меня на AUX3 висит переключение режимов. Соответственно, при щелчке переключателем камера поворачивается хрен-те-куда.
Мне это не понравилось, сделал вот такое решение, может быть кому-то окажется полезно:
config.h
/* Camstab pitch control only by one channel, uncomment only one option. Roll control is disabled.
E.g. CAM_STAB_AUX4_ONLY means that signal from AUX4 used to control pitch of the gimbal and AUX3 is ignored.
=== affects Output.ino - Cam stabilize Sevos section === */
// #define CAM_STAB_AUX3_ONLY
#define CAM_STAB_AUX4_ONLY
output.ino
сначала надо удалить кусок
S_PITCH = TILT_PITCH_MIDDLE + rcData[AUX3]-1500;
S_ROLL = TILT_ROLL_MIDDLE + rcData[AUX4]-1500;
и потом добавить
#if defined(CAM_STAB_AUX3_ONLY)
S_PITCH = TILT_PITCH_MIDDLE + rcData[AUX3]-1500;
S_ROLL = TILT_ROLL_MIDDLE;
#endif
#if defined(CAM_STAB_AUX4_ONLY)
S_PITCH = TILT_PITCH_MIDDLE + rcData[AUX4]-1500;
S_ROLL = TILT_ROLL_MIDDLE;
#endif
#if !defined(CAM_STAB_AUX3_ONLY) && !defined(CAM_STAB_AUX4_ONLY)
S_PITCH = TILT_PITCH_MIDDLE + rcData[AUX3]-1500;
S_ROLL = TILT_ROLL_MIDDLE + rcData[AUX4]-1500;
#endif
Подскажите - подключил тут BUZZER - так вот он непрерывно пищит. Что это за фигня?
P.S. Алярм по батарейке (VBAT) отключен.