Виноват.. Конечно I2C, он же IIC, он же TWI..
![]() |
Специальные цены | новые товары | ![]() |
![]() |
![]() |
Тема раздела Самодельная электроника, компьютерные программы в категории Общие вопросы; Виноват.. Конечно I2C, он же IIC, он же TWI.....
Виноват.. Конечно I2C, он же IIC, он же TWI..
Сергей, есть что-нибуть новое? Что-то тема затухла.
Жду MPXV7002DP и MS5611-01BA01.. Пока знакомлюсь с теорией..
В данный момент пытаюсь сообразить можно ли посчитать термокомпенсированное давление от MPXV7002DP с точностью 0.05mbar (разрешение ~0.5м) без использования int64 как предложено в ДШ. Такого типа нет в CVAVR. Можно конечно написать библиотечку, но нужно ли?..
Переведу на русский язык кто не шарит, что Сергей сейчас занимается прикручиванием датчиков баро-высоты и баро-скорости.
Что даст большие возможности нашему АП.
Короче, буду закупаться датчиками. И опять придётся на готовых платах колхозить, и навешивать сопли...
А у меня дригих дел горы навалились. Плату поновому я развел, но еще не делал. Значит есть смысл немного выждать и прикупить датчиков.
Может кто знает, терпимы ли к 5V TTL по входам MS5611? В ДШ ничего про это нет, значит скорее всего нельзя напрямую включать.. Посоветуйте, какой буферок поставить?
Сергей, какова вероятность положительного исхода с бародатчиками? Может есть смысл заказать, а то скоро Новый год, а потом он же в Китае.
буферок через полевики можно сваять, я так иму цеплял к меге.
типа так http://kazus.ru/forums/showthread.php?t=103232
Вероятность, большая, по баровысоте код уже давно написан и "виртуально" проверен. Но торопиться заказывать смысла не вижу, мало ли... Да мая все равно успеете получить, а если и не успеете- и без них можно полетать..
Буферить надо аж три линии, проще наверное какую-нибудь 74LVC125AD влепить придется..
это 3 полевичка и 6 резисторов, по разводке всё оч компактно, так же делал на микрухе PCA9306D тож ничего так НО! кроме самой ее пришлось ещё доп резисторы впаять.. выигрыш итоговый я не заметилс полевичками - зашёл в магаз купил самые простые смд и всех делов.
а смикрой в чём плюсы?
Чувствую, просится новая версия платы на заводе...Вот только развести в одном слое пока не получается..
Блин я свой АП, на новые платы перенёс уже, а тут бародатчики прикручиваются, там переделок много. Сопли не хочется делать...
Да, наверное так можно.. Только настроить порты и прерывания.
Собрал пока только IMU, но уже на этом этапе появились проблемы,IMU не проходит калибровку и квадрат в Test_imu сам бесконечно крутится,при вращении платы руками квадрат ведет себя вполне адекватно , повторяет углы наклона. Перепробовал все выложенные в теме варианты прошивок и везде похожая картина (за исключением тех ,что под другой кварц заточены). Пробовал покрутить параметр Accel gravity на глаз разницы не видно, при изменении Gyro gain меняется скорость само-вращения квадрата , при сильном увеличении параметра Accuracy до 0.1, калибровка проходит но дрейф остается как и был (тоесть квадрат также продолжает сам медленно вращатся). Изменение остальных параметров не дают видимых изменений.
Как я понимаю IMU у меня не совсем работает,или я просто не могу его правильно настроить и собирать осд к нему мне пока безполезно.
Подскажите в чем может быть проблема, может у меня сами датчики бракованные ? как это можно проверить ?
Выглядит это вот так:
П.С.
А так хотелось на новогодние каникулы облетать этот чудесный автопилот,а тут такой облом, новые сенсоры уже не успеют дойти.
какой у вас комплект? можно фото того что у вас? лично у меня с иму проблем не было кроме тех которое я сам внёс и сам же поправил![]()
А плату датчиков, ту купили? Дайте ссылку какую плату купили.Подскажите в чем может быть проблема, может у меня сами датчики бракованные ? как это можно проверить ?
Я покупал вот эту:
http://www.ebay.com/itm/9DOF-ITG3205...item2a1e1302bf
Сделал 3 экземпляра, все работают. Правда все три пришлось настраивать. Но вот так вот ни один не плыл.
Вот такая инструкция по настройке есть? :
Accel Gravity- коэффициент для акселя. Для подстройки надо смотреть на первую цифру Debug. Эта цифра показывает отклонения от 1G по показанию акселя. 100 в этом поле, соответствует намерянному и насчитанному 1g. Отклонение +-0.5g покажет 0. Те. подбирая Accel gravity нужно добиться максимального значений при разных ориентациях платы без ускорений. Очень хорошо если получится 95-98.
Gyro gain -коэффициент для гиро. Тут делаем такую проверку: плавно но быстро поворачивает имушку на 90 град скажем по крену. Смотрим как ведет себя 3d-моделька в Test_IMU. Возможно два варианта - модель недоповорачиват до положенного угла и видим медленное "доползание" за счет коррекции по акселю. В этом случае следует увеличить этот коэффициент. Во втором случае все наоборот: "переповорачивает"- уменьшаем.
В общем для нормальной работы системы стабилизации это все ловля блох.., и не так уж принципиально.. Но если есть желание и время, можно поиграться..
KP_RollPitch Определяют скорость коррекции матрица акселем.
Быстрая скорость есть шанс, что горизонт начнут кривить длительные линейные ускорения.
Маленькая скорость - слишком долго выправляются накопленные ошибки.
KI_RollPitch Используется только на этапе калибровки IMU после каждого включения
для устранения дрейфа от гироскопов по крену/тангажу .
Могу предположить, у вас на плате сенсоров попутаны оси акселя и гироскопа.. Сравните с расположением микросхем на плате на которую дал ссылку выше Сергей.
В принципе лечится программно, но как это сделать мне удаленно- надо хорошо подумать..
Z-состояние конечно не нужно, но то что они:
"5-volt tolerant inputs/outputs, for interfacing with 5-volt logic"
"Direct interface with TTL levels"
мне показалось достаточно, что бы использовать в качестве преобразователя уровней в сторону 5->3.3В. Ну а обратно можно и напрямую включить..
PS Эх... у того же продовца, у которого чисто микруху заказал, оказывается уже есть все готовое. Надо было неспешить, поискать и не маяться с печаткой и выбором ПУ..![]()
Фото того что у меня
брал сдесь http://dx.com/p/gy-85-6dof-9dof-imu-...arduino-148436
Это читал, методика настройки в моем случае не совсем понятно как лечить дрейф, можно было бы методом тыка подобрать если бы были видны положительные изменения, а в моем случаи их нет и вращение всегда в одну сторону.
На вид платы абсолютно идентичные, оси должны совпадать.
Я еще в сентебре пытался собрать старый вариант IMU немного на другой плате (теже датчики но без компаса),закоментировав пару строк в исходниках где идет обращение к компасу, и была таже проблема квадрат точно также крутился и решив что мой "скил" программиста не достаточно высок для такого тюнинга, бросил это дело и заказал правильную на вид плату сенсоров что бы обойтись без импровизаций с моей стороны. Не помогло.
Назрел еще такой вопросик, в проге imu_test при нажатии кнопки Trend появляется окно с тремя типа графиками, у меня они пустые, что это? так и должно быть?
Последний раз редактировалось korall; 07.12.2013 в 00:13.
Тренд работает когда пройдёт инициализация ИМУ. У вас инициализация не проходит.
Может проц поменять? Раз с той и с этой платой датчиков крутится моделька. А проц то один.
Такое ощущение что наводиться что то на АЦП...
Я сделал три экземпляра иму, и все работали одинаково, ни у одной не крутилась моделька. Она крутится только по азимуту, т.е. по компасу, но медленно. КАК бы компас всё ровно не используется, на это можно забить.
Да, на вид платка правильная..
Попробуйте такой test_imu.
Добавил чекбокс "Accel test". При включении "Debug mode" и этой галочки расчет ориентации будет только на основе акселя. Те. модель должна показывать ориентацию по крену и тангажу без всяких уплываний.
старая версия была сделана на макетке соответственно там и проц(еще из старых партий без буквы А) и кварц и сама плата были другими, питается все это у меня от USB порта ноутбука, но пробовал и от акумулятора через КРЕНку,по тыкал осцилографам в места питания сенсоров и проца,возбуждений и генераций вроде не обнаружил.
Вот как то так:
Попробовал дла проверки прицепить эти сенсоры к MultiWii, так там все с ними работает.
Ничего не понимаю ,чертовщина какая то![]()
Явно с осями какая-то путаница.. Сергей а прошивку сами компилировали или готовую заливали?
Попробуйте эту.
Если ничего не измениться, добавлю вывод данных акселя, будем разбираться..
Ок. Продолжаем разговор..
Грузите это: test_imu.
Добавил вывод акселя по осям.
В горизонте должны быть цифры: 0, 0, 100.
Нос- широкая сторона платы с разъемами, если смотрим с хвоста на нос правый крен: 0,100,0
Кабрирование 90град: 100, 0, 0.
Последний раз редактировалось korall; 07.12.2013 в 17:37. Причина: добавил
Да, сенсоры вверху.
Готов сдаться...
Вверх ногами в горизонте?
отредактировал предыдущий пост добавил показания вверх ногами.
По тесту вроде как оси правильно расположены, только показания смещены от нуля сильно по X и Z.
Может можно в настройки добавить параметр смещения (типа ручной коректеровки нуля) ?
А вот сдаватся не надо, на Вас вся надежда
Вот в доках на ADXL 345 что то про смещение:
Вложение 874084
это не оно случаем?
Получше рассмотрел свои цифры ,оказалось что ось Y в инверсии еще в добавок.
Последний раз редактировалось korall; 07.12.2013 в 18:15.
Добавил в код
if(err) return err;
err=TWI_SendByte(ADXL345_ADDRESS<<1, 0x1e, 0x4f); //Х_offset
if(err) return err;
err=TWI_SendByte(ADXL345_ADDRESS<<1, 0x1f, 0x10); //Y_offset
if(err) return err;
err=TWI_SendByte(ADXL345_ADDRESS<<1, 0x20, 0x80); //Z_offset
по Z не хватает расхода чтобы дотянуть до нуля
и незнаю как инвертировать ось Y
теперь в тесте стало так :
В горизонте : 0, 0, 430
Правый крен:0, -100, 320
Левый крен: 0, 110, 320
Кабрирование: -110, 0, 320
Пикирование:110, 0, 320
в горизонте кверх ногами: 0, 0, 220
на тесте с мультиком - компас адекватно реагирует?. есть ли варианты в ближайшем доступе другой платки с этими же датчиками? просто, насколько я помню, когда я свою иму паял у меня гир повёрнут по часовой стрелке на 90 гр. и вроде адекват был.. может непропай на плате? по ножкам прерываний например?
Иван, тут имхо все чудесатее.. Данные то с акселя явно читаются (т.е. по железу претензий не может быть).. Только почему то с жутким смещением, да еще одна ось с инверсией..
Сергей, в файле sensors.c можно переписать функцию
Но это все какие-то странные костыли..Код:#define ADX345_OFFSET_X 0 //Задать смещение!! #define ADX345_OFFSET_Y 0 //Задать смещение!! #define ADX345_OFFSET_Z 0 //Задать смещение!! u_char ADXL345_GetData(void) { float fv; u_char err; s_int buff[3]; err=TWI_RecData(ADXL345_ADDRESS<<1, 0x32, (u_char *)buff, 6); if(err) return err; fv=(float)buff[0]; gSensorData.Accel[0]=(fv/gCnfData.K_AccelGravity)-ADX345_OFFSET_X; fv=(float)buff[1]; gSensorData.Accel[1]=-((fv/gCnfData.K_AccelGravity)-ADX345_OFFSET_Y); // invert Y!!!! fv=(float)buff[2]; gSensorData.Accel[2]=(fv/gCnfData.K_AccelGravity)-ADX345_OFFSET_Z; return 0; }
ЗЫ Креном вправо я назвал поворот по часовой..
c чего взяться тут инверсии? если поумочанию сенсоры стоят правильно. помоегу тут кто-то наплате глючит вопрос только кто.. может в меге фьюзы не все стоят, может аксель глючный попался? (я свой по торопыжкински даже переполюсовал как то выжил.. ) лезть сразу в код при условии что у всех он работает исправно по-моему это последнее дело..
Ок: imu souce.
Там только надо поменять настройку UART, у меня нестандартный кварц.
В режиме дебаг с платы иму передаются исходные данные с сенсоров, расчет ориентации делает сам test_imu.
Иначе плата иму выдает уже рассчитанные углы ориентации и данные о значениях непосредственно с датчиков недоступны.. Те. может эти исходники и не нужны..
Да какой кварц у вас? Я выкладывал прошику которая работает на 16мгц, и программа ТестИМУ тоже была заточена под этот кварц, т.к. передача данных на другой скорости. В общем в архиве было всё под 16 мгц.
В посту 1081, прошивка и программа тест работает на 16 мгц 100 пудов!
OSD на ATmega1281