Taula de continguts:

Mesura del camp magnètic mitjançant HMC5883 i Arduino Nano: 4 passos
Mesura del camp magnètic mitjançant HMC5883 i Arduino Nano: 4 passos

Vídeo: Mesura del camp magnètic mitjançant HMC5883 i Arduino Nano: 4 passos

Vídeo: Mesura del camp magnètic mitjançant HMC5883 i Arduino Nano: 4 passos
Vídeo: Hubble - 15 years of discovery 2024, Juliol
Anonim
Image
Image

La HMC5883 és una brúixola digital dissenyada per a la detecció magnètica de camp baix. Aquest dispositiu té un ampli rang de camps magnètics de +/- 8 Oe i una velocitat de sortida de 160 Hz. El sensor HMC5883 inclou controladors automàtics de corretges de desmagnetització, cancel·lació de compensació i un ADC de 12 bits que permet una precisió de capçalera de la brúixola d’1 a 2 °. Tots els mini mòduls I²C estan dissenyats per funcionar a 5VDC.

En aquest tutorial, explicarem el funcionament detallat de l'HMC5883 amb Arduino nano.

Pas 1: maquinari necessari:

Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari

Els materials que necessitem per assolir el nostre objectiu inclouen els components de maquinari següents:

1. HMC5883

2. Arduino Nano

3. Cable I2C

4. Escut I2C per a Arduino Nano

Pas 2: connexió de maquinari:

Connexió de maquinari
Connexió de maquinari
Connexió de maquinari
Connexió de maquinari

La secció de connexió de maquinari explica bàsicament les connexions de cablejat necessàries entre el sensor i l'arduino nano. Garantir connexions correctes és la necessitat bàsica mentre es treballa en qualsevol sistema per a la sortida desitjada. Per tant, les connexions necessàries són les següents:

L'HMC5883 funcionarà sobre I2C. Aquí teniu un exemple de diagrama de cablejat, que demostra com connectar cada interfície del sensor.

Fora de la caixa, el tauler està configurat per a una interfície I2C, per tant, us recomanem que utilitzeu aquesta connexió si no sou agnòstic. Tot el que necessiteu són quatre cables.

Només es necessiten quatre connexions pins Vcc, Gnd, SCL i SDA i es connecten amb l'ajut del cable I2C.

Aquestes connexions es mostren a les imatges anteriors.

Pas 3: Codi Arduino per mesurar la intensitat del camp magnètic:

Codi Arduino per mesurar la intensitat del camp magnètic
Codi Arduino per mesurar la intensitat del camp magnètic
Codi Arduino per mesurar la intensitat del camp magnètic
Codi Arduino per mesurar la intensitat del camp magnètic

Comencem ara amb el codi Arduino.

Mentre s’utilitza el mòdul de sensor amb l’Arduino, incloem la biblioteca Wire.h. La biblioteca "Wire" conté les funcions que faciliten la comunicació i2c entre el sensor i la placa Arduino.

A continuació es proporciona tot el codi Arduino per a la comoditat de l’usuari:

#incloure

// L'adreça I2C HMC5883 és 0x1E (30)

#define Addr 0x1E

configuració nul·la ()

{

// Inicialitzar la comunicació I2C com a MASTER

Wire.begin ();

// Inicialitzar la comunicació en sèrie, establir la velocitat de transmissió = 9600

Serial.begin (9600);

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Selecciona configurar registre A

Wire.write (0x00);

// Estableix la configuració de mesurament normal, velocitat de sortida de dades = 0,75 Hz

Wire.write (0x60);

// Atura la transmissió I2C

Wire.endTransmission ();

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Selecciona el registre de mode

Wire.write (0x02);

// Estableix un mesurament continu

Wire.write (0x00);

// Atura la transmissió I2C

Wire.endTransmission ();

retard (300);

}

bucle buit ()

{

dades int sense signar [6];

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Selecciona el registre de dades

Wire.write (0x03);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 6 bytes de dades

Wire.requestFrom (Addr, 6);

// Llegiu 6 bytes de dades

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

if (Wire.available () == 6)

{

dades [0] = Wire.read ();

dades [1] = Wire.read ();

dades [2] = Wire.read ();

dades [3] = Wire.read ();

dades [4] = Wire.read ();

dades [5] = Wire.read ();

}

retard (300);

// Converteix les dades

int xMag = ((dades [0] * 256) + dades [1]);

int zMag = ((dades [2] * 256) + dades [3]);

int yMag = ((dades [4] * 256) + dades [5]);

// Sortida de dades al monitor sèrie

Serial.print ("Camp magnètic a l'eix X:");

Serial.println (xMag);

Serial.print ("Camp magnètic a l'eix Y:");

Serial.println (yMag);

Serial.print ("Camp magnètic a l'eix Z:");

Serial.println (zMag);

retard (300);

}

A la biblioteca de cables, s’utilitzen Wire.write () i Wire.read () per escriure les ordres i llegir la sortida del sensor. A continuació, una part del codi il·lustra la lectura de la sortida del sensor.

// Llegiu 6 bytes de dades // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); dades [1] = Wire.read (); dades [2] = Wire.read (); dades [3] = Wire.read (); dades [4] = Wire.read (); dades [5] = Wire.read (); }

Serial.print () i Serial.println () s’utilitzen per mostrar la sortida del sensor al monitor sèrie de l’IDE Arduino.

La sortida del sensor es mostra a la imatge superior.

Pas 4: aplicacions:

Aplicacions
Aplicacions

HMC5883 és un mòdul multi-xip de muntatge superficial dissenyat per a la detecció magnètica de camp baix amb una interfície digital per a aplicacions com el compàs de baix cost i la magnetometria. La seva precisió i precisió d’un a dos graus d’alt nivell permet la navegació per a vianants i les aplicacions LBS.

Recomanat: