Как отфильтровать или исключить показания магнитного поля Земли вокруг 3D-магнитного датчика?
Я использую 3D-датчик SparkFun MAG3110: https://www.sparkfun.com/products/12670
По сути, мое приложение заключается в создании бесконтактного «магнитного джойстика» с использованием локального магнита для точного и постоянного определения трехмерного положения в плоскостях x, y, x локального магнита, точно так же, как в этом видео (перейдите к 1:06). : https://www.youtube.com/watch?v=CO6y6bjFfmY
Магнит, который я использую, является постоянным, поэтому я пытаюсь найти способ устранить шум магнитного поля Земли вокруг датчика, чтобы он не мешал показаниям датчиков, как если бы магнитное поле Земли практически не присутствовало. .
Я уже написал код, который берет около 50 выборок в каждой плоскости (x,y,z), берет среднее значение каждой из плоскостей и выводит эти показания за вычетом средних значений смещения (Пример: Serial.print(x -xavg), Serial.print(y-yavg), Serial.print(z-zavg)). Я сделал это, чтобы «обнулить» магнитное поле Земли, подобно обнулению весов.
Это было не очень эффективно, и результаты не были постоянными после многократного введения и удаления локального магнита.
Я рассмотрел:
- фильтр нижних частот
- Слияние датчиков с использованием моего модуля гироскопа/акселерометра (Я знаю, что объединение датчиков обычно используется для калибровки магнитометра, чтобы он был более точным компасом, но можно ли как-нибудь использовать этот метод для устранения магнитного поля Земли?)
- использование данных с сайта http://www.Magnetic-declination.com/ для привязки к моим расчетам и компенсации показаний
- Использование электромагнитного модуля для непрерывного вывода магнитного поля Земли в инвертированном виде в попытке нейтрализовать магнитное поле Земли.
- пытаемся найти совершенно новый датчик, который не обладает достаточно низкой чувствительностью даже для обнаружения магнитного поля Земли.
Итак, мои вопросы:
- Есть ли какой-нибудь способ сделать это?
Являются ли какие-либо из моих соображений практичными или возможными?
Есть ли на рынке вообще какие-либо 3D-магнитные датчики, которые НЕ улавливают магнитное поле Земли? - Я обращался к SparkFun, Arrow, ST и другим компаниям по этому конкретному вопросу, но так и не получил однозначного ответа именно на этот вопрос?
если нет, то как этому человеку на видео удалось уменьшить шум вокруг датчика? - Он визуально показывает, что его датчик начинает фильтровать шум, говорит, что использует алгоритм "адаптивных средних" и ссылается на какой-то код, но я не смог этого увидеть/найти и не понимаю, как он это делает?
@Dante Biase, 👍1
3 ответа
Один из вариантов — магнитный градиентометр. Он состоит из двух магнитометров, которые размещаются на разных расстояниях от локального магнита (один близко, один далеко). Вы вычитаете показания, чтобы исключить зависимость от магнитного поля Земли, исходя из (довольно хорошего) предположения, что поле Земли не меняется на расстоянии между датчиками.
Если вы уже вычитаете среднее значение нескольких образцов окружающего поля, то то, что останется, должно быть шумом, и он будет намного ниже вашего сигнала (поля, создаваемого вашим ручным магнитом).
Если вы пытаетесь получить уровень точности того же порядка, что и шум, вам понадобится большее «N» (размер выборки), возможно, как окружающего, так и желаемого сигнала, или применить еще более строгие статистические методы.
Но я сомневаюсь, что экспериментатор на видео делал именно это. Скорее всего, он находился достаточно близко к датчику и использовал достаточно сильный магнит, так что шум был незначительным по сравнению с ним. Он использовал редкоземельный магнит — а вы? У них обычно более сильное поле, чем у более распространенных керамических или стальных. Если нет, вам, возможно, придется использовать свой на меньшем расстоянии от датчика, чтобы получить похожее соотношение сигнал/шум.
Магнитное поле Земли довольно постоянно. В ваших измерениях оно будет отображаться как смещение, которое вы можете вычесть, но, конечно, оно изменится, если датчик будет вращаться.
Какой бы шум измерений вы ни видели, он определенно не исходит от Земли. Либо ваша установка находится близко к локальному источнику магнитного излучения (индукторы, провода с высоким переменным током), либо ваш датчик улавливает шум от своего источника питания. Поместите датчик подальше от источников высокого тока, запитайте его от батареек и посмотрите, сколько шума вы получите в этом случае.
- Ультразвуковая калибровка датчика под водой
- Требуются точные значения цвета RGB с помощью датчика цвета tcs3200 RGB
- Компас с компенсацией наклона Использование HMC5983 дает непоследовательный вывод
- Калибровка датчика pH
- LSM303 не может компенсировать наклон
- Направление по компасу не изменяется линейно
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
Это также можно использовать для расчетов, если вы хотите быть максимально точными. [Калькулятор магнитного поля](https://www.ngdc.noaa.gov/geomag-web/#declination), @Sener