MultiWii
Товарищи, помогите пожалуйста вписать 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 вывод сырых данных от датчика
Не понимаю логику этих двух команд (украдено у другого i2c датчика):
тут все просто:
i2c_getSixRawADC получает 3 16-ти битных значения по и2с начиная с регистра 0х02 из устройства с адресом BMA180_ADDRESS
собственно тебе нужно создать свою процедурку, скопировать туда код из этой и переделать на свое (там не особо много нужно переделок)
вторая функция, а вернее макрос рассовывает полученные данные в массив данных акселя
а по отладке - чем не нравятся стандартных 4 дебага? разрешаеш DEBUG в конфиге и просто где нужно вывести данные помещаеш их в debug[0…3] соответственно
тут все просто:
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]);
а по отладке - чем не нравятся стандартных 4 дебага? разрешаеш DEBUG в конфиге и просто где нужно вывести данные помещаеш их в debug[0…3] соответственно
Не знал этого. Вернее включал дебаг, и думал что DEBUG0-3 это просто флаги 😃 Возможно это мне поможет…
P.S. Собсно буду благодарен, если кто вдруг поправит за меня эти две строчки 😃 Делов то! 😉
Заметил что в GUI не останавливается счетчик ошибок Ic2 (плата crius se), попробовал уменьшить скорость шины - ни чего не изменилось.
Обратил внимание что баро как-то стабильно чего то кажет ,пропаял результат 0, за комментировал его, ошибки по шине пропали - умер датчик ?
Что может быть причиной его кончины (пару не больших крешей напр)?
Подскажите пожалуйста как правильно подключить bluetooth. У меня seeeduino mega. Как я понял подключать нужно к RX TX 0 (хотя пробовал разные -и от GPS и от PPM SUM и от LCD ). В настройках вия вроде тоже ничего не нужно настраивать. Пробовал и с андроидом и с компьютером - по сути соединяется с портом, но ничего не работает.
читал про замену библиотеки - но ведь для androidа это не актуально, куда копать ? что я пропустил ? сам модуль проверял - подключал через комп порт с одной стороны и блютус с другой -данные между ними ходят прекрасно(скорость 115200 на модуле предварительно настроил )
Обратил внимание что баро как-то стабильно чего то кажет ,пропаял результат 0, за комментировал его, ошибки по шине пропали - умер датчик ?
Проблема наверно програмная а вот после того как пропаяли его работоспособность под вопросом.
с компьютером
У меня на стационаре не пашит видит, подключается но данные не бегут а вот на ноуте без проблем.Програма блюточ на компе какая?
Подключать нужно так
плата RX- блюточ TX . плата TX-блюточ RX
Ура, я его (LIS302DLTR) победил!
ACC_ORIENTATION( int8_t(rawADC[1]),
int8_t(rawADC[3]),
int8_t(rawADC[5]));
Пять часов было убито на то, чтобы понять, что мультивий не так воспринимает считанные данные (SIGNED BYTE Мультивий видит как UNSIGNED BYTE)
Если кому вдруг понадобится код для этого датчика - выложил в дневнике.
Подскажите, кто-нибудь использует EagleTree PowerPanel для настройки и показа параметров? Я попробовал - на экране тишина. Подключил правильно - по I2C устройство распознаётся.
Ок, проверю и на ноуте, но ведь на телефоне тоже не работает… Подключал естественно TX-RX, хотя пробовал и наоборот 😃
Проблема наверно програмная а вот после того как пропаяли его работоспособность под вопросом
Проблема аппаратная 100%. Софт заливал и 2.0 и 2.1.
Перекинул датчик с другой платы - все работает , ошибок по I2c нет.
Рас уж тут речь про ЖПС удержание, напишу и я свои симптомы. Коптер в режиме ЖПС холд висит хорошо, но, не во всех направлениях. Как только поверну нос в какое-то определенное направление, коптер начинает так сказать “унитазить”, летать по спирали, но нос остается в том же направлении. Думаетцо, помехи компасу. Но, пробовал отключать компас, калибровать, поднял плату, тоже самое.
Ну значит с 1000-м юбилеем меня! 😃
Хотите поздравить?! Ложите спасибы! 😉
Вобщем, после серии экспериментов удалось выяснить, что жуткие помехи на ЖПС да и наверно на компас шлет безобидный на первый взгляд девайс - камера. ЖПС она доводит до потери спутников при наличии 5-6 с выключенной камерой.
В фольгу ее для эксперимента не пробовали заворачивать? А фольгу заземлить.
Тоесть не видеопередатчик, который немного приглушает жпс даже если жпс положить на антенну передатчика, а камера. Может ее заэкранировать?
Не видел вашего ответа) Да, надо попробовать фольгу для начала
Подскажите пожалуйста по 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?
Подскажите пожалуйста по LCD_Config. Документации, как водится, никакой.
А вы с какой версией прошивки пробуете ? Я насколько знаю, в версии 2.1 вроде как убрали поддержку LCD этой
А вы с какой версией прошивки пробуете ? Я насколько знаю, в версии 2.1 вроде как убрали поддержку LCD этой
Забавно … Я работаю с последними, вроде 2.1 у меня… А почему убрали, не знаете? И где об этом, чёрт побери, можно узнать? 😃
P.S. Вообще переход к MultiWii пока напоминает мне мою Линуксовую молодость, когда каждый шаг, например установка звуковой карты, занимала 2 недели, и требовала пересборки ядер и переписывания пол-линукса “под себя”. Оно с одной стороны конечно приятно, а с другой стороны времени уже немного более жалко)))
Забавно … Я работаю с последними, вроде 2.1 у меня… А почему убрали, не знаете? И где об этом, чёрт побери, можно узнать? 😃
P.S. Вообще переход к MultiWii пока напоминает мне мою Линуксовую молодость, когда каждый шаг, например установка звуковой карты, занимала 2 недели, и требовала пересборки ядер и переписывания пол-линукса “под себя”. Оно с одной стороны конечно приятно, а с другой стороны времени уже немного более жалко)))
Странно, вроде был уверен, что видел где-то про это, но найти не могу. НАшел разве что упоминание, что LCD по умолчанию отключен и всё. Видимо ошибся.
Странно, вроде был уверен, что видел где-то про это, но найти не могу. НАшел разве что упоминание, что LCD по умолчанию отключен и всё. Видимо ошибся.
На самом деле кто знает, может так оно и есть…
А с другой стороны есть подозрение что мы с Вами возможно про немного разные вещи говорим. Возможно то что вы имели в виду - это подключение некоего дисплея (Serial, i2c, etc) ПРЯМО в MultiWii. Т.е. данные на дисплей отправляет сам Мультивий. А мой же случай - когда есть устройство отдельное, со своим процессором, питанием и дисплеем, которое считывает данные с Мультивия (судя по всему в том же формате, что и родная программа для настройки МультиВия), и отображает их на экране.
А мой же случай - когда есть устройство отдельное, со своим процессором, питанием и дисплеем, которое считывает данные с Мультивия (судя по всему в том же формате, что и родная программа для настройки МультиВия), и отображает их на экране.
В 2,1 был изменен протокол обмена по УАРТ. Возможно ваше устройство заточено под старый протокол.
В 2,1 был изменен протокол обмена по УАРТ. Возможно ваше устройство заточено под старый протокол.
Да, думаю это очень вероятно - буду пробовать старую прошивку Мультивия