MultiWii
нормальные датчики и разобрались с вибрацией на своих коптерах
согласен, сколько не игрался с этимим PIDами, толку никакого не было, пока не загрубил гиру, не отбаланисровал моторы и не поставил все мозги на 2 вспененые фигни - даже подлететь было сложновато… сейчас в ожидании нормальной гиры с акселем, как не крути, а сильное загрубление ни к чему хорошему не приводит (единственно не пойму, почему же раньше это работало, а потом перестало… ну да фиг с ним), хоть и стало взлетать адекватнее
кстаии всю эту балансировку удобно проводить именно по показаниям в GUI, а не по субъективным ощущением… еще в код можно добавить строчки типа Serial.println(данные с гиры), чтобы поточнее понять что ды как (смотреть в консоле Arduino IDE)
Коптер опракидывается, не равномерный газ на моторах 😦 Что крутить? Пид как настраивать, что за что отвечает?
I выставлять в НОЛЬ и калибровать датчики (если в GUI неверно чего нить показывает), пару сообщений выше было
UPD: по поводу этого I, в буржуйском форуме ответили что это нормально что моторы уплывают, если летит, то всё ок будет:
everything okay.
Thats because of small errors, which are integrated more and more, because your copter does not move.
I=0 = no error up integration.In the air, you won’t have a problem with that.
ну и 2 ссылочки на видео при I=0,015 и при I=0 - при стоянии коптера на одном месте
Покрутил пид вроде стало лучше 😃 У меня почему то цифры были не реальные 😃 Р по 60 стоял и I по 0.5, теперь вроде стало лучше, но пока не взлетел но и не завалился, на улице буду пробовать 😃 А возможно подключить акселерометр mma7455?
вот так плата получилась:
avrdevices.ru/akselerometr_mma7455l/
Он же тоже по i2c, вместо нунчака бы его 😃 Вроде сама плата работает, циферки меняются 😃
А возможно подключить акселерометр mma7455?
дописать код, можно из AeroQuad выковырять (или из даташита), там вроде бы такой используется (могу ошибаться, но чето mma точно было)
Я простенький скетч сделал с выводом координат через ком порт, а как к мультивии пределать не знаю, с кодом ещё не разобрался, много букв в нём 😁
там только кажется по началу что много, но в целом всё четко и ясно, можно для себя просто взнять код какого то i2c датчика и поменять под свой датчик, т.е. например внтури #if defined(ADXL345)…#endif поменять значения/делители/параметры под свой датчик и раскоментить работу с этим датчиком… или по аналогии описать своё, там всеравно всегда 2 функции есть i2c_ACC_init для инициализации и i2c_ACC_getADC для получения сами данных
заодно можно сообществу помочь, приделав еще один датчик =)
Спасибо за наводку 😃 Завтра попробую, сейчас иду спать
Надо учесть что люди тут летают вполне задорно и на дефолтных настройках PID, до этого они применили нормальные датчики и разобрались с вибрацией на своих коптерах…
А нормальные датчики это какие? Ибо сейчас я доделываю платочку акселя
на чипе ADXL345 как вот тут, и всерьез задумываюсь над тем что бы напрямую подпаятся
к itg3005 на плате WMP+, или не мучить WMP и купить нормальный гирик, но опять же какой?
P.S. Кому интересно могу позже выложить платку для ADXL345 с фото и комментариями
При испытании мультивия на летающем крыле возникла еще одна проблема. При управлении элевонами с пульта по тангажу сервы не возвращаются в неитральное состояние. Т.е. при подключении через мультивий при отклонении рулей вниз и возвращении обратно серва не доходит до первоначального состояния. При подключении напрямую к приемнику все нормально. Пробовал несколько серв. Результат тот же. Где копать?
Где взять подшипники на дт750, разобрал глянул, а они щёлкают?) оказалось, что дело не в электронике, а в моторе, он тяжело крутится и при том же газе что и другие, крутится намного медленнее 😦
Такая же проблема. Уберите одну шайбочку с вала под стопорным кольцом. И вытяните вал ссилой вверх. Должно помочь. Зажимает обычно верхний подшипник
У меня тоже щелкают, летаю же 😃 Крутится должны они легко (когда обесточены), значит сильно винт затянул, а винт надо не сильно крепить и страховать стяжками.
Такая же проблема. Уберите одну шайбочку с вала под стопорным кольцом. И вытяните вал ссилой вверх. Должно помочь. Зажимает обычно верхний подшипник
Поснимал колечки уже давно, но щас снова винт затянул сильно и опять зажало, теперь видимо пытаться нада обратно купол приподнять
У меня тоже щелкают, летаю же 😃 Крутится должны они легко (когда обесточены), значит сильно винт затянул, а винт надо не сильно крепить и страховать стяжками.
Что за стяжки?
У меня тоже щелкают, летаю же
и у меня счелкают, тока моторы турниги 1050кв. тут не в моторах гимор видать.
Собрал мультикоптер:
20-22L, Mystery 20A, seeduinomega, WII, BMA020
винты пока с хобикинга 9*5
прошивка V1.7, все по дефолту, только железки, мин обороты и т.д. корректировал
- На графике в начале двигатели включены, потом отключил, это нормальный уровень вибраций или стоит с этим еще работать ?
- пока не взлетал, это нормально что при минимальных оборотах моторы иногда покашливают ? (рывком больше оборотов)
- в конфиге должно быть видно если крутить коптер вокруг оси ? наклоны показывает…
- имхо жесть
- это всё от первого
- должно показывать наклоны, но не крутиться
Масштаб графиков - 2 - т.е. по дефолту оно меньше в два раза показывает, но все-равно много как я понимаю ?
не заметил… тогда может и нормально =) у меня похуже было при scale 1 - колбасило коптер неплохо
имхо надо попробовать подлететь немного - там уж точно видно будет
Что за стяжки?
самые натуральные кабельные
#if defined(MMA7455)
static int8_t rawADC_MMA7455[6];
void i2c_ACC_init () {
delay(10);
i2c_rep_start(0x3A); // I2C write direction
i2c_write(0x16); // Mode Control
i2c_write(0x25); // Set Sensitity Value @ 2g
//i2c_write(0x21); // Set Sensitity Value @ 8g
acc_1G = 64;
acc_25deg = 27; // = acc_1G * sin(25 deg)
accPresent = 1;
}
void i2c_ACC_getADC () {
//TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz, ADXL435 is ok with this speed
//i2c_rep_start(0x3A);
//i2c_write(0x09);
//i2c_rep_start(0x3B);
i2c_rep_start(0x3A); // I2C write direction
i2c_write(0x00); //Registry to start reading from.
i2c_rep_start(0x3B); // I2C read direction => 1
for(uint8_t i = 0; i < 5; i++) {
rawADC_MMA7455[i]= i2c_readAck();}
rawADC_MMA7455[5]= i2c_readNak();
accADC[ROLL] = ((char(rawADC_MMA7455[1])<<8) | (rawADC_MMA7455[0]>>1)<<1);
accADC[PITCH]= ((char(rawADC_MMA7455[3]<<8)) | (rawADC_MMA7455[2]>>1)<<1);
accADC[YAW] = ((char(rawADC_MMA7455[5]<<8)) | (rawADC_MMA7455[4]>>1)<<1);
}
#endif
Вот мма7455 😃 Ещё не проверял 😃 Дома проверю, должно работать 😃
Скажите куда мне его только цеплять? к WMP или на разъём i2c?