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.
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.
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.