Come Collegare La Bussola Digitale HMC5883 Ad Arduino

Sommario:

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

Video: Come Collegare La Bussola Digitale HMC5883 Ad Arduino

Video: Come Collegare La Bussola Digitale HMC5883 Ad Arduino
Video: hmc5883l компас arduino, датчик магнитометра, навигация по компасу "Arduino Project для начинающих 2024, Novembre
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.

Bussola digitale HMC5883
Bussola digitale HMC5883

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.

Collegamento della bussola digitale HMC5883 ad Arduino
Collegamento della bussola digitale HMC5883 ad Arduino

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.

Bussola digitale HMC5883 collegata ad Arduino su breadboard
Bussola digitale HMC5883 collegata ad Arduino su breadboard

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: