Come Collegare Un Accelerometro Ad Arduino

Sommario:

Come Collegare Un Accelerometro Ad Arduino
Come Collegare Un Accelerometro Ad Arduino

Video: Come Collegare Un Accelerometro Ad Arduino

Video: Come Collegare Un Accelerometro Ad Arduino
Video: Usare un accelerometro analogico con Arduino - #39 2024, Maggio
Anonim

Questa volta ci occuperemo del collegamento dell'accelerometro triassiale analogico ADXL335 ad Arduino.

Accelerometro analogico ADXL335
Accelerometro analogico ADXL335

Necessario

  • -Arduino;
  • - accelerometro ADXL335;
  • - un personal computer con l'ambiente di sviluppo Arduino IDE.

Istruzioni

Passo 1

Gli accelerometri sono usati per determinare il vettore di accelerazione. L'accelerometro ADXL335 ha tre assi e grazie a questo può determinare il vettore di accelerazione nello spazio tridimensionale. A causa del fatto che anche la forza di gravità è un vettore, l'accelerometro può determinare il proprio orientamento nello spazio tridimensionale rispetto al centro della Terra.

L'illustrazione mostra le immagini del passaporto (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) per l'accelerometro ADXL335. Qui sono mostrati gli assi delle coordinate della sensibilità dell'accelerometro in relazione al posizionamento geometrico del corpo del dispositivo nello spazio, nonché una tabella dei valori di tensione da 3 canali dell'accelerometro a seconda del suo orientamento nello spazio. I dati in tabella sono forniti per un sensore a riposo.

Diamo un'occhiata più da vicino a cosa ci mostra l'accelerometro. Lascia che il sensore si trovi orizzontalmente, ad esempio su un tavolo. Quindi la proiezione del vettore di accelerazione sarà uguale a 1g lungo l'asse Z, o Zout = 1g. Gli altri due assi avranno degli zeri: Xout = 0 e Yout = 0. Quando il sensore viene girato "sulla schiena", sarà diretto nella direzione opposta rispetto al vettore di gravità, es. Zout = -1g. Allo stesso modo, le misurazioni vengono effettuate su tutti e tre gli assi. È chiaro che l'accelerometro può essere posizionato a piacimento nello spazio, quindi faremo letture diverse da zero da tutti e tre i canali.

Se la sonda viene fortemente scossa lungo l'asse Z verticale, il valore Zout sarà maggiore di "1g". La massima accelerazione misurabile è "3g" in ciascuno degli assi in qualsiasi direzione (cioè entrambi con "più" e "meno").

Assi di sensibilità dell'accelerometro e tabella dei valori di uscita
Assi di sensibilità dell'accelerometro e tabella dei valori di uscita

Passo 2

Penso che abbiamo capito il principio di funzionamento dell'accelerometro. Ora diamo un'occhiata allo schema di collegamento.

Il chip dell'accelerometro analogico ADXL335 è piuttosto piccolo e alloggiato in un pacchetto BGA, ed è difficile montarlo su una scheda a casa. Pertanto, utilizzerò un modulo GY-61 già pronto con un accelerometro ADXL335. Tali moduli nei negozi online cinesi costano quasi un centesimo.

Per alimentare l'accelerometro, è necessario fornire tensione +3, 3 V al pin VCC del modulo. I canali di misura del sensore sono collegati ai pin analogici dell'Arduino, ad esempio "A0", "A1" e " A2". Questo è l'intero circuito:)

Schema elettrico dell'accelerometro ADXL335 ad Arduno
Schema elettrico dell'accelerometro ADXL335 ad Arduno

Passaggio 3

Carichiamo questo sketch nella memoria di Arduino. Leggeremo le letture dagli ingressi analogici su tre canali, le convertiremo in tensione e le emetteremo sulla porta seriale.

L'Arduino ha un ADC a 10 bit e la tensione massima consentita per i pin è di 5 volt. Le tensioni misurate sono codificate con bit che possono assumere solo 2 valori - 0 o 1. Ciò significa che l'intero intervallo di misurazione sarà diviso per (1 + 1) fino alla decima potenza, ad es. su 1024 segmenti uguali.

