Проблемы с калибровкой магнитометра MMC5603 с помощью MotionCal и Adafruit SensorLab — показания кажутся неправильными.
Я пытаюсь откалибровать свой магнитометр MMC5603 с помощью MotionCal и ноутбука Adafruit SensorLab Jupyter, но мои показания кажутся неправильными. Исходные показания магнитометра, похоже, странно разбросаны даже до калибровки, и, похоже, они не сильно меняются, если вообще меняются.
Вот как это выглядит до калибровки:

А после калибровки значения становятся чрезвычайно большими:

Даже в этом случае MotionCal, похоже, не может правильно откалибровать датчик — облако точек почти не перемещается при повороте датчика.
Код прошивки, которую я использую. Лаборатория датчиков Adafruit Я использую прошивку от SensorLab от Adafruit. Пример кода, предоставленный Adafruit, возвращает те же результаты — значения сильно отличаются.
Удалось ли кому-нибудь успешно откалибровать MMC5603 с помощью MotionCal или SensorLab? Каковы правильные действия и настройки для достижения точных показаний? Есть ли что-то особенное в этом датчике, что может вызывать проблемы с калибровкой? Может ли мой MMC5603 быть сломан или есть что-то ещё?
@, 👍1
Обсуждение2 ответа
Для калибровки необходимо устранить паразитные магнитные поля. Думаю, проблема именно в этом. Практически всё, что использует электричество рядом с устройством, вероятно, создаёт поле. Например, розетка, блок питания, двигатели, компьютеры, телефоны и т. д.
Мы можем работать над этим вместе. По мере того, как вы будете улучшать свой вопрос, я смогу улучшить этот ответ. Было бы лучше использовать минимальные и максимальные значения до калибровки. Однако мы можем работать с вашими данными, пока вы не улучшите свой вопрос, добавив минимальные и максимальные значения до калибровки.
Кроме того, важно сформулировать свои цели. Я предполагаю, что цель — создать компас, который можно использовать только тогда, когда оси X и Y параллельны поверхности Земли. Компенсировать магнитное склонение не нужно. Кроме того, наклонение магнитного поля Земли не имеет значения.
Этот ответ предполагает, что магнитометр будет использоваться как компас, а не как измерительный прибор.
Рассмотрите возможность ручной калибровки магнитометра и написания собственного кода. Это позволит лучше понять процесс, упростить большинство приведенных здесь ответов и получить ожидаемые значения калибровки на случай использования готового метода калибровки.
Определите смещение для каждого из 3 датчиков магнитометра, сложив минимальное и максимальное значения каждого из них, а затем разделив на 2.
X: ((179,74) + (212,02)) / 2 = 195,88
Y: ((-317,02) + (-282,91)) / 2 = −299,965
Z: ((-865,58) + (-820,33)) / 2 = −842,955
Вычтите эти значения из необработанных значений, чтобы скорректировать смещение датчика.
Найдите поправку магнитуды для двух датчиков магнитометра. Выберите датчик X в качестве опорного. Найдите поправку магнитуды для датчика Y.
Y: ((179,74) - (212,02)) / ((-317,02) - (-282,91)) = 0,946350044
Найдите поправку величины для датчика Z.
Z = ((179,74) - (212,02)) / ((-865,58) - (-820,33)) = 0,713370166
Умножьте скорректированное значение датчика Y на найденную выше поправку к амплитуде датчика Y. Умножьте скорректированное значение датчика Z на найденную выше поправку к амплитуде датчика Z.
Эти значения теперь откалиброваны для совместного использования. Чтобы компас не наклонялся, найдите арктангенс значений X и Y. Он соответствует только половине полной окружности. Чтобы исправить это, многие языки программирования поддерживают функцию atan2(), которая соответствует полной окружности.
- Контакты ESP32 не помещаются в беспаянную макетную плату
- После восстановления смещения BNO055 на датчике все значения калибровки равны 0.
- Увеличить частоту дискретизации на плате ESP32
- Adafruit esp32 Feather не удалось скомпилировать
- Значения кватернионов из BNO055 недоступны.
- Ошибка при компиляции программы для esp32 с Preferences.h
- Одинаковый вывод на дисплеях с разными I2C-адресами (библиотека AdaFruit, ESP32)
- Соединение MQTT не распознается в void loop()
пожалуйста, отредактируйте свой пост... добавьте конкретный вопрос, на который можно ответить, @jsotola
Я не видел ни одного магнитометра, которому не требовалась бы серьёзная калибровка перед началом работы. Вам нужно найти значения калибровки смещения и магнитуды для всех трёх датчиков. Некоторые называют это «жёстким» и «мягким» железом. Неясно, что представляют собой эти два изображения. Точки находятся примерно в одинаковых координатах. Было бы лучше указать максимальное/минимальное значение до и после. На самом деле, мы могли бы получить всё необходимое для функционирующего компаса, используя только минимальное/максимальное значение до. Не используйте изображения текста/кода. Это затрудняет копирование в ответы., @st2000
Вы не обновили свой вопрос @user118038., @st2000