Il modulo GY-521 è costruito per gestire il sensore MPU-6050 che è un chip prodotto da Invensense, che combina al suo interno più dispositivi tra i quali notiamo:
- accelerometro a 3 assi
- giroscopio a 3 assi
- sensore di temperatura
- oscillare di clock interno
- un processore di movimento digitale
Il modulo è di piccole dimensioni: 21.2 x 16.4 x 3.3 mm, ed è molto preciso, consiste in hardware di conversione da analogico a digitale per ciascun canale, acquisendo allo stesso tempo i canali x, y, z.
L’uscita può essere interfacciata con il bus I2C di Arduino.
Indice
Descrizione del sensore MPU-6050
Accelerometro a 3 assi
L’accelerometro a 3 assi interno all’ MPU-6050 è in grado di rilevare l’angolo di inclinazione o l’inclinazione lungo gli assi x, y, z utilizzando una tecnologia del sistema elettromeccanico MEMS acronimo di Micro Electro-Mechanical Systems.
L’accelerazione lungo gli assi è ricavata dalla massa in movimento che viene rilevato con la tecnologia del sistema elettromeccanico (MEMS). L’ampiezza dell’uscita è proporzionale all’accelerazione.
Per la digitalizzare dei valori viene utilizzato un ADC a 16 bit, Gli intervalli di uscita a fondo scala possibili sono: +/- 2g, +/- 4g, +/- 8g, +/- 16g.
In posizione normale, cioè quando il dispositivo è posizionato su una superficie piana, i valori sono 0 g sull’asse x, 0 g sull’asse y e +1 sull’asse z.
Giroscopio a 3 assi
Il giroscopio a 3 assi interno all’ MPU-6050 è in grado di rilevare la velocità di rotazione lungo l’asse x, y, z con la tecnologia del sistema micro elettromeccanico (MEMS).
Quando il sensore viene ruotato su qualsiasi asse, viene prodotta una vibrazione, grazie all’effetto Coriolis viene rilevato dal MEMS. L’ADC a 16 bit viene utilizzato per digitalizzare la tensione per campionare ciascun asse. Gli intervalli di uscita a fondo scala sono : +/- 250, +/- 500, +/- 1000, +/- 2000. La velocità angolare viene misurata lungo ciascun asse in gradi al secondo unità.
Sensore di temperatura
All’interno del chip è presente un sensore di temperatura la cui uscita è digitalizzata tramite ADC e può essere letta dal registro dei dati del sensore.
Oscillatore di clock interno
L’MPU ha uno schema di temporizzazione flessibile, che consente di utilizzare una varietà di sorgenti di clock interne o esterne per i circuiti sincroni interni. Questa circuiteria sincrona include il condizionamento del segnale e gli ADC, il DMP e vari circuiti e registri di controllo. Un PLL su chip offre flessibilità negli input consentiti per generare questo clock.
Le fonti interne consentite per generare l’orologio interno sono:
- Un oscillatore di rilassamento interno
- Qualunque giroscopio X, Y o Z (oscillatori MEMS con una variazione di ± 1% rispetto alla temperatura)
Digital motion processor (DMP)
Il processore di movimento digitale incorporato viene utilizzato per eseguire calcoli sui dati del sensore. I valori possono essere letti dai registri dmp. I valori grezzi possono essere letti direttamente dall’accelerometro e dai registri del giroscopio tramite Arduino. Il chip MPU-6050 include anche un buffer FIFO da 1024 byte dove i dati possono essere posizionati e letti.
L’MPU-6050 funge sempre da slave quando è connesso all’Arduino con i pin SDA e SCL collegati al bus I2C. Ma ha anche il proprio controller I2C ausiliario che gli consente di agire come un master su un altro dispositivo come un magnetometro. Il DMP integrato può essere programmato con il firmware per eseguire calcoli complessi con i valori del sensore.
L’AD0 seleziona tra gli indirizzi I2C 0x68 e 0x69 consentendo a 2 di questi sensori di essere connessi nello stesso progetto. La maggior parte delle schede come la GY-521 ha una resistenza pull down o pull up per mantenere il valore predefinito, nel nostro caso al valore 0x68
Schema a blocchi del sensore MPU-6050
Schema elettrico del modulo
Lo schema del modulo prevede un riduttore di tensione LDO Q2 tipo LD3985, marcato SMD con la sigla 4A2D, questo permette l’ingresso di una tensione compresa tra 2.5 V to 6 V, fornendo in uscita il valore di 3,3V a 150 mA necessari.
L’accensione del led D1 la cui corrente è limitata da una resistenza da 1Kohm mostra la presenza della tensione di alimentazione.
L’unico altro componete è IC1 il sensore MPU-6050 con le due le due resistenze da 47Kohm sulle linee SDA e SCL, mentre la resisteza su 47K sul pin AD0 mantiene l’indirizzi del modulo al valore di 0x68.
Caratteristica sensore
- Alimentazione a 5Vcc
- Fondo scala giroscopio selezionabile tra ± 250, ± 500, ± 1000, e ± 2000°/sec
- Fondo scala accelerometro selezionabile tra ± 2g, ± 4g, 8g ± e ± 16g
- Interfaccia I2C
- Assorbimento durante la misura inferiore a 10mA
Descrizione dei pin
Pin | Descrizione | Funzione |
---|---|---|
1 | VCC | Alimentazione, è possibile alimentare il modulo direttamente a +5V |
2 | GND | Terminale di massa |
3 | SCL | Serial clock |
4 | SDA | Serial data |
5 | XDA | Serial data per il collegamento a sensori esterni |
6 | XCL | Serial clock per il collegamento a sensori esterni |
7 | ADO | Indirizzo slave I2C LSB (AD0) |
8 | INT | Interrupt digital output (totem pole or open-drain) |
Nota: di solito si utilizzano solamente i pin 1-2-3-4
Dove trovare il modulo sensore
Il modulo GY-521 con chip MPU-6050 può essere acquistato presso il sito Homotix, il codice prodotto è HMT6050 il suo costo, al momento della pubblicazione di questo articolo è di 2,51 €.
Citando il codice di sconto relativo al sito adrirobot potrete usufruire di uno speciale sconto.
Il sensore è acquistabile anche presso il sito FUTURA ELETTRONICA, il codice prodotto è 2846-MPU6050, il suo costo, al momento della pubblicazione di questo articolo è di 9,00 €.
Altri tipi di accelerometri
L’accelerometro triassiale utilizzato nel robot Moway è il tipo MMA7455L prodotto dalla Freescale Semiconductor | Accelerometro a due assi ADXL 322 prodotto dalla ANALOG Devices utilizzato per il robot Robonox |
L’accelerometro utilizzato all’interno del controller Nunchuck è il tipo LIS3L02 prodotto dalla STMicroelectronics | L’accelerometro triassiale usato sulla scheda del robot Robi è il tipo MMA7660FC prodotto dalla Freescale, il sensore ha una sensibilità di ±1.5 g e ha un’uscita digitale I2C |
L’accelerometro triassiale utilizzato sulla scheda ESPLORA, è il tipo MMA7361 LCR2 Il sensore presenta una sensibilità di 800 mV/g a 1.5g o 206 mV/g a 6g |
Collegamento del sensore
In questo esempio vediamo come collegare il Modulo ad una scheda ARDUINO UNO, questo ci permetterà di testare il modulo leggendo i dati in uscita sia dalla sezione Accelerometro sia giroscopio che dalla sezione sensore di temperatura.
Nella foto la scheda Scheda UNO R3 ATmega328P CH340 (vedi link) ha i pin per il collegamento all’interfaccia I2c già predisposti
Come visibile dalla figura il collegamento si limita alla tensione di alimentazione e al collegamento dei 2 pin I2C, ovvero SDA e SCL. Questi sono per la scheda Arduino UNO i pin A5 e A5, su altre schede sono invece diversi
Tipo di scheda | Pin SDA | Pin SCL |
---|---|---|
Uno, Nano, Ethernet | A4 | A5 |
Mega 2560 | 20 | 21 |
Leonardo | 2 | 3 |
Due | 20 | 21 |
Sketch di prova
Per la lettura dei dati del Modulo GY-521 MPU-6050, occorre, caricare l’apposita libreria, per cui andare al menu Sketch-> #includi libreria -> Gestione librerie
ricercare 6050, saranno mostrate varie librerie, personalmente ho scelto quella denominata “MPU6050_tockn”
Il primo test possibile è quello di verificare se il modulo viene riconosciuto e quale sia l’indirizzo I2C del device, per fare questo potremmo caricare lo Sketch “i2c_scanner”
Sketch i2c_scanner
Una volta caricato lo sketch su Arduino dovrete aprire il Monitor Seriale, sono possibili due messaggi.
Il primo, evidenzia che il device è stato trovato e risponde all’indirizzo 0x68 che corrisponde la valore atteso.
Il secondo messaggi, evidenzia il messaggio che la device non è stata trovata, e se il led è correttamente acceso potrebbe essere dovuto per esempio all’inversione del collegamento dei pin SDA e SCL, per cui provate ad invertirli.
Se la verifica è andata a buon fine, potrete passare al secondo passo, per cui, andando nella sezione Esempi e andando a ricercare la sezione MPU6050_tockn si potrà caricare lo Sketch GetAllDAta.
Questo Sketch permette la lettura dei 3 assi (X,Y,Z) del giroscopio, dell’accelerometro e per finire anche la misurazione della temperatura in gradi celsius (°C).
Esempio di utilizzo del sensore
Il Modulo GY-521 con MPU-6050 ha molti utilizzi tra cui quello per la gestione dei robot auto bilanciati come il kit proposto da Elegoo denominato Tumbller che è un kit per la costruzione di auto robot di nuova concezione che ha molteplici affascinanti funzioni come controllo IR, auto-follow, evitamento ostacoli, modalità bouncing e incandescente in diversi colori LED.
Si può controllare tramite un telefono cellulare usando la speciale APP ELEGOO TOOL BLE.