Подключение магнитометра HMC5883L к Raspberry Pi


В данной статье мы рассмотрим как подключить трехосевой цифровой магнитометр HMC5883L к плате Raspberry Pi и использовать его возможности с помощью Python. HMC5883L выделяется как оптимальный выбор для приложений цифрового компаса благодаря своим трехмерным функциям магнитометра, которые позволяют выполнять точные измерения напряженности и ориентации магнитного поля. Это делает его бесценным инструментом для точного определения магнитного севера Земли.

Подключение магнитометра HMC5883L к Raspberry Pi

После интеграции магнитометра HMC5883L с Raspberry Pi мы сможем получать показания компаса и определять магнитное поле по осям X, Y и Z в микротеслах (мкТл). На основе этих данных определение направления в градусах становится простым вычислением. Мы проведем вас через каждый шаг процесса, гарантируя, что вы сможете без проблем выполнить эти задачи с помощью Python на вашем Raspberry Pi.

Ранее на нашем сайте мы рассматривали подключение магнитометра HMC5883L к плате Arduino.

Необходимые компоненты

  1. Плата Raspberry Pi 4 Model B (или другая) (купить на AliExpress).
  2. Магнитометр (Magnetometer sensor) HMC5883L (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

3-осевой компас/магнитометр HMC5883L 

HMC5883L — это цифровой компас, разработанный Honeywell. Это многочиповый модуль поверхностного монтажа, специально разработанный для обнаружения слабых магнитных полей. Он особенно эффективен в предоставлении данных о направлении, что делает его обычным выбором для систем навигации и позиционирования.

3-осевой компас/магнитометр HMC5883L 

Конструкция HMC5883L основана на анизотропной магниторезистивной (AMR) технологии, которая облегчает точное измерение магнитных полей. Она включает в себя трехосевые датчики с полевой емкостью от ±1,3 до ±8,1 Гаусс. Это означает его способность измерять магнитные поля по трем различным осям (X, Y и Z), что позволяет ему определять направление магнитного поля Земли в трехмерном контексте.

HMC5883L оснащен многочисленными собственными функциями, которые упрощают его включение в различные системы. Среди них — интегрированный АЦП (аналого-цифровой преобразователь), предлагающий 12-битный вывод данных, и последовательный интерфейс шины I2C. Этот интерфейс используется для связи с устройством, позволяя ему передавать данные на микроконтроллер или другой процессорный блок.

Модуль магнитометра HMC5883L состоит из интегральной схемы (ИС) магнитометра HMC5883L, ИС регулятора напряжения, резисторов и конденсаторов, все это объединено в интегральную схему. Он использует ИС регулятора напряжения XC6206P332MR (662K).

Более подробную информацию о данном модуле можно посмотреть в техническом описании HMC5883L.

Технические характеристики HMC5883L

  • Рабочее напряжение: от 3 В до 6 В постоянного тока.
  • Рабочий ток: 100-130 мкА.
  • Интерфейс I2C.
  • Точность курса: 1-2 градуса.
  • Интегрированный 12-битный АЦП.
  • Максимальная скорость передачи данных 160 Гц.
  • Диапазон от -8 до +8 Гаусс
  • Скорость вывода данных: 0,75, 1,5, 3, 7,5, 15 Гц

Распиновка HMC5883L

Модуль HMC5883L имеет пять контактов, как показано на рисунке ниже.

Распиновка HMC5883L

Назначение его контактов следующее:

  1. VCC: Это контакт питания. Требуется постоянное напряжение, обычно 3 В - 6 В.
  2. GND: Это заземляющий контакт (земля).
  3. SCL: Это линия синхронизации для интерфейса I2C.
  4. SDA: Это линия данных для интерфейса I2C.
  5. DRDY: Это вывод Data Ready, который переходит в низкий уровень, когда доступны новые данные. Он необязателен и не всегда используется в базовых приложениях.

Отображение регистров и связь по интерфейсу I2C

Адрес регистра Имя регистра Тип доступа
00 Регистр конфигурации A Чтение/Запись
01 Регистр конфигурации B Чтение/Запись
02 Регистр выбора режима Чтение/Запись
03 Выходные данные X регистра MSB Чтение
04 Выходные данные X регистра LSB Чтение
05 Выходные данные Y регистра MSB Чтение
06 Выходные данные Y регистра LSB Чтение
07 Выходные данные Z регистра MSB Чтение
08 Выходные данные Z регистра LSB Чтение
09 Регистр состояния Чтение
10 Регистр идентификации А Чтение
11 Регистр идентификации B Чтение
12 Регистр идентификации C Чтение

Магнитометр HMC5883L использует различные внутренние регистры для настройки и получения данных:

  1. Регистр конфигурации A (0x00): настраивает работу устройства, включая скорость выходных данных и конфигурацию измерений.
  2. Регистр конфигурации B (0x01): устанавливает усиление и чувствительность устройства.
  3. Регистр режима (0x02): выбирает режим работы, например непрерывное измерение, одиночное измерение или режим ожидания.
  4. Регистры выходных данных X (0x03 и 0x04): хранят показания датчика оси X.
  5. Регистры выходных данных Y (0x05 и 0x06): хранят показания датчика оси Y.
  6. Регистры выходных данных Z (0x07 и 0x08): хранят показания датчика оси Z.
  7. Регистр состояния (0x09): содержит флаги состояния вывода данных.
  8. Регистры идентификации (0x0A, 0x0B, 0x0C): используются для идентификации устройства.

HMC5883L использует протокол связи I2C, функционируя как подчиненное устройство (Slave). Его назначенный адрес устройства I2C — 0x1E. Соответствующие адреса для его операций чтения и записи следующие:

  • Для операций записи (SLA+W) адрес — 0x3C.
  • Для операций чтения (SLA+R) адрес — 0x3D.

Схема проекта

Схема подключения магнитометра HMC5883L к плате Raspberry Pi представлена на следующем рисунке.

Схема подключения магнитометра HMC5883L к плате Raspberry Pi

Подключите контакты VCC и GND магнитометра HMC5883L к контактам 3,3 В и GND Raspberry Pi. Аналогично подключите контакты SDA и SCL магнитометра к контактам SDA (GPIO2) и SCL (GPIO3) Raspberry Pi соответственно.

Внешний вид собранной на макетной плате конструкции проекта

Настройка Raspberry Pi

Прежде чем перейти непосредственно к программированию на Python, нам необходимо настроить плату Raspberry Pi.

1. Включите I2C на Raspberry Pi:

  • Откройте терминал и введите sudo raspi-config.
  • Перейдите к Interfacing OptionsI2Cи включите его.
  • Перезагрузите Raspberry Pi.

2. Установите необходимые пакеты Python:

Установка необходимых пакетов Python

3. Обнаружение устройства :
После подключения HMC5883L вы можете обнаружить его с помощью следующей команды:

Определение I2C адреса магнитометра HMC5883L

Если все подключено правильно, в списке должен появиться адрес, который является адресом по умолчанию для HMC5883L.

Код Python для взаимодействия HMC5883L с Raspberry Pi

Вот код Python для сопряжения магнитометра HC5883L с платой Raspberry Pi 4. Скопируйте следующий код и вставьте его в Thonny IDE. Затем сохраните его под любым именем.

Этот простой скрипт Python будет считывать данные с HMC5883L.

Этот скрипт инициализирует HMC5883L в режиме непрерывного измерения, а затем непрерывно считывает и печатает значения магнитометра X, Y и Z. Данные могут потребовать калибровки или корректировки в зависимости от вашего приложения и окружающих магнитных полей.

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

Тестирование работы проекта

Вы можете запустить приведенный выше скрипт Python и оболочка Thonny Shell начнет отображать показания магнитометра в микротеслах и углы направления в градусах.

Тестирование работы проекта (часть 1)

Чтобы наблюдать изменение значений магнитного поля, поднесите к датчику любой магнитный материал или магнит. Вы увидите резкое изменение показаний магнитного поля. Угол направления можно изменять просто вращая датчик.

Тестирование работы проекта (часть 2)

Помните, что вычисленное направление будет относительно магнитного севера Земли, а не истинного севера. Это различие важно, если вы ориентируетесь на основе направления.

Разница между магнитным севером и истинным севером называется магнитным склонением, и она меняется в зависимости от вашего географического положения. Возможно, вам придется скорректировать направление на магнитное склонение в зависимости от того, где вы находитесь.

(Проголосуй первым!)
Загрузка...
31 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *