Come Collegare La Bussola Digitale HMC5883 Ad Arduino

Come Collegare La Bussola Digitale HMC5883 Ad Arduino
Come Collegare La Bussola Digitale HMC5883 Ad Arduino
Anonim

Consideriamo il collegamento del modulo GY-273 con la bussola digitale a tre assi Honeywell HMC5883L. Questo microcircuito può essere utilizzato per misurazioni magnetometriche, in navigazione, se non è richiesta un'elevata precisione di misurazione (con un errore di 1 … 2 gradi e possibilità di calibrazione). Il dispositivo è collegato tramite l'interfaccia I2C.

Necessario

  • - Bussola digitale HMC5883;
  • -Arduino;
  • - scheda prototipo e cavi di collegamento;
  • - informatico.

Istruzioni

Passo 1

Queste sono le caratteristiche principali di una bussola magnetica:

- Sensore a 3 assi magneticamente sensibile;

- ADC a 12 bit con risoluzione di 2 mGs (milligauss);

- autotest integrato;

- bassa tensione di esercizio e basso consumo;

- interfaccia digitale I2C;

- alta frequenza di polling - fino a 160 volte al secondo (il tempo di una misurazione è di circa 6 ms);

- la precisione nella determinazione della direzione è 1°… 2°;

- utilizzabile in forti campi magnetici (fino a ± 8 Gauss).

Lo schema per il collegamento del sensore magnetico HMC5883L ad Arduino è mostrato in figura. È molto compatto e semplice, perché L'interfaccia I2C a due fili è ottima perché richiede poche connessioni. Puoi usare una breadboard.

Passo 2

Dovrebbe assomigliare alla foto. Collegherò anche un analizzatore di stati logici ai bus SCL e SDA per monitorare lo scambio di informazioni tra Arduino e il modulo HMC5883. Non è obbligatorio.

Passaggio 3

Come prima conoscenza, proviamo a leggere i registri di identificazione 10 (0xA), 11 (0xB) e 12 (0xC) della bussola digitale HMC5883 e scriviamo uno schizzo come in figura. Viene fornito con commenti dettagliati.

Schizzo che legge i registri di identificazione dell'HMC5883
Schizzo che legge i registri di identificazione dell'HMC5883

Passaggio 4

Il segnale ottenuto con l'analizzatore logico sarà come mostrato nell'illustrazione.

Cosa significa? Il primo byte è l'indirizzo I2C con cui noi (il dispositivo master, Arduino) stabiliamo la comunicazione (high 7 bit 0x1E), e la modalità di scrittura (low bit - 0x0); il numero è 0x3C. Il secondo byte è il numero 0xA, che abbiamo scritto all'indirizzo 0x1E e il bit di conferma dal sensore HMC5883L, che è lo slave. Questo è il numero di registro da cui inizieremo a leggere i dati. Questo conclude la prima transazione. Inizia il prossimo. Il terzo byte è una richiesta di lettura dallo slave (i 7 bit più significativi sono l'indirizzo 0x1E, l'ottavo bit è l'operazione di lettura 0x1; il numero risultante è 0x3D). Gli ultimi 3 byte sono la risposta dello slave HMC5883L dai registri 0xA, 0xB e 0xC, rispettivamente.

La bussola digitale HMC5883L si muove attraverso i registri in modo indipendente durante la lettura continua. quelli. non è necessario (ma non è vietato) specificare ogni volta il caso. Ad esempio, se invece di 0xA scrivessimo 0x3 e leggessimo 10 volte, otterremmo valori in 10 registri, partendo dal 3° al 12°.

E quali sono questi tre numeri - 0x48, 0x34, 0x33? Utilizzando nuovamente la scheda tecnica della bussola digitale HMC5883L, vedremo che questi sono i valori di default per i tre registri di identificazione.

Diagramma temporale dello scambio I2C con bussola digitale HMC5883
Diagramma temporale dello scambio I2C con bussola digitale HMC5883

Passaggio 5

Per ottenere i dati della bussola digitale sul campo magnetico, è necessario leggere i registri da 3 a 8, proprio come leggiamo i registri di identificazione. L'unica differenza è che i dati per ciascuno dei tre assi X, Y e Z sono presentati come numeri a doppio byte. Convertendoli in numeri decimali, otteniamo le direzioni lungo ciascuno dei tre assi.

Consigliato: