Оглавление:

Измерение магнитного поля с использованием HMC5883 и Arduino Nano: 4 шага
Измерение магнитного поля с использованием HMC5883 и Arduino Nano: 4 шага

Видео: Измерение магнитного поля с использованием HMC5883 и Arduino Nano: 4 шага

Видео: Измерение магнитного поля с использованием HMC5883 и Arduino Nano: 4 шага
Видео: Геомагнитный поиск металла 2024, Июль
Anonim
Image
Image

HMC5883 - цифровой компас, разработанный для измерения магнитного поля в слабом поле. Это устройство имеет широкий диапазон магнитного поля +/- 8 Э и выходную частоту 160 Гц. Датчик HMC5883 включает в себя приводы ремня с автоматическим размагничиванием, отмену смещения и 12-разрядный АЦП, обеспечивающий точность направления по компасу от 1 ° до 2 °. Все мини-модули I²C рассчитаны на работу при 5 В постоянного тока.

В этом руководстве мы собираемся подробно объяснить работу HMC5883 с Arduino nano.

Шаг 1: Требуемое оборудование:

Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование

Материалы, которые нам нужны для достижения нашей цели, включают следующие компоненты оборудования:

1. HMC5883

2. Arduino Nano

3. Кабель I2C

4. I2C Shield для Arduino Nano.

Шаг 2: Подключение оборудования:

Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования

В разделе «Подключение оборудования» в основном объясняются проводные соединения, необходимые между датчиком и Arduino nano. Обеспечение правильных соединений является основной необходимостью при работе с любой системой для достижения желаемого результата. Итак, необходимые подключения следующие:

HMC5883 будет работать по I2C. Вот пример схемы подключения, демонстрирующий, как подключить каждый интерфейс датчика.

Изначально плата настроена для интерфейса I2C, поэтому мы рекомендуем использовать это подключение, если вы не сторонник этого. Все, что вам нужно, это четыре провода!

Требуются только четыре соединения, выводы Vcc, Gnd, SCL и SDA, которые подключаются с помощью кабеля I2C.

Эти соединения показаны на рисунках выше.

Шаг 3: Код Arduino для измерения напряженности магнитного поля:

Код Arduino для измерения напряженности магнитного поля
Код Arduino для измерения напряженности магнитного поля
Код Arduino для измерения напряженности магнитного поля
Код Arduino для измерения напряженности магнитного поля

Давайте теперь начнем с кода Arduino.

При использовании сенсорного модуля с Arduino мы включаем библиотеку Wire.h. Библиотека Wire содержит функции, которые облегчают обмен данными i2c между датчиком и платой Arduino.

Полный код Arduino приведен ниже для удобства пользователя:

#включают

// Адрес I2C HMC5883 0x1E (30)

#define Addr 0x1E

установка void ()

{

// Инициализируем связь I2C как МАСТЕР

Wire.begin ();

// Инициализируем последовательную связь, устанавливаем скорость передачи = 9600

Serial.begin (9600);

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр конфигурации A

Wire.write (0x00);

// Устанавливаем нормальную конфигурацию измерения, скорость вывода данных = 0,75 Гц

Wire.write (0x60);

// Остановка передачи I2C

Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр режима

Wire.write (0x02);

// Устанавливаем непрерывное измерение

Wire.write (0x00);

// Остановка передачи I2C

Wire.endTransmission ();

задержка (300);

}

пустой цикл ()

{

данные типа int без знака [6];

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр данных

Wire.write (0x03);

// Остановка передачи I2C

Wire.endTransmission ();

// Запрос 6 байтов данных

Wire.requestFrom (Адрес, 6);

// Чтение 6 байтов данных

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

если (Wire.available () == 6)

{

данные [0] = Wire.read ();

данные [1] = Wire.read ();

данные [2] = Wire.read ();

данные [3] = Wire.read ();

данные [4] = Wire.read ();

данные [5] = Wire.read ();

}

задержка (300);

// Конвертируем данные

int xMag = ((данные [0] * 256) + данные [1]);

int zMag = ((данные [2] * 256) + данные [3]);

int yMag = ((данные [4] * 256) + данные [5]);

// Выводим данные на последовательный монитор

Serial.print («Магнитное поле по оси X:»);

Serial.println (xMag);

Serial.print («Магнитное поле по оси Y:»);

Serial.println (yMag);

Serial.print («Магнитное поле по оси Z:»);

Serial.println (zMag);

задержка (300);

}

В библиотеке проводов Wire.write () и Wire.read () используются для записи команд и чтения выходного сигнала датчика. Следующая часть кода иллюстрирует считывание выходного сигнала датчика.

// Чтение 6 байтов данных // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); данные [1] = Wire.read (); данные [2] = Wire.read (); данные [3] = Wire.read (); данные [4] = Wire.read (); данные [5] = Wire.read (); }

Serial.print () и Serial.println () используются для отображения выходных данных датчика на последовательном мониторе Arduino IDE.

Выход датчика показан на картинке выше.

Шаг 4: Приложения:

Приложения
Приложения

HMC5883 - это многокристальный модуль для поверхностного монтажа, предназначенный для измерения магнитного поля в слабом поле с цифровым интерфейсом для таких приложений, как недорогой компас и магнитометрия. Его точность и точность на уровне от одного до двух градусов позволяют использовать пешеходную навигацию и приложения LBS.

Рекомендуемые: