Accelerometro MMA7361L 3-axis ±1.5g / ±6g

L’Accelerometro MMA7361L della Freescale è un accelerometro a 3 assi con tre uscite analogiche separate con sensibilità regolabile a ±1.5g oppure a ±6g:

accelerometro MMA7361L 3 assi

L’Accelerometro MMA7361L rileva l’accellerazione dei 3 assi X,Y e Z come riportato nel suo datasheet ufficiale.

La sensibilità è regolabile a ±1.5g oppure a ±6g semplicemente commutando a LOW o HIGH un pin dell’integrato, la Freescale rilascia la seguente tabella:

MMA7361L imposta sensibilità

quindi puoi impostare la sensibilità a ±1.5g impostando il pin g-select a LOW.

L’accelerometro MMA7361L è venduto dalla Freescale in contenitore 14 LEAD LGA CASE 1977-01:

accelerometro mma7361l case

che lo rende inutilizzabile con una breadboard per cui ti consiglio di acquistarne uno già corredato di breakout con i contatti a passo standard per breadboard:

mma7361l breadboard

in modo da poterlo utilizzare, io ho acquistato qui un accelerometro tipo MMA7361L già assemblato per una decina di euro.

Ogni breakout riporta il contatto g-Select in una posizione differente, come tutti gli altri contatti per cui controlla sul datasheet della tua scheda dove sono posizionati i differenti pin prima di collegarla ad arduino.

I pin dell’accelerometro MMA7361L

i pin dell’accelerometro sono sempre identici anche se la loro posizione sulla breakout:

mma7361l connessione

i pin principali sono cinque, i soli necessari a poter già utilizzare l’accelerometro MMA7361L e sono:

  • Vdd alimentazione a +3,3v
  • Vss terminale negativo o Gnd
  • Xout uscita analogica in mV relativa all’accelerazione dell’asse X
  • Yout uscita analogica in mV relativa all’accelerazione dell’asse Y
  • Zout  uscita analogica in mV relativa all’accelerazione dell’asse Z
Gli altri pin dell’accelerometro MMA7361L ti servono per
  • g-Select: impostare la sensibilità tra ±1.5g e ±6g
  • 0g-Detect: trovare quando l’MMA7361L è in posizione 0g
  • Sleep: in grado di mettere questo accellerometro in modalità Sleep riducendo a 3uA il consumo di corrente
  • Self-Test: per verificare che l’integrità meccanica dell’accelerometro anche dopo il suo montaggio

Range di accelerazione sui 3 assi

L’accelerazione puoi misurarla come variazione dei mV sui singoli pin di out il cui valore varia di 800mV ad ogni variazione 1g ( g = accelerazione di gravità ) con la sensibilità impostata a ±1.5g.
Se la sensibilità è impostata a ±6g la variazione ad ogni g è di soli 206mV, come puoi vedere nella Tabella 3 riportata nel datasheet.
mma7361l direzioni
Il datasheet dell’accelerometro MMA7361L indica la direzione di ogni asse rispetto all’integrato per aiutarti a comprendere ad ogni movimento l’asse corrispondente.
Inoltre la figura seguente indica i valori in mV nella posizione di 0 e nelle posizioni +1g e -1g:
mma7361l mV
in questo modo potrai fare dei test per verificare che i valori letti sul convertitore analogico digitale di arduino siano corretti ad ogni spostamento dell’accelerometro.

Collegamenti dell’accelerometro MMA7361L

Per utilizzare lo sketch dovrai eseguire i collegamenti come in tabella:

 

accelerometro MMA7361L Arduino
3,3v 3,3v
Gnd Gnd
Xout A0
Yout A1
Zout A2
g-Select Gnd
Sleep 3,3v
3.3v su AREF

Collega l’alimentazione ai +3,3v e Gnd arduino;

Collega i tre pin di output ai pin analogici arduino;

Collega il pin g-Select a Gnd, per impostare l’accelerazione a ±1.5g = 800mV ad ogni g;

Collega lo Sleep pin ai 3,3v;

Collega i 3,3v di arduino al pin AREF di arduino.

L’ultimo collegamento ti serve per poter impostare come tensione di riferimento il valore 3,3v in quanto le uscite X,Y e Z out dell’accelerometro sono 3,3v;

Ecco i collegamenti lato Arduino:

mma7361l connessioni

ed i collegamenti al sensore, nel mio caso la breakout possiede un regolatore di tensione integrato per cui ho alimentato l’accelerometro con +5v e ricavato dallo stesso i +3,3v portati sul pin Sleep.

Se il pin Sleep dell’accelerometro mma7361l non è collegato a +3,3v il dispositivo resta in modalità sleep ( dormiente o risparmio energetico ) e non ti invia alun valore sui pin di output:

mma7361l connessioni

Sketch dell’accelerometro MMA7361L

Il primo sketch di test che ti propongo serve a valutare i valori letti su ciascun ingresso analogico Arduino:

/**********************************************************
 * MMA7361L Arduino
 *
 * Data creazione 02 aprile 2013
 * Ultima modifica 03 aprile 2013
 *
 * autore: Mauro Alfieri
 * web:    mauroalfieri.it
 * tw:     @mauroalfieri
 *
/**********************************************************/

int XPin = A0; // X
int YPin = A1; // Y
int ZPin = A2; // Z

void setup() {
  Serial.begin(9600);
  analogReference(EXTERNAL);
  Serial.println("Setup MMA7361L"); 
} 

void loop() { 
  Serial.print("X: ");
  Serial.print( analogRead(XPin) );
  Serial.print(" Y: ");
  Serial.print( analogRead(YPin) );
  Serial.print(" Z: ");
  Serial.print( analogRead(ZPin) );
  Serial.print("\n");

  delay(500);
}

linea 19: imposta la tensione di riferimento di arduino a 3,3v mediante il collegamento AREF;

linee 24-30: leggi i valori analogici presenti sui pin A0,A1,A2 a cui hai collegato gli output dell’accelerometro MMA7361L e scrivi sul monitor seriale tali valori;

linea 32: attendi 500 millisecondi ( 1/2 secondo ) prima di ri-eseguire la lettura degli ingressi analogici e trasferirne il risultato sul monitor seriale.

Ciò che leggerai sul monitor seriale durante l’esecuzione dello sketch dovrebbe essere simile a questo:

Libreria per accelerometro MMA7361L

Ho trovato questa libreria che puoi utilizzare per controllare i valori letti sulle uscite X,Y e Z dell’accelerometro, nei prossimi articoli proverò gli esempi e come utilizzarla in un progetto pratico.

Buon divertimento !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/accelerometro-mma7361l-3-axis.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.