MultiWii

Олег24

Я подключил сонар и GPS через “I2C переходник” на Tiny 2313 работает… сонара в IMU так и нет…

kamigvik

Можно подробней о “I2C переходник” на Tiny 2313

Олег24
kamigvik:

Можно подробней о “I2C переходник” на Tiny 2313

www.multiwii.com/forum/viewtopic.php?f=8&t=1549&st… Там немного дальше схема. Делается платка с 2313 к ней сонар HC-SR04( Trig Eho ), GPS ( RX TX ) и OpticalFlow и вся эта плата подключается по I2C к вию. вчера сделал работает.

kamigvik
Олег24:

вчера сделал работает

С какой версией прошивки

Олег24
kamigvik:

С какой версией прошивки

с 2.1 сонар и GPS . лучше брать 4313

soliada

Здравстуйте.Есть вопрос касаемо режимов работы ЖПСа.В конфинге есть строчка в разделе ЖПС что то вроде ,не сбрасывания координат при арминге,Вроде в описании сказано что точка настраивается при калибровке гироскопа.
Собственно может кто настраивал и знает как правильно это сделать?
У меня что то так и не получилось.Может эта функция и не работает?

photocanon
lenz:

Если настраивать и калибровать мультивии на батарее 2S все вроде отлично можно даже летать. Но скажем так летает немного тяжеловато, для обучения по сути самое то. Скорость не большая, все по минимуму. Как только ставлю батарею 3S слетают напрочь настройки горизонта.

Был глюк с горизонтом, обязательно замерить напряжения на меге в точке референса и напряжении питания датчиков, если оно изменилось даже на 1% горизонт уйдет! Решение проблемы переработать всю цепь питания ардуины если плата покупная.

kedrikov

Всем привет
Пришел барометр MS5611 . Платка allinone на ней установлен баро BMP085 я его выпаял.На проволках подцепил новый баро по схеме .В скетче выставил следующее и залил

/*************************** independent sensors ********************************/
/* leave it commented if you already checked a specific board above */
/* I2C gyroscope */
//#define WMP
#define ITG3200
//#define L3G4200D
//#define MPU6050 //combo + ACC

/* I2C accelerometer */
//#define NUNCHUCK // if you want to use the nunckuk connected to a WMP
//#define MMA7455
//#define ADXL345
//#define BMA020
#define BMA180
//#define NUNCHACK // if you want to use the nunckuk as a standalone I2C ACC without WMP
//#define LIS3LV02
//#define LSM303DLx_ACC

/* I2C barometer */
//#define BMP085
#define MS561101BA

/* I2C magnetometer */
//#define HMC5843
#define HMC5883
//#define AK8975
//#define MAG3110

В гуи баро заработал но отпал аксел и посыпались ошибки по I2c
С контактом CSB игрался на массу и + не помогло

Даташиты BMP085 MS5611

soliada

Как вариант,что то отпаялось или наоборот спаялось не правильно во время выпайки баро.
Скорее всего акселерометр.
Если выпаивалось феном,то такое возможно,а если этот фен был строительный,то вероятней всего.

kedrikov

Да не с пайкой там все ок и фен специальный для этих дел.Проблема решина в def.h прописываем новый баро и его адрес в настройках Allione и пин CSB кидаем на +3.3

#if defined(ALLINONE)
#define ITG3200
#define BMA180
#define MS561101BA
#define HMC5883
#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = -X; accADC[PITCH] = -Y; accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = -Z;}
#define BMA180_ADDRESS 0x41
#define MS561101BA_ADDRESS 0x76

#endif

dROb

Товарищи, помогите пожалуйста вписать i2c акселерометр LIS302DLTR. Собсно добился правильной инициализации, сам датчик работает, но выдаёт данные в каких то странных размерностях (т.е. например отклоняю на угол 10градусов - а на экране квадрик вращается на весь оборот). Не понимаю логику этих двух команд (украдено у другого i2c датчика):

i2c_getSixRawADC(BMA180_ADDRESS,0x02);

ACC_ORIENTATION( ((rawADC[1]<<8) | rawADC[0])/16 ,
                   ((rawADC[3]<<8) | rawADC[2])/16 ,
                   ((rawADC[5]<<8) | rawADC[4])/16 );

вот данные из даташита по поводу чтения искомых данных:

Name       Type       Address    Comment
--          r            28             Not Used
OutX        r            29             output
--          r           2A             Not Used
OutY        r            2B             output
--          r           2C             Not Used
OutZ        r            2D             output

Также, подскажите, какой самый правильный способ отлаживать этот Мультивий? Например требуется получить через serial вывод сырых данных от датчика

mataor
dROb:

Не понимаю логику этих двух команд (украдено у другого i2c датчика):

тут все просто:
i2c_getSixRawADC получает 3 16-ти битных значения по и2с начиная с регистра 0х02 из устройства с адресом BMA180_ADDRESS
собственно тебе нужно создать свою процедурку, скопировать туда код из этой и переделать на свое (там не особо много нужно переделок)

вторая функция, а вернее макрос рассовывает полученные данные в массив данных акселя

а по отладке - чем не нравятся стандартных 4 дебага? разрешаеш DEBUG в конфиге и просто где нужно вывести данные помещаеш их в debug[0…3] соответственно

