MultiWii

Covax

Сегодня полетал по очкам на ff imu, круть. Но

  1. Если не аккуратно транспортировать коптер (нести вверх ногами) то слетает инициализация акселя, приходится инициализироваться в поле а там хрено с ровной поверхностью.
  2. Компас иоже за ночь с ума сошел, в поле без компа не знал как его переинициализировать поэтому летал без него…
    С новой дев прошивкой удержание высоты у меня не работает, так что переделываю коптер на мегапирата…
mahowik
Covax:

Если не аккуратно транспортировать коптер (нести вверх ногами) то слетает инициализация акселя

оч. странно… не должно быть такого по идее… может просто разница температуры дома и на улице была существенная, потому и поплыло все…

Covax

С bma020 такого не было чтобы я приехал в поле и не смог поднять коптер. Спустя месяц отпуска я поставил батарейку и полетел как ни в чем не бывало. А вчера поставил вместо wp+ и bma020 фф иму, залил дев, инициализировал все, полетал минут 20 и спать. Сегодня приехал на дачу, пошел в поле, там еще трава по пояс, не могу взлететь. Взял в руку - клонит кудато непонятно, инициализировал аксель, взлетел, но коптер крутит… Отключил компас и отлетал 2 пака по 15 минут без проблем. Сейчас приехал - опять аксель сбился… Компас вообще не трогаю. Может это глюки девпрошивки? А может и жара…

SergDoc

Доброго времени суток, пару детских вопросов,

  1. хотел поменять порты для RX

 #define THROTTLEPIN                3
  #define ROLLPIN                    2
  #define PITCHPIN                   A3
  #define YAWPIN                     4

так вот THROTTL и PITCH неработают, THROTTL - в центре и нереагирует, PITCH - в минимуме, так-же не реагирует если переназначаю порты работают но неработают два других.

  1. как работать с акселерометром

// standalone I2C NUNCHUK
// **************************
#if defined(NUNCHACK)
static uint8_t rawADC_NUN[6];

void i2c_ACC_init() {
  i2c_rep_start(0xA4 + 0);//I2C write direction => 0
  i2c_write(0xF0);
  i2c_write(0x55);
  i2c_rep_start(0xA4 + 0);//I2C write direction => 0
  i2c_write(0xFB);
  i2c_write(0x00);
  delay(250);
  accPresent = 1;
}

void i2c_ACC_getADC() {
  TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate. !! you must check if the nunchuk is ok with this freq
  i2c_rep_start(0xA4 + 0);//I2C write direction => 0
  i2c_write(0x00);
  i2c_rep_start(0xA4 + 1);//I2C read direction => 1
  for(uint8_t i = 0; i < 5; i++)        // интересует именно отсюда
    rawADC_NUN[i]=i2c_readAck();
  rawADC_NUN[5]= i2c_readNak();

  accADC[ROLL]  =   ( (rawADC_NUN[3]<<2)        + ((rawADC_NUN[5]>>4)&0x2) );
  accADC[PITCH] = - ( (rawADC_NUN[2]<<2)        + ((rawADC_NUN[5]>>3)&0x2) );
  accADC[YAW]   = - ( ((rawADC_NUN[4]&0xFE)<<2) + ((rawADC_NUN[5]>>5)&0x6) );
}
#endif

просто в своих извращениях я делал так

программируем аксель


byte status;
 status = B00000000;
  Wire.beginTransmission(i2cID);
 Wire.send(0x21); // CTRL_REG2 (21h)
 Wire.send(B01001111);
Wire.endTransmission();

 Wire.beginTransmission(i2cID);
 Wire.send(0x20); // CTRL_REG1 (20h)
 Wire.send(B11000111);
 Wire.endTransmission();

читаем данные


char accX;

Wire.requestFrom(i2cID, 1);
if(Wire.available())
 {
 accX= Wire.receive(); // ну естественно определённый бит

 }
  accXval = (accX-accZeroX)*(accZeroZ/9.8154);
  

а тут разобратся немогу что куда, зарание спасибо!

Piranha
ziss_dm:

Hi mahowik,

Вон оказываеться что 😃 все лучшие люди проекта НАШИ ЛЮДИ! 😃 ziss_dm- респект и уважуха:)

Prikupets

У меня начало вырисовываться что-то с MultiWii. Уже второй день летаю по очкам в обычном режиме и автолевеле. Но при полете и снижении все же трясет.
Раньше не летал из-за кривой цанги, которая давала вибрации. Но OpenPilot отлично летал с этой кривой цангой и не трясся. Значит дело в математике MultiWii или в сенсорах. Сенсоры у меня из WM и NK вырезанные, в связи с этим вопрос:

Известно, что у акселя и гиры можно задавать разные частоты квантования и/или среза НЧ фильтра. Вопрос в том - чем надо руководствоваться при их выборе, чтобы максимально не зависеть от вибраций?

Моя инициализация акселя:

void i2c_ACC_init () {
  delay(10);
  i2c_rep_start(0x3A+0);      // I2C write direction
  i2c_write(0x2D);            // register 2D Power CTRL
  i2c_write(1<<3);            // Set measure bit 3 on
  i2c_rep_start(0x3A+0);      // I2C write direction
  i2c_write(0x31);            // DATA_FORMAT register
  i2c_write(0x0B);            // Set bits 3(full range) and 1 0 on (+/- 16g-range)
  i2c_rep_start(0x3A+0);      // I2C write direction
  i2c_write(0x2C);            // BW_RATE
//i2c_write(8+2+1);           // 200Hz sampling (see table 5 of the spec); AP; by ziss_dm;
  i2c_write(8+2);             // 100Hz sampling (see table 5 of the spec)
  //i2c_write(8+1);             // 50Hz sampling (see table 5 of the spec)
  //i2c_write(8);               // 25Hz sampling (see table 5 of the spec)
  //i2c_write(4+2+1);           // 12.5Hz sampling (see table 5 of the spec)
  //i2c_write(4+2);             // 6.25Hz sampling (see table 5 of the spec)
  acc_1G = 250;
  acc_25deg = 106; // = acc_1G * sin(25 deg)
  accPresent = 1;
}

