Магнитометр / компас: инструкция, схемы и примеры использования
Используйте магнитометр для определения углов между собственными осями сенсора X, Y, Z и силовыми линиями магнитного поля Земли. Отсюда второе имя модуля — электронный компас для определения азимута.
Если вам необходимо определить положение вашего девайса в пространстве, обратите внимания на IMU-сенсор на 10 степеней свободы.
В связи с искажениями от внешних магнитных полей, откалибруйте магнитометр для работы в режиме электронного компаса.
Видеообзор
Магнитометр в обзоре IMU-модуля.
Пример работы для Arduino и XOD
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Uno.
На аппаратном уровне инерционный модуль общается с управляющей электроникой по шине I²C. Но не переживайте о битах и байтах: используйте библиотеку TroykaIMU и на выходе получите готовы данные.
Схема устройства
Подключите магнитометр к пинам питания и шины I²C — SDA и SCL платформы Arduino Uno. Для коммуникации используйте соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
С Troyka Slot Shield провода не понадобятся вовсе.
Вывод данных
В качестве примера выведем в Serial-порт значения напряженности магнитного поля по осям X, Y, Z.
Пример для Espruino
В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например, Iskra JS.
Схема устройства
Подключите магнитометр к пинам питания и шины I²C — SDA и SCL платформы Iskra JS. Для коммуникации используйте соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
С Troyka Slot Shield провода не понадобятся вовсе.
Вывод данных
В качестве примера выведем в консоль значения азимута.
Пример для Raspberry Pi
В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например, Raspberry Pi 4.
Схема устройства
Подключите магнитометр к пинам SDA и SCL шины I²C компьютера Raspberry Pi.
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Cap, которая надевается сверху на малину методом бутерброда.
Программная настройка
Вывод данных
А написать пример кода для Raspberry Pi оставим вам домашним заданием.
Элементы платы
Магнитометр/Компас на LIS3MDL
Магнитометр выполнен на чипе LIS3MDL и представляет собой миниатюрный датчик магнитного поля в трёхмерном пространстве, разработанный по технологии MEMS от компании STMicroelectronics. Адрес устройства по умолчанию равен 0x1С, но может быть изменен на 0x1E. Подробности читайте в разделе смена адреса модуля.
Регулятор напряжения
Линейный понижающий регулятор напряжения NCP698SQ33T1G обеспечивает питание MEMS-чипа и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 150 мА.
Преобразователь логических уровней
Преобразователь логических уровней PCA9306DCT необходим для сопряжения датчика с разными напряжениями логических уровней от 3,3 до 5 вольт. Другими словами сенсор совместим как с 3,3 вольтовыми платами, например, Raspberry Pi, так и с 5 вольтовыми — Arduino Uno.
Troyka-контакты
Датчик подключается к управляющей электронике через две группы Troyka-контактов:
Смена адреса модуля
Иногда в проекте необходимо использовать несколько магнитометров. Для этого на модуле предусмотрены контактная площадка. Для смена адреса капните каплей припоя на отведённую контактную площадку.
Портативный магнитометр
Магнитометр, иногда называемый также гауссметром, измеряет силу магнитного поля. Это важный инструмент для проверки постоянных магнитов и электромагнитов и для понимания формы поля конфигураций нестандартных магнитов. При достаточной чувствительности, он также может обнаружить, намагниченные железные объекты. Изменяющиеся во времени поля от двигателей и трансформаторов могут быть обнаружены, если зонд достаточно чувствительный.
В этой статье мастер-самодельщик расскажет, как сделать простой портативный магнитометр с общими компонентами: линейным датчиком Холла, Arduino, дисплеем и кнопкой. Общая стоимость составляет менее 5 евро, а чувствительность
1 Гаусс = 0,1 мТл. Расположение сенсора на телефоне не известно, и невозможно разместить сенсор внутри узких отверстий, таких как отверстие электромагнита.
Эффект Холла является распространенным способом измерения магнитных полей. Когда электроны протекают через проводник в магнитном поле, они отклоняются вбок и, таким образом, создают разность потенциалов на сторонах проводника. При правильном выборе материала и геометрии полупроводника получается измеримый сигнал, который можно усилить и обеспечить измерение одного компонента магнитного поля.
Мастер использует дешевый и широкодоступный датчик SS49E.
Шаг второй: макетная плата
Сначала мастер собирает схему на макетной плате. Подключает датчик Холла, дисплей и кнопку: датчик Холла должен быть подключен к + 5В, GND, A1 (слева направо). Дисплей должен быть подключен к GND, + 5V, A5, A4 (слева направо). При нажатии кнопки необходимо установить соединение с землей на A0.
Мастер не был поклонником 9 В аккумуляторов, они дорогие и имеют небольшую емкость. Но местный супермаркет внезапно продал перезаряжаемую версию NiMH по 1 евро каждая. Их можно легко зарядить, если подать на них питание 11 В через резистор 100 Ом в течении ночи. Для подключения батареи мастер использует контакты от старой 9 В батареи. 9 В батарея компактна. От батареи + подается на Vin Arduino, минус на GND. На выходе +5 В будет иметься регулируемое напряжение 5 В для дисплея и для датчика Холла.
Шаг пятый: калибровка
Калибровочная константа в коде соответствует числу, указанному в техническом описании (1,4 мВ / гаусс), но техническое описание допускает большой диапазон (1,0-1,75 мВ / гаусс). Чтобы получить точные результаты, нам нужно откалибровать зонд.
1%). Приведенная формула в данном случае работает если отношение длины к диаметру L / D> 10.
Далее подает питание на катушку и измеряет ток с помощью мультиметра. Для контроля тока использует источник переменного напряжения или резистор переменной нагрузки. Измеряет магнитное поле для нескольких текущих настроек и сравнивает его с показаниями.
До калибровки датчик показывал 6,04 мТл, в то время как по теории 3,50 мТл. Поэтому мастер умножил калибровочную константу в строке 18 кода на 0,58. Магнитометр теперь откалиброван.
Собираем переносной магнитометр
Перевод статьи с сайта обучающих материалов Instructables
Магнитометр, который иногда ещё называют гауссометром, измеряет силу магнитного поля [в данном случае магнитную индукцию / прим. перев.]. Это прибор, необходимый при измерении силы постоянных магнитов и электромагнитов, а также для установления формы поля нетривиальных комбинаций из магнитов. Он достаточно чувствительный для того, чтобы определить намагниченность металлических предметов. В случае, если зонд будет работать достаточно быстро, он сможет определять изменяющиеся во времени поля от моторов и трансформаторов.
Шаг 1: датчик Холла
Эффект Холла часто применяется для измерения магнитных полей. Когда электроны проходят через проводник, помещённый в магнитное поле, их относит в сторону, в результате чего в проводнике появляется поперечная разность потенциалов. Правильно выбрав материал и геометрию полупроводника, можно получить измеряемый сигнал, который затем можно будет усилить и выдать измерение одной компоненты магнитного поля.
Я использую SS49E, поскольку он дешёвый и доступный. Что стоит отметить из его документации:
Шаг 2: Требуемые материалы
Шаг 3: Первая версия – с использованием доски для прототипирования
Сначала всегда собирайте прототип, чтобы проверить работу всех компонентов и софта! Подключение видно на картинке: датчик Холла соединяется с контактами Arduino +5V, GND, A1 (слева направо). Дисплей соединяется с GND, +5V, A5, A4 (слева направо). Кнопка при нажатии должна замыкать землю и A0.
Код написан в Arduino IDE v. 1.8.10. Требуется установка библиотек Adafruit_SSD1306 и Adafruit_GFX.
Если всё сделано правильно, то дисплей должен выдавать значения DC и AC.
Шаг 4: Немного о коде
Если вам неинтересен код, эту часть можно пропустить.
Ключевая особенность кода состоит в том, что магнитное поле измеряется 2000 раз подряд. На это уходит 0,2 – 0,3 сек. Отслеживая сумму и квадрат суммы измерений, можно вычислять среднее и стандартное отклонения, которые выдаются как DC и AC. Усредняя по большому количеству измерений мы увеличиваем точность, теоретически на √2000 ≈ 45. Получается, что используя 10-битное АЦП, мы получаем точность 15-битного АЦП! И это имеет значение: 1 шаг АЦП – 4 мВ, то есть,
0,3 мТл. Благодаря усреднению, мы уменьшаем ошибку от 0,3 мТл до 0,01 мТл.
В качестве бонуса мы получаем стандартное отклонение, определяя таким образом изменяющееся поле. Поле, колеблющееся с частотой 50 Гц проходит порядка 10 циклов за время измерения, поэтому можно измерить величину AC.
У меня после компиляции получилась следующая статистика: Sketch uses 16852 bytes (54%) of program storage space. Maximum is 30720 bytes. Global variables use 352 bytes (17%) of dynamic memory, leaving 1696 bytes for local variables. Maximum is 2048 bytes.
Большую часть места занимают библиотеки Adafruit, однако ещё полно места для добавления функциональности.
Шаг 5: Готовим зонд
Зонд лучше всего закреплять на конце узкой трубки: так его просто будет помещать и удерживать в узких местах. Подойдёт любая трубка из немагнитного материала. Мне идеально подошла старая шариковая ручка.
Подготовьте три тонких гибких провода чуть длиннее трубки. В моём кабеле логики в цветах проводов нет (оранжевый +5 В, красный 0 В, серый – сигнал), просто так мне их проще запомнить.
Чтобы использовать зонд с прототипом, припаяйте кусочки проводов на конец кабеля и заизолируйте их термоусадкой. Позже их можно отрезать и припаять провода прямо к Arduino.
Шаг 6: Собираем переносной прибор
Батарейка на 9В, OLED-экран и Arduino Nano с комфортом умещаются внутри большой коробки Tic-Tac. Её преимущество в прозрачности – экран легко читается, даже находясь внутри. Все фиксированные компоненты (зонд, выключатель и кнопка) ставятся на крышку, чтобы всё можно было вынимать из коробки для замены батареи или обновления кода.
Я никогда не любил батарейки на 9В – у них высокая цена и малая ёмкость. Но в моём супермаркете внезапно стали продавать их перезаряжаемую версию NiMH по €1, и я обнаружил, что их легко зарядить, если подать 11 В через резистор на 100 Ом и оставить на ночь. Я заказал себе дешёвые разъёмы для батареек, но мне их так и не прислали, поэтому я разобрал старую батарейку на 9 В, чтобы сделать из неё коннектор. Плюс батарейки на 9В в её компактности, и в том, что на ней хорошо работает Arduino при подключении её к Vin. На +5 В будет регулируемое напряжение в 5 В, которое понадобится для OLED и датчика Холла.
Датчик Холла, экран и кнопка подсоединяются так же, как было на прототипе. Добавляется только кнопка выключения, между батарейкой и Arduino.
Шаг 7: Калибровка
Калибровочная константа в коде соответствует числу, прописанному в документации (1,4 мВ/Гс), однако в документации разрешён диапазон этого значения (1.0-1.75 мВ/Гс). Чтобы получать точные результаты, нужно откалибровать зонд.
Чтобы собрать подходящий соленоид, возьмите полую цилиндрическую трубу, длина которой в 10 раз больше диаметра, и сделайте намотку из изолированного провода. Я использовал ПВХ-трубку с внешним диаметром 23 мм и сделал 566 витков, протянувшихся на 20,2 см, что даёт нам n = 28/см = 2800 / м. Длина провода 42 м, сопротивление – 10 Ом.
Подайте питание на катушку и измерьте ток мультиметром. Используйте либо регулируемый источник тока, либо переменный резистор, чтобы управлять током. Измерьте магнитное поле для разных значений тока и сравните показания.
Перед калибровкой я получил 6,04 мТл/A, хотя по теории должно было быть 3,50 мТл/A. Поэтому я умножил константу калибровки в 18-й строчке кода на 0,58. Готово – магнитометр откалиброван!
Схемы металлоискателей MD4U
Сборка, настройка, обсуждение, теория и практика построения металлоискателей.
Часовой пояс: UTC + 3 часа
Самодельный протонный МАГНИТОМЕТР
Зарегистрирован: Чт: 10 ноя 2005 17:43
Сообщения: 156
Откуда: VIIPURI
Вы можете отключить эти сообщения.
Зарегистрирован: Сб: 11 фев 2006 0:18
Сообщения: 898
Откуда: Воронеж
_________________ |
Зарегистрирован: Чт: 10 ноя 2005 17:43
Сообщения: 156
Откуда: VIIPURI
Зарегистрирован: Сб: 11 фев 2006 0:18
Сообщения: 898
Откуда: Воронеж
_________________ |
Зарегистрирован: Чт: 10 ноя 2005 17:43
Сообщения: 156
Откуда: VIIPURI
Зарегистрирован: Сб: 11 фев 2006 0:18
Сообщения: 898
Откуда: Воронеж
_________________ |
Почётный |
Зарегистрирован: Вт: 21 фев 2006 18:31
Сообщения: 231
Откуда: Северный Кавказ
Зарегистрирован: Сб: 11 фев 2006 0:18
Сообщения: 898
Откуда: Воронеж
_________________ |
Зарегистрирован: Чт: 03 ноя 2005 14:20
Сообщения: 372
Откуда: РБ, Гомель
_________________ |
Зарегистрирован: Сб: 24 дек 2005 22:40
Сообщения: 154
Откуда: Беларусь
_________________ | |
| | ||||
Зарегистрирован: Вт: 21 фев 2006 18:31 |
| ||||
Зарегистрирован: Сб: 05 ноя 2005 0:45 | | ||||
Зарегистрирован: Чт: 03 ноя 2005 14:20 |
| ||||
Зарегистрирован: Чт: 10 ноя 2005 17:43 | | ||||
Зарегистрирован: Чт: 10 ноя 2005 17:43 | | ||||
Зарегистрирован: Пн: 24 апр 2006 8:52 | | ||||
Зарегистрирован: Пт: 10 ноя 2006 12:22 | | ||||
Зарегистрирован: Вт: 12 дек 2006 13:21 | | ||||
Зарегистрирован: Чт: 03 ноя 2005 14:20 |
| ||||
Зарегистрирован: Вт: 12 дек 2006 13:21 | | ||||
Зарегистрирован: Чт: 03 ноя 2005 14:20 |
|