dROb
mataor:

тут все просто:
i2c_getSixRawADC получает 3 16-ти битных значения по и2с начиная с регистра 0х02 из устройства с адресом BMA180_ADDRESS
собственно тебе нужно создать свою процедурку, скопировать туда код из этой и переделать на свое (там не особо много нужно переделок)

вторая функция, а вернее макрос рассовывает полученные данные в массив данных акселя

Сергей, спасибо, в глобальном плане теперь в общем всё понятно! Процедурку свою тоже создал, осталось собсно поправить эти две строчки, и всё будет работат. Непонятно несколько мелочей:

  • В моей процедурке, слизанной с какого-то более похожего на мой датчик датчика, строка получения данных выглядит так - i2c_getSixRawADC(LIS302,0x28 +0x80); (причём худо бедно данные получаются, значит адрес тот) Так вот вопрос, как понимать такую адресацию как Адрес+0x80? Заметьте 0x28 - адрес первого значения из даташита/
  • Стыдобища конечно, но что даёт этот оператор rawADC[1]<< 8 😃 Помню что что-то с битами, какой то сдвиг чтоли. Не умножение ли на 2 в степени 8?
  • И наконец, зачем результат делить на 16 ((rawADC[1]<<8) | rawADC[0])/16)
  • правильно ли я понимаю что мой Макрос будет выглядеть примерно так, поскольку судя по даташиту - значения на выходе состоят всего из одного байта, а не из двух: ACC_ORIENTATION( rawADC[1],
    rawADC[3],
    rawADC[5]);
mataor:

а по отладке - чем не нравятся стандартных 4 дебага? разрешаеш DEBUG в конфиге и просто где нужно вывести данные помещаеш их в debug[0…3] соответственно

Не знал этого. Вернее включал дебаг, и думал что DEBUG0-3 это просто флаги 😃 Возможно это мне поможет…

P.S. Собсно буду благодарен, если кто вдруг поправит за меня эти две строчки 😃 Делов то! 😉

EduardNN

Заметил что в GUI не останавливается счетчик ошибок Ic2 (плата crius se), попробовал уменьшить скорость шины - ни чего не изменилось.
Обратил внимание что баро как-то стабильно чего то кажет ,пропаял результат 0, за комментировал его, ошибки по шине пропали - умер датчик ?
Что может быть причиной его кончины (пару не больших крешей напр)?

vikingua

Подскажите пожалуйста как правильно подключить bluetooth. У меня seeeduino mega. Как я понял подключать нужно к RX TX 0 (хотя пробовал разные -и от GPS и от PPM SUM и от LCD ). В настройках вия вроде тоже ничего не нужно настраивать. Пробовал и с андроидом и с компьютером - по сути соединяется с портом, но ничего не работает.
читал про замену библиотеки - но ведь для androidа это не актуально, куда копать ? что я пропустил ? сам модуль проверял - подключал через комп порт с одной стороны и блютус с другой -данные между ними ходят прекрасно(скорость 115200 на модуле предварительно настроил )

kedrikov
EduardNN:

Обратил внимание что баро как-то стабильно чего то кажет ,пропаял результат 0, за комментировал его, ошибки по шине пропали - умер датчик ?

Проблема наверно програмная а вот после того как пропаяли его работоспособность под вопросом.

vikingua:

с компьютером

У меня на стационаре не пашит видит, подключается но данные не бегут а вот на ноуте без проблем.Програма блюточ на компе какая?
Подключать нужно так

плата RX- блюточ TX . плата TX-блюточ RX

dROb

Ура, я его (LIS302DLTR) победил!
ACC_ORIENTATION( int8_t(rawADC[1]),
int8_t(rawADC[3]),
int8_t(rawADC[5]));
Пять часов было убито на то, чтобы понять, что мультивий не так воспринимает считанные данные (SIGNED BYTE Мультивий видит как UNSIGNED BYTE)

Если кому вдруг понадобится код для этого датчика - выложил в дневнике.

Подскажите, кто-нибудь использует EagleTree PowerPanel для настройки и показа параметров? Я попробовал - на экране тишина. Подключил правильно - по I2C устройство распознаётся.

vikingua

Ок, проверю и на ноуте, но ведь на телефоне тоже не работает… Подключал естественно TX-RX, хотя пробовал и наоборот 😃

EduardNN
kedrikov:

Проблема наверно програмная а вот после того как пропаяли его работоспособность под вопросом

Проблема аппаратная 100%. Софт заливал и 2.0 и 2.1.
Перекинул датчик с другой платы - все работает , ошибок по I2c нет.

AntonPO

Рас уж тут речь про ЖПС удержание, напишу и я свои симптомы. Коптер в режиме ЖПС холд висит хорошо, но, не во всех направлениях. Как только поверну нос в какое-то определенное направление, коптер начинает так сказать “унитазить”, летать по спирали, но нос остается в том же направлении. Думаетцо, помехи компасу. Но, пробовал отключать компас, калибровать, поднял плату, тоже самое.

mahowik

Ну значит с 1000-м юбилеем меня! 😃

Хотите поздравить?! Ложите спасибы! 😉