MultiWii
без теории на практике
wbb.multiwii.com/viewtopic.php?f=6&t=27&start=20 тут есть такие
у вас кстать чака оригинал? у меня похоже оригинал и есть проблемы с подключением как standalone… + на 400кГц вообще не запускается…
перековырнул I2C multiwii API чеб заработал (спасибо ziss_dm)…
void i2c_ACC_init() {
TWBR = ((16000000L / 100000L) - 16) / 2;
i2c_rep_start(0xA4 + 0);//I2C write direction => 0
i2c_write(0xF0);
i2c_write(0x55);
i2c_rep_stop();
i2c_rep_start(0xA4 + 0);//I2C write direction => 0
i2c_write(0xFB);
i2c_write(0x00);
i2c_rep_stop();
delay(250);
accPresent = 1;
}
void i2c_ACC_getADC() {
TWBR = ((16000000L / 100000L) - 16) / 2;
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();
i2c_rep_stop();
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) );
i2c_rep_start(0xA4 + 0);//I2C write direction => 0
i2c_write(0x00);
i2c_rep_stop();
}
void i2c_rep_stop(void)
{
TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO);
waitTransmissionI2C();
}
у вас кстать чака оригинал?
А вот этого я не знаю,нуунчак подогнал Питер (fmkit),а он как многие знают спец в нуунчаках,по его словам аксел лучше чем у оррегинала,какой-то бошевский.
и есть проблемы с подключением как standalone
Так в конце получилось подключить?
Так в конце получилось подключить?
да (но без ВМ+) и даже на 380кГц… если выше то педалит…
и даже на 380кГц
А зачем вам 400кГц?Как я понял это только хуже.
А зачем вам 400кГц?Как я понял это только хуже.
чем выше частота, тем ниже время цикла… соот-но тем выше скорость реакции системы…
хотя если летать блинчиком, а не как warthox то думаю разницу будет трудно заметить 😃
I recommend 1k8 as this gives you the best performance
Забыл сказать, при относительно низком сопротивлении подтягивающих резисторов фронты сигнала получаются резкими и не размазываются. Это хорошо. Я ставлю 3.3кОм. При слишком большом сопротивлении, как я понимаю, переходные процессы “0”<—>“1” затягиваются, поэтому фронты получаются нечеткими, это может вызвать сбой.
Почему-то возрос cycle time с 3000 до 4000
Может бут разный.😃
а на морозе то как себя ведет?
Задался вопросом.
В чём разница между 8кГц и 16кГц ШИМами в безколлекторном контроллере?
Точнее что оно даёт перевод на 16кГц,и что ставить на квадрик?
Пока заметил на 16кГц,движки перестали шуметь,значит минус пару процентов вибрации,и это гут.
Говорят, что у бюджетных ESC
на 16кГц
может возникать срыв генерации. Но что-то не замечал.
а на морозе то как себя ведет?
Работает в любую погоду))
Еще назрел вопрос, как выглядит зависание по i2c шине?
И еще, если кто следит за веткой FFIMU датчиков на рцгрупс, они в каком то магазе продаваться будут или на форуме?
как выглядит зависание по i2c шине
если в полете - моторы колом и падает камнем
если в ГУИ - график перестает бежать, пока прогу не перезапустишь, также могут появляться дикие, в т.ч. отрицательные числа в cycle time
FFIMU чото тянут кота за яйца который месяц… не дождался, купил Allinone, уже подключил, все работает… Магнетометр осями попутан, а так вроде ничо.
Олег, ну как там вообще жизнь молодая? Забросил фильтр свой программировать?
если в ГУИ - график перестает бежать, пока прогу не перезапустишь
Я вот на ночь оставил гуи - оно повисло, но перезапуск проги не помогает. Поможет если только питание отключить и потом снова включить. При этом сколько уже аккумуляторов посадил - ни разу не замечал, что б что то повисло.
а что такое
Allinone
можно ссылку? )
чем выше частота, тем ниже время цикла…
Интересно, а на сколько?
Т.к. время в цикле - это время на внутренние преобразования в гиро(аксель)-сенсоре + время на обмен данными между Ардуиной и сенсором. Например, для ВМА150: “Acceleration data refresh rate (all axes) - f_rate - 2,7-3,3 кHz”.
А для гиры L3G4200D вообще: “Digital output data rate - 100/200/400/800 Hz”
( Насколько я понял, для ITG-3200: “The ADC output rate is programmable up to a maximum of 8,000 samples per second down to 3.9 samples per second”)
А т.к. начала измерений в сенсорах не синхронны, то, даже с учётом того, что данных - несколько десятков байт, при " i2c - 100kHz" передача данных закончится раньше, чем будут готовы все новые данные!
И много мы выиграем при переходе на 400kHz?
купил Allinone
может маленький, фото видео отчетик сварганиш?
п.с. Я тоже его заказал
Allinone - та самая платка со всеми датчиками … Так?
Видимо речь об этой плате cgi.ebay.com/…/260766408107
Она самая.
Плата версии 3.3В, питать можно хоть 3.3 хоть 5, не забыть отключить internal_pullups в ардуине. Никаких LLC не нужно - все это суходр*чка.
Чтоб заработала, никаких извратов не нужно: SCL-SCL, SDA-SDA, GND-GND, VDD-3.3(5)V,
Запретить internal_pullups, раскомментить ITG3200,BMA180,BMP085,HMC5883, поменять в процедуре, начинающейся на #ifdef BMA180 все числа 0х80 на 0х82 и все заработает автоматом.
Плату ставить деталями вверх, узкой стороной вперед, если смотреть сзади по движению, дырки под провода были слева.
Все.
Странно, что никто их них не сделал до сих пор платку с 2 датчиками: гира itg3200 и аксель bma180 аз полцены, разлетались бы как горячие пирожки…