Моя инициализация гиры:

void i2c_Gyro_init() {
  delay(100);
  i2c_rep_start(0XD0+0);      // I2C write direction
  i2c_write(0x3E);            // Power Management register
  i2c_write(0x80);            //   reset device
  delay(5);                   // AP; by ziss_dm
  i2c_rep_start(0XD0+0);      // I2C write direction; AP; by ziss_dm
  i2c_write(0x16);            // register DLPF_CFG - low pass filter configuration & sample rate
//  i2c_write(0x1D);            //   10Hz Low Pass Filter Bandwidth - Internal Sample Rate 1kHz
//  i2c_write(0x19);            //   188Hz Low Pass Filter Bandwidth - Internal Sample Rate 1kHz
  i2c_write(0x18);            //   256Hz Low Pass Filter Bandwidth - Internal Sample Rate 8kHz
  i2c_rep_start(0XD0+0);      // I2C write direction; AP; by ziss_dm
  i2c_write(0x3E);            // Power Management register
  i2c_write(0x01);            //   PLL with X Gyro reference
  delay(100);
  gyroPresent = 1;
}

P.S. Кстати, Кук тоже от вибраций не трясется.

Covax
Prikupets:

Значит дело в математике MultiWii или в сенсорах.

У меня ff imu с самыми зачетными сенсорами, тоже треясется при снижении когда хочешь затормозить газом, правда ПИДы все стоковые, но явно в математике что-то не доделано… На неделе перехожу с этим же железом на Мегапирата, вот тогда и скажу где проблема более точно.

funtik26

думаю что вийная прошивка изначально тупиковая, да она летает, но блин чтобы она летала- это крындец, пока пиды настроишь.
если не дай бог упал и поломал винт, винт заменил- привет на настройка по новому.
та же злосчастная фишка- винты какие хочешь( главное соблюдать направление движения) моторы- из 4 два разных, два битых перебитых, все равно- горизонт держит, на ветру не трясет. настройка пидов как по книжке- что регулируещь, то на практике и получается.

Covax

Да не прдумывай, я вообще никогда с ПИДами не заморачивался, как летает мой аппарат на стоковых настройках и не только мой на вие ты видел на встрече 😃 но мультий однозначно нужно совершенствовать…

funtik26

сергей может ты изначально хороший набор купитл, может еще что то, но в моем понятии квадрик должен летать так как у меня на видео- куда ведешь ручку туда он и летит, отпустил ручку- квадрик встал, и это безо всяких шаманств по вечерам

delfin000
funtik26:

в моем понятии квадрик должен летать так как у меня на видео- куда ведешь ручку туда он и летит, отпустил ручку- квадрик встал, и это безо всяких шаманств по вечерам

Так только:

  1. в сказке бывает
    или
  2. в хорошонавороченных системах не за штуку зелени.
    Ну и как вариант, нужно стать профессионалом пилотом, тогда два первых пункта отпадут автоматически
Covax

Саш неужели фишка и есть тот квадрик, который отпустил стики он и встал? Я сомневаюсь что такое вообще возможно хотя бы по причине наличия во вселенной такой штуки как инерция)

funtik26

сергей к сожалению ты не прав, в фишке- есть такая фишка что если квадрик разогнать в стаб моде и отпустить ручку, квадрик парирует скорость креном, останавливается и зависает. так же в стаб моде на какой угол кренишь ручку на пульте- на такой же угол и квадрик наклоняется

Covax

ну если так, то супер! а можно видео?

mahowik
funtik26:

в фишке- есть такая фишка что если квадрик разогнать в стаб моде и отпустить ручку, квадрик парирует скорость креном, останавливается и зависает. так же в стаб моде на какой угол кренишь ручку на пульте- на такой же угол и квадрик наклоняется

простите за глупый вопрос, а что за проект “фишка” или готовый девайс такой?

Alex27111972
Covax:

ну если так, то супер!

не все так просто, вон люди в соседней ветке пишуть что и улететь она могет и “крышу” у фишки срывает… да и цена на нее довольно бодрая…

funtik26

Сергей к сожалению видео с разгоном и оттормаживанием фишки пока нет, на днях постараюсь заснять и выложить.

из старого, смотрть с 1.52, до этого времени как раз таки пытался раскачать фишку

Covax
funtik26:

Сергей к сожалению видео с разгоном и оттормаживанием фишки пока нет, на днях постараюсь заснять и выложить.

Ждем, реально очень интересно как он это делает.

Musgravehill
funtik26:

если квадрик разогнать в стаб моде и отпустить ручку, квадрик парирует скорость креном, останавливается и зависает

Парирует линейную скорость? Вроде Фишка только с акселерометрами и гироскопами, тогда скольжение не отследит. Единственное объяснение, что полет происходит под углом, а в момент отпускания стиков Фишка ставит коптер горизонтально, поэтому горизонтальная скорость гасится. Мультивий тоже в горизонт встает, но ветром его тащит легко. Скольжение можно побороть только благодаря GPS. Тогда коптер точно будет делать крены для зависания.