Il modulo HMC5883L è un magnetometro digitale a 3 assi.

Sembra incredibile poter avere una bussola tra le mani e racchiudere tutto questo in un piccolissimo chip grande circa 4mm x 4mm !

Questo tema è decisamente interessante, anche perchè potrebbe dare un utile informazione a BigWheely per identificare o correggere le direzioni da prendere. Determinarne la posizione di un oggetto nello spazio, (o perlomeno nel piano) è un argomento complesso, e anche se non ho ancora analizzato fino in fondo come sarà possibile conoscere l'esatta posizione di BigWheely nel salotto di casa, sono sicuro che una bussola potrà dare un sostanzioso aiuto.

IMG 0079 r IMG 0080 r

Ho acquistato questo modulo qui, dove viene fornito il datasheet (nella pagina hardware dedicato a questo modulo ho allegato un datasheet simile, ma cone alcune informazioni che su quello del sito di acquisto non sono indicate).

Come si collega

A differenza di altri moduli e sensori che generalmente utilizzano porte digitali, in questo caso è necessario utilizzare le porte di Arduino destinate per l'interfaccia di comunicazione I2C che corrispondono alle entrate analogiche A4 e A5.

Lo scheda seguente mostra come collegarlo (questo sito spiega un po' di teoria e come si collega):

Compass-6 0


Inoltre è possibile scaricare e installare anche una apposita libreria denominata HMC5883L.h correlata da un esempio che permette di muovere i primi passi con questo IC.

Attenzione da dove viene scaricata la libreria, io l'avevo trovata sul sito LoveElectronics, un sito che offre un interessante Tutorial e che affronta piuttosto bene l'argomento in modo semplice da capire. Questa versione della libreria credo sia piuttosto vecchia e obsoleta, per funzionare infatti ho dovuto (dopo ore di debug) apportare delle modifiche ai sorgenti della libreria perchè non veniva compilata correttamente.

In particolare è stato necessario sostituire il comando send --> write e il comando receive --> read su tutto il codice scritto in C++, la libreria Wire utilizzata non usa più i comandi send e receive da tempo.

Consiglio quindi di utilizzare la libreria allegata in fondo a questa pagina presa direttamente dal sito del rivenditore.

Ho trovato sul web molto materiale e siti che spiegano più o meno bene il funzionamento di questo dispositivo e delle influenze esterne che può subire. Spesso infatti viene utilizzato assieme ad un accelerometro in grado di compensare l'inclinazione rispetto il piano. Mi rendo conto che non è facile spiegare queste teorie in poche righe, per questo è forse il caso di approfondire l'argomento direttamente su internet. Una pagina sul sito Love Electronics spiega abbastanza bene questi concetti.

 tiltcompass-calc2

 

Calcolare il Magnetic declination

Il Tutorial del sito LoveElectronics spiega meglio di altre fonti come calcolare la "magnetic declination" del luogo in cui ci si trova. Questo valore compensa la differenza tra Nord Magnetico e Nord Geografico.

Seguendo alla lettera questo Tutorial, ottengo quindi i dati necessari per il calcolo della declinazione magnetica terrestre, nel mio caso:

declinazione magnetica mappa

Utilizzando il sito suggerito infine ottengo il valore richiesto.

declinazione magnetica conversione

 

Finalmente si può così ottenere una direzione espresso in gradi.

hmc5883l-tut1-4