Измерване на магнитното поле с помощта на HMC5883 и Raspberry Pi: 4 стъпки
Измерване на магнитното поле с помощта на HMC5883 и Raspberry Pi: 4 стъпки
Anonim
Image
Image

HMC5883 е цифров компас, предназначен за нискополеви магнитни сензори. Това устройство има широк диапазон на магнитно поле от +/- 8 Oe и изходна скорост 160 Hz. Сензорът HMC5883 включва драйвери на ленти за автоматично размагняване, отместване на офсета и 12-битов ADC, който позволява точност на насочване на компаса от 1 ° до 2 °. Всички I²C мини модули са проектирани да работят при 5VDC.

В този урок ще обясним подробната работа на HMC5883 с Raspberry pi и неговото програмиране, използвайки езика за програмиране java.

Стъпка 1: Изисква се хардуер:

Необходим хардуер
Необходим хардуер
Необходим хардуер
Необходим хардуер
Необходим хардуер
Необходим хардуер

Хардуерът, който е необходим за изпълнение на задачата, е както следва:

1. HMC5883

2. Малина Пи

3. I2C кабел

4. I2C щит за Raspberry Pi

5. Ethernet кабел

Стъпка 2: Свързване на хардуера:

Хардуерно свързване
Хардуерно свързване
Хардуерно свързване
Хардуерно свързване

Разделът за свързване на хардуер основно обяснява необходимите кабелни връзки между сензора и малиновото пи. Осигуряването на правилни връзки е основната необходимост, докато работите върху всяка система за желания изход. И така, необходимите връзки са както следва:

HMC5883 ще работи през I2C. Ето примерната електрическа схема, демонстрираща как да свържете всеки интерфейс на сензора.

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

Изискват се само четири връзки Vcc, Gnd, SCL и SDA щифтове и те са свързани с помощта на I2C кабел.

Тези връзки са показани на снимките по -горе.

Стъпка 3: Java код за измерване на интензитета на магнитното поле:

Java код за измерване на интензитета на магнитното поле
Java код за измерване на интензитета на магнитното поле
Java код за измерване на интензитета на магнитното поле
Java код за измерване на интензитета на магнитното поле

Предимството на използването на малинов pi е, че ви осигурява гъвкавостта на езика за програмиране, на който искате да програмирате платката, за да свържете интерфейса на сензора с нея. Възползвайки се от това предимство на тази дъска, ние демонстрираме тук нейното програмиране на Java. Java кодът за HMC5883 може да бъде изтеглен от нашата github общност, която е Dcube Store.

Освен за улеснение на потребителите, ние обясняваме кода и тук:

Като първа стъпка на кодиране трябва да изтеглите библиотеката pi4j в случай на java, защото тази библиотека поддържа функциите, използвани в кода. Така че, за да изтеглите библиотеката, можете да посетите следната връзка:

pi4j.com/install.html

Можете да копирате работещия java код за този сензор и от тук:

внос com.pi4j.io.i2c. I2CBus;

внос com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

import java.io. IOException; публичен клас HMC5883

{

public static void main (String args ) хвърля Exception

{

// Създаване на I2C шина

I2CBus шина = I2CFactory.getInstance (I2CBus. BUS_1);

// Вземете I2C устройство, HMC5883 I2C адресът е 0x1E (30)

I2CDevice устройство = Bus.getDevice (0x1E);

// Изберете регистър за конфигурация А

// Нормална конфигурация на измерване, скорост на предаване на данни o/p = 0,75 Hz

device.write (0x00, (байт) 0x60);

// Избор на регистър на режим

// Режим на непрекъснато измерване

device.write (0x02, (байт) 0x00);

Thread.sleep (500);

// Прочетете 6 байта данни от 0x03 (3)

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

байт данни = нов байт [6];

device.read (0x03, данни, 0, 6);

// Конвертиране на данните

int xMag = ((данни [0] & 0xFF) * 256 + (данни [1] & 0xFF));

ако (xMag> 32767)

{

xMag -= 65536;

}

int zMag = ((данни [2] & 0xFF) * 256 + (данни [3] & 0xFF));

ако (zMag> 32767)

{

zMag -= 65536;

}

int yMag = ((данни [4] & 0xFF) * 256 + (данни [5] & 0xFF));

ако (yMag> 32767)

{

yMag -= 65536;

}

// Извеждане на данни на екрана

System.out.printf ("Магнитно поле в ос X: %d %n", xMag);

System.out.printf ("Магнитно поле в оста Y: %d %n", yMag);

System.out.printf ("Магнитно поле в ос Z: %d %n", zMag);

}

}

Функциите Write () и read () се използват за записване на командите и съответно за четене на изхода на сензора. Следващата част илюстрира отчитането на стойностите на магнитното поле.

// Прочетете 6 байта данни от 0x03 (3)

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

байт данни = нов байт [6];

device.read (0x03, данни, 0, 6);

Изходът е показан на снимката по -горе.

Стъпка 4: Приложения:

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

HMC5883 е многофункционален модул за повърхностно монтиране, проектиран за магнитно измерване с ниско поле с цифров интерфейс за приложения като компас на ниска цена и магнитометрия. Неговата точност и прецизност от една до две степени позволява пешеходна навигация и LBS приложения.

Препоръчано: