Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Если ваше хобби - дистанционное управление, дроны, робототехника, электроника, дополненная реальность или что-то подобное, то рано или поздно вы столкнетесь с задачей калибровки магнитометра. Любой модуль магнитометра должен быть откалиброван, так как измерение магнитного поля подвержено некоторым искажениям. Есть два вида этих искажений: искажения твердого железа и искажения мягкого железа. Теорию этих искажений вы можете найти здесь. Чтобы получить точные измерения, вам следует откалибровать магнитометр на предмет деформации твердого и мягкого железа. Это руководство описывает простой способ, как это сделать.
Шаг 1. Что вам нужно
Аппаратное обеспечение:
- Модуль магнитометра HMC5883L
- Плата Arduino Mega 2560
* Но вы можете легко адаптировать эту инструкцию для другого модуля магнитометра или платы Arduino.
Программное обеспечение:
- MagMaster
- MagViewer
Прошивка:
Эскиз Arduino
* Этот скетч написан для модуля HMC5883L, но вы можете легко адаптировать его для своего модуля.
Другие:
- Картонная коробка
- Макетная плата
- Провода
Шаг 2: Изготовление калибровочного бокса
Для процесса калибровки необходимо изготовить специальный калибровочный бокс (рисунок 2.1). Для этого я использовал бумажную коробку, но вы можете использовать пластиковую, деревянную планку или что-нибудь еще. Соедините модуль магнитометра с коробкой (например, с помощью клея), как показано на рисунке 2.1. На гранях коробки следует нарисовать систему координат в соответствии с системой координат модуля магнитометра.
Шаг 3: электрическое подключение
Подключите модуль магнитометра и плату Arduino, как показано на рисунке 3.1. Обратите внимание, что напряжение питания модуля магнитометра может составлять 3,3 В (как в моем случае с версией HMC5883L GY-273).
Шаг 4: Установка программного обеспечения и прошивки
Загрузите программное обеспечение и прошивку здесь. В этом архиве находятся файлы:
- MagMaster.exe - программа калибровки магнитометра
- MagViewer.exe - программа визуализации измерений магнитометра
- Arduino_Code - скетч Arduino для процесса калибровки
- Arduino_Test_Results - скетч arduino для тестирования результатов калибровки
- Arduino_Radius_Stabilisation - скетч Arduino для тестирования результатов калибровки с алгоритмом стабилизации радиуса сферы
- Файлы MagMaster и файлы MagViewer - системные файлы для MagMaster.exe и MagViewer.exe.
Скопируйте все эти файлы в любую папку. Загрузите скетч "Arduino_Code" на плату Arduino. Для этого скетча Arduino требуется библиотека HMC5883L, скопируйте папку «HMC5883L» (помещенную в папку «Arduino_Code») в папку «C: / Program Files / Arduino / libraries» перед загрузкой скетча.
Шаг 5: Калибровка
Вступление
Калибровка магнитометра - это процесс получения матрицы преобразования и смещения.
Чтобы получить калиброванные измерения магнитного поля, вы должны использовать эту матрицу преобразования и смещение в своей программе. В своем алгоритме вы должны применить смещение к вектору некалиброванных данных магнитометра (координаты X, Y, Z), а затем умножить матрицу преобразования на этот результирующий вектор (рисунок 5.4). Алгоритм этих вычислений на языке C вы можете найти в набросках «Arduino_Test_Results» и «Arduino_Radius_Stabilization».
Процесс калибровки
Запустите MagMaster.exe и выберите последовательный порт платы Arduino. Зелеными полосками в окне программы показаны координаты вектора магнитометра (рисунок 5.1).
Поместите модуль магнитометра (калибровочная коробка с прикрепленным модулем магнитометра), как показано на рисунке 5.2.1, и нажмите кнопку «Точка 0» в групповом поле «Ось X +». Обратите внимание, что калибровочная коробка не является неподвижной относительно фиксированной горизонтальной плоскости. Затем поместите магнитометр, как показано на рисунке 5.2.2, и нажмите кнопку «Точка 180» группового окна «Ось X +» и так далее. Делать это нужно следующим образом (см. Также рисунок 5.3):
- Рисунок 5.2.1: «Точка 0», «Ось X +»
- Рисунок 5.2.2: «Точка 180», «Ось X +»
- Рисунок 5.2.3: «Точка 0», «Ось X-»
- Рисунок 5.2.4: «Точка 180», «Ось X-»
- Рисунок 5.2.5: «Точка 0», «Ось Y +»
- Рисунок 5.2.6: «Точка 180», «Ось Y +»
- Рисунок 5.2.7: «Точка 0», «Ось Y-»
- Рисунок 5.2.8: «Точка 180», «Ось Y-»
- Рисунок 5.2.9: «Точка 0», «Ось Z +»
- Рисунок 5.2.10: «Точка 180», «Ось Z +»
- Рисунок 5.2.11: «Точка 0», «Ось Z-»
- Рисунок 5.2.12: «Точка 180», «Ось Z-»
Вам следует заполнить таблицу. После этого нажмите «Рассчитать матрицу преобразования и смещение» и получите матрицу преобразования и смещение (рисунок 5.3).
Получены матрица преобразования и смещение! Калибровка завершена!
Шаг 6: Тестирование и визуализация
Визуализация некалиброванных измерений
Загрузите скетч "Arduino_Code" на плату Arduino. Запустите MagViewer.exe, выберите последовательный порт платы arduino (скорость передачи последовательного порта должна быть 9600 бит / с) и нажмите «Запустить MagViewer». Теперь вы можете видеть координаты вектора данных магнитометра в трехмерном пространстве в реальном времени (рисунок 6.1, видео 6.1, 6.2). Эти измерения не откалиброваны.
Визуализация откалиброванных измерений
Отредактируйте эскиз «Arduino_Radius_Stabilization», замените матрицу преобразования по умолчанию и данные смещения вашими данными, полученными во время калибровки (ваша матрица преобразования и смещение). Загрузите скетч "Arduino_Radius_Stabilization" на плату Arduino. Запустите MagViewer.exe, выберите последовательный порт (скорость передачи 9600 бит / с), нажмите «Запустить MagViewer». Теперь вы можете видеть откалиброванные измерения в трехмерном пространстве в реальном времени (рисунок 6.2, видео 6.3, 6.4).
Используя эти эскизы, вы можете легко написать алгоритм для вашего проекта магнитометра с откалиброванными измерениями!