Sommario:

Misurazione del campo magnetico utilizzando HMC5883 e fotone particellare: 4 passaggi
Misurazione del campo magnetico utilizzando HMC5883 e fotone particellare: 4 passaggi

Video: Misurazione del campo magnetico utilizzando HMC5883 e fotone particellare: 4 passaggi

Video: Misurazione del campo magnetico utilizzando HMC5883 e fotone particellare: 4 passaggi
Video: Come costruire una bussola con Arduino e un magnetometro HMC5883 (QMC5883) - Video 461 2024, Novembre
Anonim
Image
Image

L'HMC5883 è una bussola digitale progettata per il rilevamento magnetico a basso campo. Questo dispositivo ha un'ampia gamma di campi magnetici di +/-8 Oe e una velocità di uscita di 160 Hz. Il sensore HMC5883 include driver della cinghia di smagnetizzazione automatica, cancellazione dell'offset e un ADC a 12 bit che consente una precisione di rotta della bussola da 1° a 2°. Tutti i Mini Moduli I²C sono progettati per funzionare a 5VDC.

In questo tutorial, spiegheremo il funzionamento dettagliato di HMC5883 con fotone particellare. Particle photon è una scheda che facilita l'invio e la ricezione di dati dal sito Web, che supporta la funzionalità di base di Internet Of Things (IoT).

Passaggio 1: hardware richiesto:

Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto

I materiali di cui abbiamo bisogno per raggiungere il nostro obiettivo includono i seguenti componenti hardware:

1. HMC5883

2. Fotone particellare

3. Cavo I2C

4. Scudo I2C per fotoni di particelle

Passaggio 2: collegamento hardware:

Collegamento hardware
Collegamento hardware
Collegamento hardware
Collegamento hardware

La sezione sui collegamenti hardware spiega fondamentalmente le connessioni di cablaggio richieste tra il sensore e il fotone della particella. Garantire connessioni corrette è la necessità di base mentre si lavora su qualsiasi sistema per l'output desiderato. Quindi, i collegamenti necessari sono i seguenti:

L'HMC5883 funzionerà su I2C. Ecco lo schema elettrico di esempio, che mostra come cablare ciascuna interfaccia del sensore.

Di default, la scheda è configurata per un'interfaccia I2C, quindi consigliamo di utilizzare questo collegamento se sei altrimenti agnostico. Tutto ciò di cui hai bisogno sono quattro fili!

Sono necessarie solo quattro connessioni pin Vcc, Gnd, SCL e SDA e questi sono collegati con l'aiuto del cavo I2C.

Queste connessioni sono mostrate nelle immagini sopra.

Passaggio 3: codice per misurare l'intensità del campo magnetico:

Codice per misurare l'intensità del campo magnetico
Codice per misurare l'intensità del campo magnetico

Cominciamo ora con il codice particellare.

Durante l'utilizzo del modulo sensore con Arduino, includiamo la libreria application.h e spark_wiring_i2c.h. La libreria "application.h" e spark_wiring_i2c.h contiene le funzioni che facilitano la comunicazione i2c tra il sensore e la particella.

L'intero codice particella è riportato di seguito per comodità dell'utente:

#includere

#includere

// L'indirizzo I2C dell'HMC5883 è 0x1E(30)

#define Addr 0x1E

int xMag = 0, yMag = 0, zMag = 0;

configurazione nulla()

{

// Imposta variabile

Particle.variable("i2cdevice", "HMC5883");

Particle.variable("xMag", xMag);

Particle.variable("yMag", yMag);

Particle.variable("zMag", zMag);

// Inizializza la comunicazione I2C come MASTER

Wire.begin();

// Inizializza la comunicazione seriale, imposta la velocità di trasmissione = 9600

Serial.begin(9600);

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona configurare il registro A

Wire.write(0x00);

// Imposta la configurazione di misurazione normale, velocità di uscita dati = 0,75 Hz

Wire.write(0x60);

// Interrompi trasmissione I2C

Wire.endTransmission();

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona modalità registro

Wire.write(0x02);

// Imposta misurazione continua

Wire.write(0x00);

// Interrompi trasmissione I2C

Wire.endTransmission();

ritardo(300);

}

ciclo vuoto()

{

dati int non firmati[6];

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona registro dati

Wire.write(0x03);

// Interrompi trasmissione I2C

Wire.endTransmission();

// Richiedi 6 byte di dati

Wire.requestFrom(Addr, 6);

// Legge 6 byte di dati

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

if(Filo.disponibile() == 6)

{

data[0] = Wire.read();

data[1] = Wire.read();

data[2] = Wire.read();

data[3] = Wire.read();

data[4] = Wire.read();

data[5] = Wire.read();

}

ritardo(300);

// Converti i dati

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

if(xMag > 32767)

{

xMag -= 65536;

}

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

if(zMag > 32767)

{

zMag -= 65536;

}

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

if(yMag > 32767)

{

yMag -= 65536;

}

// Invia i dati alla dashboard

Particle.publish("Campo magnetico nell'asse X: ", String(xMag));

ritardo(1000);

Particle.publish("Campo magnetico nell'asse Y: ", String(yMag));

ritardo(1000);

Particle.publish("Campo magnetico nell'asse Z: ", String(zMag));

ritardo(1000);

}

La funzione Particle.variable() crea le variabili per memorizzare l'output del sensore e la funzione Particle.publish() visualizza l'output sulla dashboard del sito.

L'uscita del sensore è mostrata nell'immagine sopra come riferimento.

Passaggio 4: applicazioni:

Applicazioni
Applicazioni

HMC5883 è un modulo multi-chip a montaggio superficiale progettato per il rilevamento magnetico a basso campo con un'interfaccia digitale per applicazioni come la bussola e la magnetometria a basso costo. La sua accuratezza e precisione di alto livello da uno a due gradi consente la navigazione pedonale e le applicazioni LBS.

Consigliato: