MultiWii
Если не аккуратно транспортировать коптер (нести вверх ногами) то слетает инициализация акселя
оч. странно… не должно быть такого по идее… может просто разница температуры дома и на улице была существенная, потому и поплыло все…
С bma020 такого не было чтобы я приехал в поле и не смог поднять коптер. Спустя месяц отпуска я поставил батарейку и полетел как ни в чем не бывало. А вчера поставил вместо wp+ и bma020 фф иму, залил дев, инициализировал все, полетал минут 20 и спать. Сегодня приехал на дачу, пошел в поле, там еще трава по пояс, не могу взлететь. Взял в руку - клонит кудато непонятно, инициализировал аксель, взлетел, но коптер крутит… Отключил компас и отлетал 2 пака по 15 минут без проблем. Сейчас приехал - опять аксель сбился… Компас вообще не трогаю. Может это глюки девпрошивки? А может и жара…
Доброго времени суток, пару детских вопросов,
- хотел поменять порты для RX
#define THROTTLEPIN 3
#define ROLLPIN 2
#define PITCHPIN A3
#define YAWPIN 4
так вот THROTTL и PITCH неработают, THROTTL - в центре и нереагирует, PITCH - в минимуме, так-же не реагирует если переназначаю порты работают но неработают два других.
- как работать с акселерометром
// 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);
а тут разобратся немогу что куда, зарание спасибо!
Hi mahowik,
Вон оказываеться что 😃 все лучшие люди проекта НАШИ ЛЮДИ! 😃 ziss_dm- респект и уважуха:)
У меня начало вырисовываться что-то с 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. Кстати, Кук тоже от вибраций не трясется.
Значит дело в математике MultiWii или в сенсорах.
У меня ff imu с самыми зачетными сенсорами, тоже треясется при снижении когда хочешь затормозить газом, правда ПИДы все стоковые, но явно в математике что-то не доделано… На неделе перехожу с этим же железом на Мегапирата, вот тогда и скажу где проблема более точно.
P.S. Кстати, Кук тоже от вибраций не трясется.
Я цеплял куковские гиры к вию rcopen.com/forum/f134/topic224458/163 вроде ничё
думаю что вийная прошивка изначально тупиковая, да она летает, но блин чтобы она летала- это крындец, пока пиды настроишь.
если не дай бог упал и поломал винт, винт заменил- привет на настройка по новому.
та же злосчастная фишка- винты какие хочешь( главное соблюдать направление движения) моторы- из 4 два разных, два битых перебитых, все равно- горизонт держит, на ветру не трясет. настройка пидов как по книжке- что регулируещь, то на практике и получается.
Да не прдумывай, я вообще никогда с ПИДами не заморачивался, как летает мой аппарат на стоковых настройках и не только мой на вие ты видел на встрече 😃 но мультий однозначно нужно совершенствовать…
сергей может ты изначально хороший набор купитл, может еще что то, но в моем понятии квадрик должен летать так как у меня на видео- куда ведешь ручку туда он и летит, отпустил ручку- квадрик встал, и это безо всяких шаманств по вечерам
в моем понятии квадрик должен летать так как у меня на видео- куда ведешь ручку туда он и летит, отпустил ручку- квадрик встал, и это безо всяких шаманств по вечерам
Так только:
- в сказке бывает
или - в хорошонавороченных системах не за штуку зелени.
Ну и как вариант, нужно стать профессионалом пилотом, тогда два первых пункта отпадут автоматически
Саш неужели фишка и есть тот квадрик, который отпустил стики он и встал? Я сомневаюсь что такое вообще возможно хотя бы по причине наличия во вселенной такой штуки как инерция)
сергей к сожалению ты не прав, в фишке- есть такая фишка что если квадрик разогнать в стаб моде и отпустить ручку, квадрик парирует скорость креном, останавливается и зависает. так же в стаб моде на какой угол кренишь ручку на пульте- на такой же угол и квадрик наклоняется
ну если так, то супер! а можно видео?
в фишке- есть такая фишка что если квадрик разогнать в стаб моде и отпустить ручку, квадрик парирует скорость креном, останавливается и зависает. так же в стаб моде на какой угол кренишь ручку на пульте- на такой же угол и квадрик наклоняется
простите за глупый вопрос, а что за проект “фишка” или готовый девайс такой?
fy90q контроллер от фокстеч
ну если так, то супер!
не все так просто, вон люди в соседней ветке пишуть что и улететь она могет и “крышу” у фишки срывает… да и цена на нее довольно бодрая…
Сергей к сожалению видео с разгоном и оттормаживанием фишки пока нет, на днях постараюсь заснять и выложить.
из старого, смотрть с 1.52, до этого времени как раз таки пытался раскачать фишку
Сергей к сожалению видео с разгоном и оттормаживанием фишки пока нет, на днях постараюсь заснять и выложить.
Ждем, реально очень интересно как он это делает.
если квадрик разогнать в стаб моде и отпустить ручку, квадрик парирует скорость креном, останавливается и зависает
Парирует линейную скорость? Вроде Фишка только с акселерометрами и гироскопами, тогда скольжение не отследит. Единственное объяснение, что полет происходит под углом, а в момент отпускания стиков Фишка ставит коптер горизонтально, поэтому горизонтальная скорость гасится. Мультивий тоже в горизонт встает, но ветром его тащит легко. Скольжение можно побороть только благодаря GPS. Тогда коптер точно будет делать крены для зависания.
Да я вот тоже не пойму, как фишка отслеживает свои смешения, если она летит с постоянной скоростью. Если она реагирует на угол отклонения стика с учетом текущего положения троттла, а не по гирам и акселю, то интересно посмотреть насколько точно она останавливает квадрик… GPS оч. грубый прибор, врятли по нему можно что-то точно остановить