MultiWii
Как вариант,что то отпаялось или наоборот спаялось не правильно во время выпайки баро.
Скорее всего акселерометр.
Если выпаивалось феном,то такое возможно,а если этот фен был строительный,то вероятней всего.
Да не с пайкой там все ок и фен специальный для этих дел.Проблема решина в 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
Товарищи, помогите пожалуйста вписать 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. Т.е. данные на дисплей отправляет сам Мультивий. А мой же случай - когда есть устройство отдельное, со своим процессором, питанием и дисплеем, которое считывает данные с Мультивия (судя по всему в том же формате, что и родная программа для настройки МультиВия), и отображает их на экране.