MultiWii
Во втором варианте на рисунке я вижу жёлтую жабу.
а в чем жаба? 😃 яж написал выше что вместо bma020 нужно подрубить нунчак… в итоге все провода в параллели: питание (от 3.3в ардуины), земля, SCL, SDA
Кто может объяснить по-русски что такое пулапы?
что такое пулапы
pullup -подтягивающий резистор. Чтобы шина SCL и SDA не “болталась в воздухе”, на нее через резистор подают напряжение питания, т.е. на шине всегда логическая “1” относительно земли. Во время передачи устройство периодически вешает шину на землю = 0, отпускает = 1.
Когда включаете устройства с подтягивающими резисторами в каждом, то общее сопротивление подтяжек сильно падает по известной формуле параллельного соединения резисторов. В итоге, есть риск тупо подать Uпитания на шину SCL SDA через “кусок провода”. Во время работы устройство притянет эту шину к земле = К.З.
Кто может объяснить по-русски что такое пулапы?
www.itt-ltd.com/reference/ref_i2c.html
www.robot-electronics.co.uk/…/I2C_Tutorial.html
For the line to be able to go high you must provide pull-up resistors to the 5v supply. There should be a resistor from the SCL line to the 5v line and another from the SDA line to the 5v line. You only need one set of pull-up resistors for the whole I2C bus, not for each device, as illustrated below:
The value of the resistors is not critical. I have seen anything from 1k8 (1800 ohms) to 47k (47000 ohms) used. 1k8, 4k7 and 10k are common values, but anything in this range should work OK. I recommend 1k8 as this gives you the best performance. If the resistors are missing, the SCL and SDA lines will always be low - nearly 0 volts - and the I2C bus will not work.
грубо говоря если девайс представить как ключ/переменный резистор, то для выставиления единицы на шину, он увеличивает свое внутр. сопротивление и соот-но в связке с подтягивающим резистором (pull-up resistor) получаем единицу на шине. Т.е. пуллап резистор в связке с внутр. сопротивлением девайса выступает в роли делителя напряжения…
Соот-но стоит девайсу открыть ключ (уменьшить сопротивление), на шине будет ноль…
ну а без пуллапов всегда будет ноль на шине, т.к. нечего делить…
Не рекомендую на истину, поправьте еси что то не так 😃
P.S. От жыж опередили 😃
а в чем жаба
Рисунка не видно.
Народ кто-то может сказать что у него нуунчак и tg3205 работают вместе,без теории на практике,думаю таких нет.
без теории на практике
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?