Рубрики
Проекты на Raspberry Pi

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

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

После интеграции магнитометра 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. Это многочиповый модуль поверхностного монтажа, специально разработанный для обнаружения слабых магнитных полей. Он особенно эффективен в предоставлении данных о направлении, что делает его обычным выбором для систем навигации и позиционирования.

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

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

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

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

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

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

Распиновка 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 представлена на следующем рисунке.

Подключите контакты 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

В статье в технических характеристиках HMC5883L в части напряжения питания есть ошибка: максимальное напряжение питания 4.8 В.

Из документации:
Min Max
Supply Voltage VDD -0.3 4.8 Volts
Supply Voltage VDDIO -0.3 4.8 Volts

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

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