MultiWii
Да она не то чт слабее, както очень слабее 😃 Лудано, будем разбираться, в 1.7 много всего интересного, так что беру свои слова обратно про нерабочее состояниее прошивки, она просто другая, к ней надо привыкать и понимать принцип ее работы. Алил, спасибо за гель! действительно с ним как-то по другому.
Возникла новая прблема. Склеил вий и нунчак китайскими соплями, но почитав форум понял, что нунчак приклеил не той стороной. С трудом разединил их. Подключаю по-новому, не работает. До этого все работало. Перепаиваю провода от ардуины на место нунчака - вий работает, возвращаю обратно - нет. Собственно вопрос: разьемы на вие параллельны или нет? Можно ли подключать нунчак параллельно вию. Куда можно подключить нунчак напрямую к вию. Дорожки на плате вия проверил до переходных отверстий.
подключать нунчак параллельно вию
wbb.multiwii.com/viewtopic.php?f=8&t=145 сам не пробовал. Возможно, будет конфликт из-за одинакового адреса шины. Тогда подключать 3205-3200 и нунчак отдельно. Кстати, в случае неверной ориентации можно в коде поменять оси местами или знак сменить.
Двигатели на разных уровнях при отсутствии внешнего воздействия
-именно так. В ветер или при снижении (автолевел) коптер наклоняется и выравнивается секунды 3. Приходится помогать стиками. Думаю, виноваты коэффициенты ПИД. Полетные режимы очень разные, а коэффициенты не меняются и подобраны не идеально.
По-поводу itg3205 —> 3200. В покое показания были “-5”, смог победить в разделе калибровки calibratngG: “adc[pitch] = adc[pitch] - zeroADC[pitch]” сменил на: “adc[pitch] = adc[pitch]” либо “adc[pitch] = adc[pitch] - zeroADC[pitch] + 50”. С zeroADC[***] перекашивало выход почему-то. Теперь в покое всегда и Акк и Гиро = 0. Вчера полетал с 3205-3200, вполне нормально, иногда подрагивает. Но на правый ESC почему-то всегда идет более слабый сигнал. Попробую поставить новый мотор.
…В ветер или при снижении (автолевел) коптер наклоняется и выравнивается секунды 3. Приходится помогать стиками. Думаю, виноваты коэффициенты ПИД. Полетные режимы очень разные, а коэффициенты не меняются и подобраны не идеально.
Поэтому I 0.045 у автолевела слишком большой помоему, я поставил 0.010, отлично выравниваются, буду чуть повышать уже в поле.
У меня задумка повесить включение автолевела не на тублер, а на ручку hover trottle и чтобы от ее кручения не только включался автолевел, а и менялось значение I автолевела, попробую сегодня глянуть прошивку, как такое сделать. Если кто может помочь в осуществлении идеи, присоединяйтесь!
в прошивках 1.7, и prebiz и pretor, фактически нерабочий автолевел
В корне не согласен! Левел работает замечтательно, достаточно I поставить в 0. У меня level D=8 сейчас, настройки рол-пич-яв стоковые. Паршивка 1.7бис, с пока еще своей доделкой “анти-прыжок”.
В выходные облетал свою треху, если можно так назвать. В стаб. режиме.
Короче, я, как всегда, подолбил его об пол и плюнул. Не летит, ага, мультивий ацтой, датчики - клоны, коптеры - г****. Потом приехал знакомый вертолетчик “и тут такое началось” (с) 😁 Прикладываю видео для сравнения.
Машинка стоит в воздухе как вкопанная, и в камеру позаглядывали, и фару повключали, и на улице в ветерок поболтались…
По впечатлениям товарища, управление по газу “непривычное”. Но рулится легче вертов и его собственной гексы на руссокопе.
Еще бы, у меня экспонента стоит 0.65 😉
2 пака 5а/ч мне выжрал, еле отбился от него 😁
На висении ток 20А, с фарой 21.7А. 13 минут висит с запасом. В очках пулять в узких помещениях проблематично из-за интерференции (гаснет изображение).
Выводы из сей басни таковой: надо учиться летать денно и нощно. Часы и великие часы налета. Жаль, некуда сбросить самолетные рефлексы.
Второй вывод: надо также выкашивать передние моторы градуса на 3, т.к. летает, подняв правую лапу 😁
Третий вывод: Мултивий это ниипически круто!111
Четвертый вывод: надо встраивать MARG-алгоритм от Сиськи (RCG Ciskje), т.к. при маневрах авиагоризонт дурит конкретно.
Пятый вывод: Здоровенные GWSовские лопаты тем хороши, что не ломаются, а тупо останавливают двигатели.
Ну, хватит выводов, смотрите видос.
Раз
Два
как бы еще через ардуинку снимать потребление тока?
я ипользую датчик ALLEGRO ACS756SCA-100B-PFF-T на 100 ампер (есть и менше)
стоил 220 р , выход по напряжению у него на аналоговый порт ардуинки и вычисляй амперы
В корне не согласен! Левел работает замечтательно, достаточно I поставить в 0. У меня level D=8 сейчас, настройки рол-пич-яв стоковые.
Да я уже пришел к этому выводу, спустя 30 минут после своего гневного выпада в сторону wii 😃
Олег, глянь пожалуйста идею, возможно такое осуществить?
Можно-то все, только нужно ли? 😃 I-ветка нужна, чтобы батарейку к одному лучу вешать и потом хвастаться, что не кренится. Управление с ней получается дифференциального типа: любое отклонение “тарелки” будет постепенно сведено к нулю. Причем, при отклоненном стике! А при возврате стика в 0 , как бы сказать, “отдача замучает”.
Я уже тут писал, что нужно в режиме level не плюсовать level PID и RC command, а суммировать Angle и RC непосредственно перед ПИДом. Т.е. ручкой задавать угол “тарелки” непосредственно.
С другой стороны, IMU организован сам по себе криво, и не стоит пока его как-то преобразовывать. Путного выйдет мало. Лучше подождать MARG.
У тебя I автолевела сейчас на нуле или в каком значении?
Ну ты подскажи все-таки как повесить I на крутилку, хотя бы мельком, если не ломает 😃
Ты езе в ветер не летал? там свои замороки, поэтому все может понадобится, не хочется в поле все время лазить в ноут и корректировать I.
Я пока сам разбираюсь:
Значение I для автолевела хранится в переменной ILEVEL8,
щас придумаю как ее обработать.
Ну, хватит выводов, смотрите видос.
дааа, однако летает! прийдется не выкидывать а настраивать, я уже перестал верить что оно летает нормально.
а моторчики то детцл, а такие пропы таскают.
Олег, какой вес аппарата на видео летает? (с учетом батарейки.)
а моторчики то детцл, а такие пропы таскают.
Ничего себе децл )) эти моторы тягают до 1.2кг, DT700, весят 78гр.
У Олега аппарат может пару кило сахара через границу с молдавией таскать только так 😃
менялось значение I автолевела
www.arduino.cc/en/Reference/map
long custommap(long x, long in_min, long in_max, long out_min, long out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
соответственно например I = custommap (то_что_получаем_от_приемника, минимум_который_можем_получить_от_приемника, максимум_который_можно_получить_от_приемника, минимум_для_I, максимум_для_I);
и еще внутрь функции custommap можно запихнуть что-то вроде:
if ((nunchukPresent == 1 || accPresent == 1) && то_что_получаем_от_приемника>пороговое_значение) accMode = 1; else accMode = 0;
будет менять I на лету и включать стабилизацию
Глеб, это все не то,
Мне не автолевел нужно включать, а подмешивать значение крутилки AUX1 в значение переменной ILEVEL8, причем до того как ILEVEL8 уйдет в расчет **** PITCH & ROLL & YAW PID **** или еще куда, пока не разобрался
Ну ты подскажи все-таки как повесить I на крутилку, хотя бы мельком, если не ломает Ты езе в ветер не летал? там свои замороки, поэтому все может понадобится, не хочется в поле все время лазить в ноут и корректировать I.
Прошу не обижаться, но мне кажется что это из той же серии, что и “не было у бабки проблем, купила козу”. 😃
Может лучше приделать LCD, чтобы было легко настраивать, там ведь в новой версии 1.претер7 есть поддержка новых дешевых LCDшек.
не автолевел нужно включать
значит без этой строчки if ((nunchukPresent == 1 || accPresent == 1) && то_что_получаем_от_приемника>пороговое_значение) accMode = 1; else accMode = 0;
а подмешивать значение крутилки AUX1 в значение переменной ILEVEL8
ну примерно тоже самое, будет что-то вроде:
defILEVEL8=ILEVEL8; - где то переопределяем, чтобы всегда было
ILEVEL8 = custommap (rcData[AUX1], 1000, 2000, минимум_для_I, максимум_для_I) + defILEVEL8; до того как оно в расчет уйдет (и хз + или нет, смотря как надо подмешивать)
и еще надо поковырять writeParams() - чтобы в память записывать новый параметр, чтобы оно вернулось после ребута ардуинки
Завистники! )) Никаких LCD, еще я буду коптер нfстраивать аппой чеpеp LCD, вот делать мне нечего! )
и еще надо поковырять writeParams() - чтобы в память записывать новый параметр, чтобы оно вернулось после ребута ардуинки
Зачем вернулось, не надо, пусть зашито будет что зашили через комп, крутилку же я не кручу все время.
Попробуем…
ILEVEL8 это тысячные от 0 до 0.255
Процедурка от Глеба очень полезная в нашем случае.
Нижеуказанное вставить перед просчетом level PID после этого:
//**** PITCH & ROLL & YAW PID ****
#define i_zero 1300 // мин. уровень крутилки для I=0 (макс пусть будет 2000)
#define ilevel_max 56 // макс уровень level I
if (rcData[YAW]>=i_zero)
ILEVEL8=custommap(rc_data,i_zero,2000,0,ilevel_max);
else ILEVEL8=0;
Ну вот, обогнали… 😦
Ага, нафлудили вон скока пока я сексом занимался с нунчаком, пойду в разрез публике- Мулти вии с нунчаком-гуано и маст дай!!! но с гирой-ласковый и предсказуемый аппарат 😃
Вкратце-протрахался ВСЮ прошлую неделю! Дергается коптер как паралитик!!Причем настройкиPID особо не сильно влияли на эту колбасню! ЧТо я тока не делал, три бубна пробил до дыр,прошивал-перепрошивал всеми прошивками, расхерачил руку до крови, на обоях теперь следы от пропеллеров, на паркете следы от валов и цанг пропеллеров, в минусе куча времени, нервов и бабла потраченного на дополнительные мозги, регули и моторы(на которые я грешил по очереди) плюсе-ТРИ коптера собранные в процессе околонаучных экспериментов которые впрочем ни один нормально не полетели до тех пор пока я не отпаял и не выкинул нах нунчак этот гребаный!!! кароче похоже что с циклом больше 3000-4000 коптер нормально не летит а чтоб добиться такого цикла на безмозглой нано/мини ардуине нужен аксель отдельный но никак не нунчак, не оно конечно летит и висит но при подпаяном нунчаке все равно присутствуют мелкие непредсказуемые подергивания и рывки(даже с отключеной стабилизацией)
Теперь я понял почему Warthox летает только с гирами без нунчаков
if (rcData[YAW]>=i_zero) ILEVEL8=custommap(rc_data,i_zero,2000,0,ilevel_max); else ILEVEL8=0;
Олег, почему rcData[YAW]?
Вот кусок кода pretor:
//**** PITCH & ROLL & YAW PID ****
for(axis=0;axis<3;axis++) {
if (accMode == 1 && axis<2 ) { //LEVEL MODE
errorAngle = rcCommand[axis]/2 - angle[axis]/2;
PTerm = (errorAngle)*PLEVEL8/50 - gyroData[axis]*dynP8[axis]/10;errorAngleI[axis] += errorAngle;
errorAngleI[axis] = constrain(errorAngleI[axis],-5000,+5000); //WindUp
ITerm = errorAngleI[axis] *ILEVEL8/2000;
Нам же надо вмешаться в Iterm, нет?
ааа тьфу11111 перепутал с AUX1 (или 2)
Вмешиваться именно в ILEVEL8
код втыкать между //**** PITCH & ROLL & YAW PID ****
и for(axis=0;axis<3;axis++)
В Гуи поубирать галочки, чтобы выделенным каналом ничего другого не включалось.
Олег, ну ты крут 😃 Буду сегодня пробывать вечером!
А у меня и нет пока ничего другого, это Алил у нас закупился сенсорами по самые небалуйся 😃