Come usare il modulo accelerometro e giroscopio MPU-6050

Come usare il modulo accelerometro e giroscopio MPU-6050

Il MPU-6050 è un sensore versatile che combina un accelerometro a 3 assi e un giroscopio a 3 assi in un unico pacchetto. In questo tutorial esploreremo come interfacciare questo modulo con un Arduino per misurare l'accelerazione e la velocità angolare. Il risultato sarà un programma semplice che visualizza i dati in tempo reale provenienti dal sensore, permettendoti di monitorare sia l'accelerazione sia l'orientamento del tuo dispositivo.

Seguendo questa guida, imparerai come configurare l'hardware, collegare correttamente i componenti e scrivere il codice necessario per far funzionare l'MPU-6050. Questo ti fornirà una base per ulteriori progetti che riguardano il rilevamento del movimento e l'individuazione dell'orientamento. Per maggiore chiarezza, assicurati di consultare il video che accompagna questo tutorial (nel video a 00:00).

Hardware spiegato

Il componente principale di questo progetto è il sensore MPU-6050, che fornisce sia i dati dell'accelerometro sia quelli del giroscopio. L'accelerometro misura l'accelerazione lineare lungo gli assi X, Y e Z, mentre il giroscopio misura le velocità di rotazione attorno a quegli stessi assi. Questa combinazione rende l'MPU-6050 un'ottima scelta per applicazioni che richiedono il tracciamento del movimento.

Inoltre, il modulo utilizza un'interfaccia I2C per la comunicazione, che semplifica i collegamenti e permette di collegare più dispositivi sullo stesso bus. Il sensore è alimentato tramite il pin VCC, che tipicamente richiede una tensione compresa tra 3.3V e 5V. Il GND è collegato alla massa comune dell'Arduino.

Dettagli della scheda tecnica

ProduttoreInvenSense
Numero di parteMPU-6050
Tensione logica/IO3.3 - 5 V
Tensione di alimentazione3.3 - 5 V
Corrente di uscita (per canale)...
Corrente di picco (per canale)...
Linee guida sulla frequenza PWM...
Soglie logiche di ingresso...
Caduta di tensione / RDS(on)/ saturazione...
Limiti termici...
PacchettoQFN (involucro piatto quadrato senza terminali)
Note / varianti...

  • Collegare il pin VCC a 3.3V o 5V.
  • Collega il pin GND a massa.
  • Usa la comunicazione I2C tramite SDA (dati) e SCL (clock).
  • Accertarsi che siano presenti resistenze di pull-up sulle linee SDA e SCL.
  • Verificare che i livelli di tensione siano corretti per evitare di danneggiare il sensore.

Istruzioni di cablaggio

arduino_wiring_MPU-6050

Per collegare l'MPU-6050 al tuo Arduino, inizia collegando il pin VCC dell'MPU-6050 al pin 5V dell'Arduino. Successivamente, collega il pin GND dell'MPU-6050 a uno dei pin GND dell'Arduino. Per la comunicazione I2C, collega il pin SDA dell'MPU-6050 al pin A4 dell'Arduino e il pin SCL al pin A5. Assicurati che il tuo Arduino sia impostato per utilizzare la comunicazione I2C includendo le librerie appropriate nel tuo codice.

Verifica attentamente le connessioni prima di alimentare il sistema. Se usi una breadboard, assicurati che le connessioni siano salde e che non ci siano cortocircuiti. Se il modulo non risponde come previsto, verifica il cablaggio e controlla l'indirizzo I2C dell'MPU-6050 nel tuo codice.

Esempi di codice e guida passo-passo

Il seguente frammento di codice inizializza l'MPU-6050 e inizia a leggere i dati da esso. Gli identificatori chiave includonompu6050, che è l'istanza della classe MPU6050, etimer, che viene utilizzato per controllare la temporizzazione dell'uscita dei dati.

MPU6050 mpu6050(Wire);
long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

In questa funzione di setup, inizializziamo la comunicazione seriale e il sensore MPU-6050. Ilmpu6050.calcGyroOffsets(true)La chiamata è cruciale poiché calibra gli offset del giroscopio, garantendo letture accurate.

Nella funzione loop aggiorniamo continuamente i dati del sensore e li stampiamo sul monitor seriale. Il seguente frammento di codice mostra come leggere e stampare i dati di temperatura e di accelerazione:

if(millis() - timer > 1000){
  Serial.print("temp : ");Serial.println(mpu6050.getTemp());
  Serial.print("accX : ");Serial.print(mpu6050.getAccX());
  Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
  Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}

Questo blocco verifica se è passato un secondo dall'ultima uscita. Quindi recupera i valori di temperatura e di accelerazione dal MPU-6050 e li stampa sul monitor seriale. Puoi osservare questi valori aggiornarsi in tempo reale.

Dimostrazione / Cosa aspettarsi

Una volta che tutto è collegato e il codice caricato, puoi aspettarti di vedere i dati di temperatura e accelerazione stampati nel monitor seriale ogni secondo. Se inclini o muovi l'MPU-6050, i valori di accelerazione dovrebbero cambiare di conseguenza. Tieni presente che collegamenti errati o un'alimentazione insufficiente possono portare a letture erratiche o all'assenza totale di dati (nel video a 01:30).

Immagini

arduino_wiring_MPU-6050
arduino_wiring_MPU-6050
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
116-Arduino code for the MPU-6050 accelerometer and gyroscope sensor (all data)
Lingua: C++
117-Arduino code for an MPU-6050 accelerometer and gyroscope sensor (just angle)
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

Librerie Arduino (zip)