MultiWii

g1obus

Добрый день! С DX Мне тоже пришла синяя платка WMP, подключил, но она так и не заработала. Я выпаял гироскоп и припаял на плату собственного изготовления с мегой и акселем (adxl 345), все сразу заработало. Цикл 2300. Коптер летает, только его тянет вперед, может кто подскажет как сделать чтоб его не тянуло в сторону а удерживало на месте?

mahowik
skyrider:

цифры ACC ROLL и ACC PITCH подпрыгивают самопроизвольно

пробовать нужно начиная с конфигурации 3.3в (тут писали что не все WM+ имеют LLC), ардуино пуллапс выкл., частота 100кгц

Потому

  1. попробуйте частоту 100кгц если сейчас 400кгц
  2. также вероятно сумарные пуллапы (от WMP на 3205 и ориг. нунчак) “подтягивают” логическую единицу в граничное состояние (т.е. не единица ни ноль)… соот-но можно попробовать отрубить пуллапы на WM+ 3205
  3. ну а лучше всего сделать 3200 из 3205
g1obus:

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

  1. калибровка rcopen.com/forum/f123/topic221574/1133
  2. софт трим rcopen.com/forum/f123/topic221574/1368

www.multiwiicopter.com/pages/multiwiicopter-wiki
www.multiwii.com/?page_id=100#How_to_trim_your_Cop…

skyrider
mahowik:

попробовать отрубить пуллапы на WM+ 3205

непосредственно на плате?

mahowik
skyrider:

непосредственно на плате?

ну по идее так… wbb.multiwii.com/viewtopic.php?f=6&t=27&sid=773788…

My advice is to check everything about supply and I2C pullups - all my troubles were related to this. All Wii components seems to work best at about 3.3V and with ONLY ONE pair of pullups between 1K8 and 10K connected to +3.3V.
Later edit: I really tested that with two pairs of 1k8 pullups on the I2C it’s not working, just when I removed one pair it started to work, so double check whether you really removed/disabled all unnecessary pullups!

но это уж последнее дело… уж если пилить плату то сразу в 3200

vtumane

Гироскоп L3G4200D при запуске не всегда калибруется в 0 (значения до 5)
Решение
заменить
void i2c_Gyro_init() {
delay(100);
i2c_rep_start(0XD2+0); // CTRL_REG1
i2c_write(0x20); // 400Hz ODR, 20hz filter, run!
i2c_write(0x8F);
i2c_rep_start(0XD2+0); // CTRL_REG5
i2c_write(0x24); // low pass filter enable
i2c_write(0x02);
gyroPresent = 1;
}
на
void i2c_Gyro_init() {
i2c_rep_start(0XD2+0); // CTRL_REG1
i2c_write(0x20); // 400Hz ODR, 20hz filter, run!
i2c_write(0x8F);
i2c_rep_start(0XD2+0); // CTRL_REG5
i2c_write(0x24); // low pass filter enable
i2c_write(0x02);
delay(300);
gyroPresent = 1;
}

killmouse

Блин, не забывайте про технику безопасности.
Сегодня взялся за новый квадрик, обретя уверенность, потерял бдительность.
В итоге 2 пальца без обшивки 😦
Оттриммировал…

HATUUL

Вчера тоже,решил заменить передатчики,оказалось у спектрумa dx6i и lp5dsm каналы расположены по разному,когда ловил квадрик,мезинец и безимяный нашелковал мелко проп остановился в 3мм от вены,в итоге -1 проп вся рука в йоде.

HATUUL

Смог подружить гироскоп itg3205 с нуунчаком.😈
Может есть другой способ,Но я сделал так.😉
Начну пошагово.-
1.Подключил ВМП (с tg3205) к ардуинке.
Как на рисунке у Алекса.

2.Далее подключил ВМП к нуунчаку.

3.После этого обрезал гироскоп,как на рисунке ниже.Не отрывая провода ВМП и чаки.

И подключаю к а4 ,и к а5,не разъединяя провода ранее припаеные к МВП.
4.В программе выделяю следующие строки.

#define ITG3200

#define NUNCHACK // if you want to use the nunckuk as a standalone I2C ACC without WMP

И о чудо,гирик и чака заработали.
То есть я запаралелил гируtg3205, с обрезаным ВМП,а через ВМП поключил нуунчак,цыкл 2450-2800

tarik
HATUUL:

И о чудо,гирик и чака заработали. То есть я запаралелил гируtg3205, с обрезаным ВМП,а через ВМП поключил нуунчак,цыкл 2450-2800

можно просто подключить и гиру и нунчак по отдельности…

mahowik
HATUUL:

То есть я запаралелил гируtg3205, с обрезаным ВМП,а через ВМП поключил нуунчак,цыкл 2450-2800

это у вас получился некий крэйзи микс… гира3205 + пуллапы гиры, ВМП с обрезанным гирой + пуллапы микроконтроллера (если не ошибаюсь), нунчак + егоже пуллапы…

таким образом у вас не понятно что с питанием… микс 5в и 3.3в, а про пуллапы вообще молчу 😃

Вот нормальные варианты подключения:
wbb.multiwii.com/viewtopic.php?f=6&t=27&sid=212d42… - при питании от 5в
rcopen.com/forum/f123/topic221574/1233 - при питании от 3.3в (вместо BMA020 нунчак)

HATUUL
tarik:

можно просто подключить и гиру и нунчак по отдельности

mahowik:

Вот нормальные варианты подключения:


Так?
Т.е.запараллелить,вы думаете я не прообовал?У меня почемуто не вышло.Чаку вообще не видит.
А у вас вышло?Как?

mahowik
HATUUL:

А у вас вышло?Как?

я к сожалению могу только рассуждать пока… ВМ+ еще не приехал…
если первый вариант не прокатывает, попробюуйте второй rcopen.com/forum/f123/topic221574/1233
т.е. питание ВМ+ и чаки от 3.3в

HATUUL
mahowik:

это у вас получился некий крэйзи микс… гира3205

Сам так думал,но маленькая мыслёнка пролетала,а вдруг получится,когда полностью отчаялся на последок попробовал так.

mahowik:

, попробюуйте второй MultiWii т.е. питание ВМ+ и чаки от 3.3в

Во втором варианте на рисунке я вижу жёлтую жабу.

mahowik
HATUUL:

Во втором варианте на рисунке я вижу жёлтую жабу.

а в чем жаба? 😃 яж написал выше что вместо bma020 нужно подрубить нунчак… в итоге все провода в параллели: питание (от 3.3в ардуины), земля, SCL, SDA

Wishnu

Кто может объяснить по-русски что такое пулапы?

Musgravehill
Wishnu:

что такое пулапы

pullup -подтягивающий резистор. Чтобы шина SCL и SDA не “болталась в воздухе”, на нее через резистор подают напряжение питания, т.е. на шине всегда логическая “1” относительно земли. Во время передачи устройство периодически вешает шину на землю = 0, отпускает = 1.

Когда включаете устройства с подтягивающими резисторами в каждом, то общее сопротивление подтяжек сильно падает по известной формуле параллельного соединения резисторов. В итоге, есть риск тупо подать Uпитания на шину SCL SDA через “кусок провода”. Во время работы устройство притянет эту шину к земле = К.З.

mahowik
Wishnu:

Кто может объяснить по-русски что такое пулапы?

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. От жыж опередили 😃

HATUUL
mahowik:

а в чем жаба

Рисунка не видно.

Народ кто-то может сказать что у него нуунчак и tg3205 работают вместе,без теории на практике,думаю таких нет.

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

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