Преобразование необработанных данных IIS2MDC в угол

Я не знаю, подходит ли это место для вопросов, но у меня есть 3-осевой магнитометр IIS2MDC. Я использовал это с Arduino. Я скачал библиотеку IIS2MDC.h в Arduino IDE. Я использовал пример кода библиотеки IIS2MDC.h для чтения данных магнитометра. У меня есть необработанные данные по 3 осям.

Мой вопрос: как преобразовать данные магнитометра в градусы? Есть ли какая-либо ссылка или решение для этого?

, 👍-1

Обсуждение

Добро пожаловать в SE/Arduino! Устройство и его библиотека должны иметь документацию, и я ожидаю, что пример кода покажет такие преобразования. Пожалуйста, [отредактируйте] свой вопрос, предоставив ссылки на него, и укажите, почему это вам не помогает. -- ОТ: Библиотека состоит из проектов C++, обычно состоящих из двух частей: файла заголовка ** и файла библиотеки**. Первый предназначен «просто» для удобства, важный файл — второй. Судя по всему, IDE делает все автоматически правильно, но помните о таких деталях., @the busybee

@EDExpert, отредактируйте свой вопрос, чтобы он стал лучше. Просто чтобы вы знали: на многих веб-сайтах stackexchange лучше редактировать свой вопрос, а другим — редактировать свой ответ, чтобы разрешить непредвиденные ситуации. Другими словами: задайте свой вопрос так, как будто он находится перед аудиторией, у которой может быть одна и та же проблема, требующая решения., @st2000


1 ответ


Лучший ответ:

0

Вероятно, перед использованием магнитометр необходимо откалибровать. До того, как калибровка будет применена к выходным значениям магнитометра, сравнение любых двух из трех ортогональных датчиков будет затруднено.

Найдите и изучите термины жесткое железо и мягкое железные искажения/калибровка по отношению к магнитометрам. Жесткое железное искажение является ошибкой смещения. Найдите максимальное (направьте конкретный магнитометр на магнитный север) и минимальное (направьте тот же магнитометр в сторону от магнитного севера) значения одного из магнитометров. Рассчитайте значение смещения так, чтобы при его применении максимальная и минимальная величины были одинаковыми. Искажение мягкого железа является ошибкой величины. Найдите максимальное и минимальное значения для всех трех датчиков. Отсюда найдите общий диапазон всех трех датчиков. Произвольно выберите один из диапазонов датчиков и рассчитайте значения регулировки величины для остальных диапазонов датчиков так, чтобы после их применения все три датчика имели одинаковый диапазон.

На этом этапе давайте сузим сферу применения электронного компаса, чтобы упростить проект. Давайте ограничимся использованием компаса только на столе, параллельном поверхности земли. В этот момент нам нужно использовать только два датчика (два, которые лежат в плоскости стола).

Для расчета угла, на который направлен магнитометр относительно магнитного севера, мы берем арктангенс отношения двух магнитных датчиков, лежащих в плоскости стола. Однако эта математическая функция дает нам углы только для половины желаемых углов. К счастью, математическая библиотека программирования на языке C содержит специальную функцию atan2(), которая может возвращать полный круг углов (из здесь):

Краткое содержание. Функция atan2() делит первый аргумент на второй и возвращает арктангенс результата, или arctan(y/x). Возвращаемое значение задается в радианах и находится в диапазоне -π ≤ atan2( y , x ) ≤ π.

,

Я пробую искажение/калибровку жесткого и мягкого железа, но не могу получить правильные значения. Я конвертирую значения курса магнитометра в градусы, используя уравнение atan2(y/x) * 180/PI, но я получил несколько случайных значений и не получил значений от 0 до 360 градусов. Итак, как я могу использовать свой чип IIS2MDC в качестве микросхемы компаса и получать точные градусы в зависимости от направления?, @EDExpert

Делайте это шаг за шагом. Прежде чем найти загар дуги, убедитесь, что вы используете два датчика, которые всегда параллельны (не наклонены) относительно земной поверхности. Затем, после сложения или вычитания калиброванного смещения и умножения на калиброванную величину, эти два значения увеличиваются, когда датчик направлен на север, и уменьшаются, когда датчик направлен в сторону, на ту же или почти такую же величину. Отрицательное значение максимума для конкретного датчика такое же или почти такое же, как и минимальное. После того, как это подействует, тогда принимайте дуговой загар., @st2000