Как я понимаю, внутри у 9150 тот же 6050 плюс магнитометр, который мне не нужен. И ценник в 2 раза больше, да и те же шансы "попасть" на брак. Попытаюсь еще партию 6050 заказать, может повезёт
Хорошая новость: один из "забракованных" датчиков всё-таки оказался работоспособным. В другом положении (на боку) зависимость от температуры AccelX стала более выраженной и корректной. Трёх штук хватит. Плюс на четвёртом акселерометр рабочий.
Далее, "нагуглил", что была такая серия 6050 с "уполовиненными" значениями акселерометра, т.н. "engineering samples", предназначенная чисто для режима FS_SEL=2 (8g). https://forum.sparkfun.com/viewtopic.php?f=14&t=30624 Так что китаёзы не стесняются в выборе комплектующих Но гироскопы в них не "уполовиненные", потому их можно полноценно использовать. Да и акселерометры эти тоже, видимо, можно использовать. Умножать на 2 значения да и всё.
Получил последнюю партию 6050 (5 штук). Сразу распаял и проверил (обычный прогрев 1мин, прогрев под феном до ~50 градусов около 1-2мин, остывание 2-3мин). Один - в норме. На трёх - наблюдается нелинейность зависимости показаний датчиков от температуры - такие данные ничем не скорректируешь. Возможно, слишком резко нагревал. Ещё один вроде как тоже близок к норме, но нужно ещё раз проверить в более нежном режиме прогрева. Всё, датчиков достаточно, с запасом. Займусь калибровкой, затем "математикой".
Откалибровал акселерометры - нормально. Не смог толком откалибровать гироскопы.
По-порядку.
Коэффициенты линейной температурной зависимости акселерометра и гироскопа рассчитаны в результате предыдущих опытов. Зафиксировал их в константах.
Пришёл к выводу, что итоговую калибровку акселерометра необходимо производить при каждом старте программы, т.к. показания датчиков сильно зависят не только от температуры, но и от всего прочего (давление, напряжение, положение...), то есть каждый старт - разные смещения и масштабы. Написал процедуры калибровки при старте (6 ортогональных положений по 10 сек, повороты по сигналу зуммера). При этом вычисляются смещения и масштабы акселерометра, плюс смещения гироскопа (гироскоп в покое должен показывать 0 по всем осям). Акселерометр начал вести себя более-менее адекватно.
Далее попытался вычислить масштабы по осям гироскопа (опыт: медленный поворот вокруг каждой оси ровно на 360 или 720 градусов). Я предполагал, что масштабы по осям - константы. Оказалось не всё так просто. Сразу после включения реальный поворот на 360 градусов показал 347 по данным гироскопов, потом 345, потом 344,339,325,319,318,312,310. И это уже при термокомпенсированных значениях данных гироскопа. Получается, что масштаб осей гироскопа сам по себе тоже плывёт от температуры или от чего-то ещё. Мощности питания вроде как достаточно, напряжение от батарейки 8V (ток КЗ около 4А), 7805 на 1Вт - на всё должно хватать. Надо замерить потребление, попробовать 12V...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Не успел огорчиться. Проблема, по-видимому, оказалась в кварце (22.184МГц). Неверно начал работать таймер, потому и интегрированные значения гироскопа показывали "погоду". Заменил кварц на 24.576МГц (раньше на такой частоте Мега328 почему-то отказывалась запускаться, сейчас запустилась). Откалибровал масштабы гироскопов. Теперь нужно посмотреть, чего в итоге добился по части стабильности значений, хотя бы на протяжении 5 минут.
--------
Первые тесты с перемещением по комнате на несколько метров в течение 0.5 минут с возвратом в исходную точку показали, что гироскопы (4 штуки) выдают практически одинаковые значения, но некорректные. Отклонения датчиков просто интегрировались, без фильтров и поправок с учётом данных акселерометров. Вращение вокруг оси Z оказалось в норме, а вокруг X и Y значения "съехали" на десятки градусов. Частота наблюдений - 50Гц, что, конечно, мало, но даже с этой частотой повороты вокруг осей без значительных перемещений в пространстве (+-10см) за те же полминуты дают точно 360 градусов.
--------
Глянул результаты предыдущих опытов полугодовой давности, с одним модулем. Оказалось, что простое интегрирование и тогда выдавало по X и Y смещение результатов от нормы на десятки градусов, в то же время расчёт углов через кватернионы выдавал достаточно точный результат. Память 328й подошла к концу. Придётся оптимизировать код, чтобы параллельно считать кватернионы.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Коротко об итогах тестирования. 3 модуля полностью рабочие, плюс один - пока просто болтается, для определения скорости работы. Китайцы пообещали 2шт. заменить из последней партии. Модули на плате разнесены в форме квадрата. Частота опроса датчиков получилась 40Гц (с расчётом кватернионов в MCU) или 50Гц (без их расчёта). Маловато, но достаточно.
Эксперименты показали, что простое интегрирование данных гироскопов (по крайней мере с частотой опроса в 50Гц) выдаёт верные данные только в случае вращения вокруг осей (т.е. когда значения сенсоров по двум осям минимальны, а вокруг третьей идёт вращение). Расчёт кватернионов через функцию <Mahony> учитывает соответствующие значения данных сенсоров-акселерометров и корректирует эту несправедливость, в итоге значения кватернионов или "крен-тангаж-рысканье" вполне адекватны.
Опыты были следующие: - перемещение на 10м не по прямой, с возвратом в исходную позицию, 30 сек; - перемещение на 30м не по прямой, с возвратом в исходную позицию, 1 мин; - повороты на известные углы на месте (90-180 градусов по разным осям, с возвратом в исходную позицию, 30 сек; - перемещение на 10м не по прямой, с возвратом в исходную позицию, с произвольным вращением в процессе перемещения, 1мин; - перемещение на 50м не по прямой, с возвратом в исходную позицию, с произвольным вращением в процессе перемещения, около 3 минут.
Отклонения углов конечной позиции от начальной в каждом опыте разные, но лежат, в среднем, в пределах +/-3-5 градусов. Изменение частоты опроса датчиков сильно влияло на результаты. Чем выше частота, тем точнее.
Один из датчиков показал менее качественные результаты (сенсор Z "поехал"). По-видимому, его следует заменить или перекалибровать.
Текущие выводы: 1. Если повысить частоту измерений хотя бы до 100Гц, думаю, точность повысилась бы на порядок. 2. Данные сенсоров гироскопа относительно хорошо стабилизируются при учёте данных акселерометра. 3. Набор из 5-10 исправных и откалиброванных модулей при частоте измерений порядка 100Гц, простым усреднением данных, может выдавать точную ориентацию прибора в пространстве, по крайней мере при коротких перемещениях (до 5 минут).
Мда... в сторону магнитометра нет желания посмотреть да разобраться? безперспективное занятие? Я сейчас пытаюсь подружить MPU6050 c HMC5883 и что то приуныл... ориентация на полюс каждый раз уходит, особенно при наличии рядом металл предметов... Применяю фильтр маджвика, возможно его еще нужно настраивать...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения