MultiWii

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-м юбилеем меня! 😃

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

AntonPO

Вобщем, после серии экспериментов удалось выяснить, что жуткие помехи на ЖПС да и наверно на компас шлет безобидный на первый взгляд девайс - камера. ЖПС она доводит до потери спутников при наличии 5-6 с выключенной камерой.

Uvis

В фольгу ее для эксперимента не пробовали заворачивать? А фольгу заземлить.

AntonPO

Тоесть не видеопередатчик, который немного приглушает жпс даже если жпс положить на антенну передатчика, а камера. Может ее заэкранировать?

Не видел вашего ответа) Да, надо попробовать фольгу для начала

dROb

Подскажите пожалуйста по LCD_Config. Документации, как водится, никакой.
Во первых - правда ли, что эта штука позволяет настраивать коптер в поле без компа? Вместо MWC. Или роль ее совсем другая?
Во вторых - что-то надо дополнительно прописывать в конфиге Мультивия чтобы он начал воспринимть LCD_Config, и общаться с ним?
Ну и в третьих, конкретный случай - сделал на базе Arduino Duemillanove + DFRobot LCD Keypad этот LCD_Config. В демо режиме прекрасно работает - циферки случайные бегают туда-сюда. Включаешь реальный режим, подключаешь TX_LCD-RX_Multiwii, RX_LCD-TX_Multiwii. И тишина - минуту что-то пытается читать “Reading: <>”, затем говорит что всё плохо, коммуникации нет, зависает. При этом например если я в MultiWii заливаю скетч, способный в порт выдавать “Это мы… опилки!” - эту же самую фразу я легко получаю в LCD_Config, переключив его в режим показа принятого (TEXTSTAR EMULATION чтоле). То есть коммуникация как бы существует. Видимо всё же что-то недонастроил в самом софте мультивия или LCD_Config?

Richard_Ferlow
dROb:

Подскажите пожалуйста по LCD_Config. Документации, как водится, никакой.

А вы с какой версией прошивки пробуете ? Я насколько знаю, в версии 2.1 вроде как убрали поддержку LCD этой

dROb
Richard_Ferlow:

А вы с какой версией прошивки пробуете ? Я насколько знаю, в версии 2.1 вроде как убрали поддержку LCD этой

Забавно … Я работаю с последними, вроде 2.1 у меня… А почему убрали, не знаете? И где об этом, чёрт побери, можно узнать? 😃

P.S. Вообще переход к MultiWii пока напоминает мне мою Линуксовую молодость, когда каждый шаг, например установка звуковой карты, занимала 2 недели, и требовала пересборки ядер и переписывания пол-линукса “под себя”. Оно с одной стороны конечно приятно, а с другой стороны времени уже немного более жалко)))

Richard_Ferlow
dROb:

Забавно … Я работаю с последними, вроде 2.1 у меня… А почему убрали, не знаете? И где об этом, чёрт побери, можно узнать? 😃

P.S. Вообще переход к MultiWii пока напоминает мне мою Линуксовую молодость, когда каждый шаг, например установка звуковой карты, занимала 2 недели, и требовала пересборки ядер и переписывания пол-линукса “под себя”. Оно с одной стороны конечно приятно, а с другой стороны времени уже немного более жалко)))

Странно, вроде был уверен, что видел где-то про это, но найти не могу. НАшел разве что упоминание, что LCD по умолчанию отключен и всё. Видимо ошибся.

dROb
Richard_Ferlow:

Странно, вроде был уверен, что видел где-то про это, но найти не могу. НАшел разве что упоминание, что LCD по умолчанию отключен и всё. Видимо ошибся.

На самом деле кто знает, может так оно и есть…

А с другой стороны есть подозрение что мы с Вами возможно про немного разные вещи говорим. Возможно то что вы имели в виду - это подключение некоего дисплея (Serial, i2c, etc) ПРЯМО в MultiWii. Т.е. данные на дисплей отправляет сам Мультивий. А мой же случай - когда есть устройство отдельное, со своим процессором, питанием и дисплеем, которое считывает данные с Мультивия (судя по всему в том же формате, что и родная программа для настройки МультиВия), и отображает их на экране.

Alexey_1811
dROb:

А мой же случай - когда есть устройство отдельное, со своим процессором, питанием и дисплеем, которое считывает данные с Мультивия (судя по всему в том же формате, что и родная программа для настройки МультиВия), и отображает их на экране.

В 2,1 был изменен протокол обмена по УАРТ. Возможно ваше устройство заточено под старый протокол.

dROb
Alexey_1811:

В 2,1 был изменен протокол обмена по УАРТ. Возможно ваше устройство заточено под старый протокол.

Да, думаю это очень вероятно - буду пробовать старую прошивку Мультивия