Per convertire le letture in volt, è necessario dividere ciascun valore misurato all'ingresso analogico per 1024 (segmenti), quindi moltiplicare per 5 (volt).

Vediamo cosa viene realmente dall'accelerometro usando l'asse Z come esempio (l'ultima colonna). Quando il sensore è posizionato orizzontalmente e guarda in alto, arrivano i numeri (2,03 +/- 0,01). Quindi questo dovrebbe corrispondere all'accelerazione "+ 1g" lungo l'asse Z e un angolo di 0 gradi. Capovolgi il sensore. Arrivano i numeri (1, 69 +/- 0, 01), che dovrebbero corrispondere a "-1g" e un angolo di 180 gradi.

Schizzo di lettura dell'accelerometro
Schizzo di lettura dell'accelerometro

Passaggio 4

Prendiamo i valori dall'accelerometro ad angoli di 90 e 270 gradi e inseriamoli nella tabella. La tabella mostra gli angoli di rotazione dell'accelerometro (colonna "A") e i corrispondenti valori di Zout in volt (colonna "B").

Per chiarezza, viene mostrato un grafico delle tensioni all'uscita Zout rispetto all'angolo di rotazione. Il campo blu è l'intervallo a riposo (con un'accelerazione di 1 g). La casella rosa sul grafico è un margine in modo che possiamo misurare l'accelerazione fino a + 3 g e fino a -3 g.

Con una rotazione di 90 gradi, l'asse Z ha un'accelerazione zero. Quelli. un valore di 1,67 volt è uno zero condizionale Zo per l'asse Z. Quindi puoi trovare l'accelerazione in questo modo:

g = Zout - Zo / sensitivity_z, qui Zout è il valore misurato in millivolt, Zo è il valore ad accelerazione zero in millivolt, sensitivity_z è la sensibilità del sensore lungo l'asse Z. calibra l'accelerometro e calcola il valore di sensibilità specifico per il tuo sensore utilizzando la formula:

sensitività_z = [Z (0 gradi) - Z (90 gradi)] * 1000. In questo caso, la sensibilità dell'accelerometro lungo l'asse Z = (2, 03 - 1, 68) * 1000 = 350 mV. Allo stesso modo, la sensibilità dovrà essere calcolata per gli assi X e Y.

La colonna "C" della tabella mostra l'accelerazione calcolata per cinque angoli con una sensibilità di 350. Come puoi vedere, coincidono praticamente con quelli mostrati in Figura 1.

Corrispondenza degli angoli di rotazione dell'accelerometro alle letture
Corrispondenza degli angoli di rotazione dell'accelerometro alle letture

Passaggio 5

Ricordando il corso di geometria di base, otteniamo la formula per calcolare gli angoli di rotazione dell'accelerometro:

angolo_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

I valori sono in radianti. Per convertirli in gradi, dividi per Pi e moltiplica per 180.

Di conseguenza, nell'illustrazione viene mostrato uno schizzo completo che calcola l'accelerazione e gli angoli di rotazione dell'accelerometro lungo tutti gli assi. I commenti forniscono spiegazioni per il codice del programma.

Quando si esegue l'output sulla porta "Serial.print ()", il carattere "\ t" indica un carattere di tabulazione in modo che le colonne siano pari e i valori si trovino uno sotto l'altro. "+" significa concatenazione (concatenazione) di stringhe. Inoltre, l'operatore "String()" indica esplicitamente al compilatore che il valore numerico deve essere convertito in una stringa. L'operatore round() arrotonda l'angolo al grado più vicino.

Uno schizzo che calcola l'accelerazione e gli angoli dell'accelerometro
Uno schizzo che calcola l'accelerazione e gli angoli dell'accelerometro

Passaggio 6

Quindi, abbiamo imparato come prendere ed elaborare i dati dall'accelerometro analogico ADXL335 usando Arduino. Ora possiamo usare l'accelerometro nei nostri progetti.

Consigliato: