MultiWii

mahowik
HATUUL:

без теории на практике

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();
}
HATUUL
mahowik:

у вас кстать чака оригинал?

А вот этого я не знаю,нуунчак подогнал Питер (fmkit),а он как многие знают спец в нуунчаках,по его словам аксел лучше чем у оррегинала,какой-то бошевский.

mahowik:

и есть проблемы с подключением как standalone

Так в конце получилось подключить?

mahowik
HATUUL:

Так в конце получилось подключить?

да (но без ВМ+) и даже на 380кГц… если выше то педалит…

HATUUL
mahowik:

и даже на 380кГц

А зачем вам 400кГц?Как я понял это только хуже.

mahowik
HATUUL:

А зачем вам 400кГц?Как я понял это только хуже.

чем выше частота, тем ниже время цикла… соот-но тем выше скорость реакции системы…
хотя если летать блинчиком, а не как warthox то думаю разницу будет трудно заметить 😃

Musgravehill
mahowik:

I recommend 1k8 as this gives you the best performance

Забыл сказать, при относительно низком сопротивлении подтягивающих резисторов фронты сигнала получаются резкими и не размазываются. Это хорошо. Я ставлю 3.3кОм. При слишком большом сопротивлении, как я понимаю, переходные процессы “0”<—>“1” затягиваются, поэтому фронты получаются нечеткими, это может вызвать сбой.

Wishnu

Сидуину воскресить не удалось. Пересобрал всё на кардуине, завтра буду плату резать по размеру.
Почему-то возрос cycle time с 3000 до 4000 😦 В коде ничего не менял, подключение такое же.

HATUUL
Wishnu:

Почему-то возрос cycle time с 3000 до 4000

Может бут разный.😃

HATUUL

Задался вопросом.
В чём разница между 8кГц и 16кГц ШИМами в безколлекторном контроллере?
Точнее что оно даёт перевод на 16кГц,и что ставить на квадрик?
Пока заметил на 16кГц,движки перестали шуметь,значит минус пару процентов вибрации,и это гут.

Musgravehill

Говорят, что у бюджетных ESC

HATUUL:

на 16кГц

может возникать срыв генерации. Но что-то не замечал.

Wishnu
SovGVD:

а на морозе то как себя ведет?

Работает в любую погоду))
Еще назрел вопрос, как выглядит зависание по i2c шине?
И еще, если кто следит за веткой FFIMU датчиков на рцгрупс, они в каком то магазе продаваться будут или на форуме?

Syberian
Wishnu:

как выглядит зависание по i2c шине

если в полете - моторы колом и падает камнем
если в ГУИ - график перестает бежать, пока прогу не перезапустишь, также могут появляться дикие, в т.ч. отрицательные числа в cycle time

FFIMU чото тянут кота за яйца который месяц… не дождался, купил Allinone, уже подключил, все работает… Магнетометр осями попутан, а так вроде ничо.

Covax

Олег, ну как там вообще жизнь молодая? Забросил фильтр свой программировать?

Wishnu
Syberian:

если в ГУИ - график перестает бежать, пока прогу не перезапустишь

Я вот на ночь оставил гуи - оно повисло, но перезапуск проги не помогает. Поможет если только питание отключить и потом снова включить. При этом сколько уже аккумуляторов посадил - ни разу не замечал, что б что то повисло.

а что такое

Syberian:

Allinone

можно ссылку? )

MikeMDR
mahowik:

чем выше частота, тем ниже время цикла…

Интересно, а на сколько?
Т.к. время в цикле - это время на внутренние преобразования в гиро(аксель)-сенсоре + время на обмен данными между Ардуиной и сенсором. Например, для ВМА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?

Саша_пилот
Syberian:

купил Allinone

может маленький, фото видео отчетик сварганиш?

п.с. Я тоже его заказал

Texnik

Allinone - та самая платка со всеми датчиками … Так?

Syberian

Она самая.
Плата версии 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 и все заработает автоматом.
Плату ставить деталями вверх, узкой стороной вперед, если смотреть сзади по движению, дырки под провода были слева.
Все.

Covax

Странно, что никто их них не сделал до сих пор платку с 2 датчиками: гира itg3200 и аксель bma180 аз полцены, разлетались бы как горячие пирожки…