MultiWii
менялось значение 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++)
В Гуи поубирать галочки, чтобы выделенным каналом ничего другого не включалось.
Олег, ну ты крут 😃 Буду сегодня пробывать вечером!
А у меня и нет пока ничего другого, это Алил у нас закупился сенсорами по самые небалуйся 😃
это Алил у нас закупился сенсорами по самые небалуйся
У меня только 1 плата с сенсорами ❗ 😆
(3 заказанных мною акселя от Норберта еще не дошли)
У меня уже был опыт получения безтрековой посылки через 3 месяца, т.что еще жду (то же самое относится к Вийю от дилэкстрим)
А с 3205 кто либо нормально полетел ?
Пара есть - а делать плату под них или нет - решаю .
А кто как крепит между собой нунчак и моушен плюс? вопрос к тем у кого дергается.
Сегодня наконец-то заберу регуль и запущу своего малыша))))
У мну связка нунчак+MP на прошлом коптере нормально работала… Если и эта будет работать, то буду думать что мне помогают сторонние силы))))))
А кто как крепит между собой нунчак и моушен плюс?
Я их спаял один над другим и склеил термоклеем
Если и эта будет работать, то буду думать что мне помогают сторонние силы)))))
Я вот вчера уже начал думать что мне мешаю потусторонние как раз 😃
Димка не сцать, нормально с нунчаком летать должно, позвонил бы, решили что там у тя не летает.
вопрос к остальным- все что то улучшают прошивки улучшают, а никто не выкладывает промежуточные готовые результаты
Вот решился написать. Прочитал всю тему начиная с трикоптера. Все собрал, настроил. Но мне кажется можно выжать большего. Обратите внимание на видео, небольшая болтанка, может я где-то проглядел, это излечимо?
И вот ещё! В ходе настройки и прыганья приложил аппарат об пол, немного выгнул держатель мотора или как его назвать. Решил попробовать установить все двигатели таким образом. Каракатица стала на порядок устойчивей!
Вот такую “Маму” развел себе, кому надо пользуйтесь.
Размеры 59х59мм
В архиве небольшой ридмик.
Сделана под Arduino Nano V3.0 + Wii + BMA-020, в принципе ставить можно что угодно, i2C пины есть, остальное дело фантазии.
Пойду “фаршировать” 😇
А с 3205 кто либо нормально полетел ?
Я полетел на 3205 синей плате с дилэкстрима… Правда пока настраивал переломал все пропы, так что теперь курю до новой поставки 😉
все что то улучшают прошивки улучшают
я свое выкладывал…
а никто не выкладывает промежуточные готовые результаты
Воть именно. “Оффициальную” все ждут, а вот что-б выложить свои наработки, которые, потом входят в оффициальную… нетю.
Syberian, Вы, ТАМ, типа, друх.
Олег, код не рабочий,
ILEVEL8 восмиричное, на custommap ругается что не определена, сегодня прям с ног валюсь, завтра буду разбираться…
Парни, не стыдно вам? все улучшения в ветке проскакивают, никто ничего не скрывает.