Ciao a tutti, eccomi di nuovo qui con un nuovo tutorial molto interessante. In questo tutorial vi mostrerò il funzionamento di un accelerometro/giroscopio con un Arduino UNO. In particolare utilizzerò un sensore InvenSense MPU-6050. 

Il sensore InvenSense MPU-6050 contiene, in un singolo integrato, un accelerometro MEMS a 3 assi ed un giroscopio MEMS a 3 assi. Con lo giroscopio possiamo misurare l’accelerazione angolare di un corpo su di un proprio asse, mentre con l’accelerometro possiamo misurare l’accelerazione di un corpo lungo una direzione. È molto preciso, in quanto ha un convertitore AD (da analogico a digitale) da 16 bit per ogni canale. Perciò cattura i canali x, y e z contemporaneamente. Il sensore possiede un protocollo di comunicazione standard I²C, quindi facile da interfacciare con il mondo arduino.

Il sensore MPU-6050 non è nemmeno costoso, forse è il più economico sul mercato, soprattutto in considerazione del fatto che combina un accelerometro e un giroscopio.

mpu6050-assi

Ecco alcune caratteristiche del sensore MPU-6050:

  • Chip con Convertitore AD a 16 bit Integrato
  • Range di misura giroscopio: ±250, 500, 1000 e 2000°/s
  • Range di misura accelerometro: +2, +4 , +8 , +16 g
  • Interfaccia: I²C
  • Alimentazione: da 3V a 5V

Potete trovare il datasheet del MPU-6050 QUI.

Per le mie prove ho acquistato un modulo GY-521 in modo d’avere il sensore MPU-6050 già pronto per l’utilizzo. Ecco lo schema elettrico del modulo GY-521 per chi vuole costruirselo da solo:

GY-521

mpu-6050

Ora passiamo al tutorial vero e proprio andando a vedere come utilizzare questo modulo con un Arduino Uno.

Lista del materiale:

  • Arduino UNO (o altro, leggi nota più in basso)
  • Modulo GY-521

Schema

GY-521_Schema_Arduino

BreadBoard

GY-521_BreadBoard_Arduino

Collegamenti per Arduino Uno:

GY-521Arduino Uno
VCC3.3V
GNSGND
SCLA5
SDAA4

 

N.B. : Lo schema ed i collegamenti sono indirizzati solo per Arduino Uno, ma il tutorial è valido anche per tutte le altre board di Arduino. L’unica cosa che cambia nei collegamenti sono i 2 pin I2C, ovvero SDA e SCL (Es. su Arduino Uno il pin SCL si trovare sul pin A5 mentre su Arduino Mega si trova sul pin 20). Basta consultare il datasheet o fare delle ricerche su google per trovare gli ingressi I2C della propria board.

Ora passiamo allo sketch di verifica, in questo modo verificheremo se il nostro modulo GY-521 è collegato correttamente ad Arduino.

Dopo aver caricato lo sketch su Arduino aprite il Monitor Seriale.

Se uscirà questo messaggio:

I2C_YES

Avete fatto tutto bene fin ora 🙂 … Mentre se uscirà questo:

I2C_NO

Avete sicuramente sbagliato qualche collegamento 🙁 …

 

Bene! Se avete fatto la verifica ed è andato tutto bene non ci resta che proseguire il tutorial e provare le funzionalità del sensore MPU-6050, ovvero la lettura dei 3 assi (X,Y,Z) del giroscopio, dell’accelerometro e per finire anche la misurazione della temperatura in gradi celsius (°C).

Prima di tutto dovete caricate questo sketch sulla board arduino:

Dopodiché aprendo il Monitor Seriale si dovrebbero vedere i valori degli assi X,Y,Z dell’accelerometro, giroscopio e della temperatura in °C come nell’immagine seguente:

MPU-6050_Test

Quest’ultimo scketch è abbastanza semplice da comprendere, soprattutto se si ha una buona base di programmazione ed un pò di esperienza con arduino. Sulle variabili AcX, AcY, AcZ = accelerometro; Tmp = temperatura; GyX, GyY, GyZ = giroscopio; vengono memorizzati i valori degli assi X,Y,Z . In questo modo potrete gestire questi valori come volete voi, così come vi farò vedere tra breve.

Progetto: Gestione di due Servomotori utilizzando un modulo GY-521

Questo progetto sarà un esempio pratico per farvi capire come sia abbastanza semplice interfacciare il modulo GY-521 con Arduino.  Utilizzerò solo i valori degli assi  dell’accelerometro e calcolerò gli angoli Pitch e Roll (come descritto nel mio tutorial) per far ruotare i due servomotori da 0° a 179° in base alla posizione dell’accelerometro. Prima di proseguire vi consiglio di vedere il video seguente per capire meglio di cosa sto parlando.

Video

Se volete realizzare anche voi questo progetto ecco lo schema elettrico da utilizzare:

Schema

Prog_GY-521_Servo_Schema

BreadBoard

Prog_GY-521_Servo_BreadBoard

Come notate dallo schema elettrico ho alimentato i due servomotori con un’alimentazione esterna da 5V (Questo perchè i miei servo insieme consumano più di 500 mA (500 mA = corrente massima erogabile da una porta USB)). Ora passiamo allo sketch da caricare su Arduino.

Sketch (edit 05/04/2016)

Spero vi sia piaciuto questo tutorial, in ogni caso vi ringrazio per la lettura. Se avete problemi non esitate a lasciare un commento. A presto, ciao! 🙂

Download archivio con tutto il progetto.

Ciao, se ti è piaciuto il mio blog e se qualche articolo ti è stato d’aiuto, se te la senti e se vuoi, incentiva il mio lavoro offrendomi un caffè o qualunque altra cosa preferisci farmi ricevere. Cercherò di dare il meglio di me e di inserire articoli sempre più interessanti e utili 🙂 . Clicca QUI per la donazione!