MultiWii
надо покупать оригинальный нунчак или искать ВМА020, у Джусси заказать не успел.
Купил оригинальный нунчак, прикрутил к WMP на 3205, включил GUI - кошмар , каждые секунд 5-7 цифры ACC ROLL и ACC PITCH подпрыгивают самопроизвольно до 30 - 40 , пробовал питать от D12 , 5V, 3.3V , включал /выключал PULL-UPS - результат ноль.
Убрал WMP на 3205 , подключил оригинальный WMP - графики ACC стали как вкопанные.
Что это, что то вроде несовместимости железа?
Добрый день! С DX Мне тоже пришла синяя платка WMP, подключил, но она так и не заработала. Я выпаял гироскоп и припаял на плату собственного изготовления с мегой и акселем (adxl 345), все сразу заработало. Цикл 2300. Коптер летает, только его тянет вперед, может кто подскажет как сделать чтоб его не тянуло в сторону а удерживало на месте?
цифры ACC ROLL и ACC PITCH подпрыгивают самопроизвольно
пробовать нужно начиная с конфигурации 3.3в (тут писали что не все WM+ имеют LLC), ардуино пуллапс выкл., частота 100кгц
Потому
- попробуйте частоту 100кгц если сейчас 400кгц
- также вероятно сумарные пуллапы (от WMP на 3205 и ориг. нунчак) “подтягивают” логическую единицу в граничное состояние (т.е. не единица ни ноль)… соот-но можно попробовать отрубить пуллапы на WM+ 3205
- ну а лучше всего сделать 3200 из 3205
может кто подскажет как сделать чтоб его не тянуло в сторону а удерживало на месте?
- калибровка rcopen.com/forum/f123/topic221574/1133
- софт трим rcopen.com/forum/f123/topic221574/1368
www.multiwiicopter.com/pages/multiwiicopter-wiki
www.multiwii.com/?page_id=100#How_to_trim_your_Cop…
Может быть правда.
dealextreme.com/…/Forum.32506~threadid.838801
попробовать отрубить пуллапы на WM+ 3205
непосредственно на плате?
непосредственно на плате?
ну по идее так… 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
Гироскоп 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;
}
Блин, не забывайте про технику безопасности.
Сегодня взялся за новый квадрик, обретя уверенность, потерял бдительность.
В итоге 2 пальца без обшивки 😦
Оттриммировал…
Вчера тоже,решил заменить передатчики,оказалось у спектрумa dx6i и lp5dsm каналы расположены по разному,когда ловил квадрик,мезинец и безимяный нашелковал мелко проп остановился в 3мм от вены,в итоге -1 проп вся рука в йоде.
Смог подружить гироскоп 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
И о чудо,гирик и чака заработали. То есть я запаралелил гируtg3205, с обрезаным ВМП,а через ВМП поключил нуунчак,цыкл 2450-2800
можно просто подключить и гиру и нунчак по отдельности…
То есть я запаралелил гиру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 нунчак)
А у вас вышло?Как?
я к сожалению могу только рассуждать пока… ВМ+ еще не приехал…
если первый вариант не прокатывает, попробюуйте второй rcopen.com/forum/f123/topic221574/1233
т.е. питание ВМ+ и чаки от 3.3в
это у вас получился некий крэйзи микс… гира3205
Сам так думал,но маленькая мыслёнка пролетала,а вдруг получится,когда полностью отчаялся на последок попробовал так.
, попробюуйте второй MultiWii т.е. питание ВМ+ и чаки от 3.3в
Во втором варианте на рисунке я вижу жёлтую жабу.
Во втором варианте на рисунке я вижу жёлтую жабу.
а в чем жаба? 😃 яж написал выше что вместо 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();
}