Vous êtes sur la page 1sur 5

U N I V E RSI D AD N AC I ON AL M AY OR DE S AN M ARCOS

F acul t ad d e C i enci as F i si c as

P r oyec t o mpu con I nt er f az Ar d ui no

I nt eg r ant es

El vi s C and i a Ochoa 1613006


Jesus Gonzal es d e l a C r uz 16130101
Di eg o Al onso Qui spe Puc a 16130135
Ant on y Jai r o Rui z C huqui l l anqui 16130024

P RE SE N T ADO AL DOC E N T E :
B al t uano El i as, Osc ar Rol and o

1
Marco Teorico

Los sensores IMU son uno de los tipos de sensores más inevitables utilizados hoy en día en todos tipos de aparatos
electrónicos. Se ven en teléfonos inteligentes, dispositivos portátiles,controladores de juegos, etc. Los sensores IMU
nos ayudan a obtener la actitud de un objeto, conectado al sensor en un espacio tridimensional. Estos valores gene-
ralmente en ángulos, así nos ayudan a determinar su actitud. Por lo tanto, se utilizan en teléfonos inteligentes para
detectar su orientación. Y también en dispositivos portátiles que usan sensores IMU para rastrear el movimiento

El MPU6050 cuenta con:


.-Acelerómetro
.-Giroscopio
.-Medidor de temperatura
¿Cuáles son las componentes necesarias para hacer este proyecto?
Hardware:
1.Arduino uno
2.sensor MPU 6050
3.cables de interconexión
4.Potenciometro 10k
5.Protoboard
6.Pantalla LCD 2X16

Software:
1.Arduino IDE:
MPU 6050 es un 6 DOF (Grados de libertad) o un sensor IMU de seis ejes, que significa que da seis valores como salida.
Tres valores de la acelerómetro y tres del giroscopio. El MPU 6050 es un sensor basado en la tecnología MEMS (Micro
Electro Mechanical Systems). Ambos El acelerómetro y el giroscopio están incrustados dentro de un solo chip. Esta El
chip utiliza el protocolo I2C (circuito integrado integrado) para la comunicación.
¿Cómo funciona un acelerómetro?
Un acelerómetro funciona según el principio del efecto piezoeléctrico. Aquí, imagina una caja cuboidal, con una pe-
queña bola dentro, como en la imagen encima. Las paredes de esta caja están hechas con cristales piezoeléctricos.
Cuando inclinas la caja, la pelota se ve obligada a moverse en la dirección de la inclinación, debido a la gravedad La
pared con la que choca la pelota crea un pequeño piezo. Corrientes eléctricas. Hay totalmente, tres pares de paredes
opuestas en un cuboide. Cada par corresponde a un eje en el espacio 3D: ejes X, Y y Z. Dependiente En la corriente
producida a partir de las paredes piezoeléctricas, podemos determinar La dirección de inclinación y su magnitud
¿Cómo funciona un giroscopio?
Los giroscopios funcionan según el principio de la aceleración de Coriolis. Imagina eso hay un tenedor como estruc-
tura, que está en constante movimiento de ida y vuelta. Está sostenido en su lugar usando cristales piezoeléctricos.
Siempre que intentes inclinar esto disposición, los cristales experimentan una fuerza en la dirección de la inclina-
ción. Esto se debe a la inercia de la horquilla móvil. Los cristales así producir una corriente en consenso con el efecto
piezoeléctrico, y esto La corriente se amplifica. Los valores son refinados por el host microcontrolador.

2
Figura 1:

Figura 2:

3
i ncl ud e < Li qui dC r y st al .h > d el a y(2000); d el a y(400);
Li qui dC r y st al l cd (8, 9, l cd .cl ear ();
10, 11, 12, 13);
i ncl ud e < W i r e.h > voi d l oop()
voi d g yr oShow()
i ncl ud e < M PU 6050.h >
d e f i ne per i od 10000 l cd .cl ear ();
//l cd .setCur sor (0, 0);
M PU 6050 mpu; l cd .pr i nt ("Temper at ur a");
l cd .cl ear ();
i nt count = 0; l ong st = mi l l i s();
l cd .pr i nt ( "X Y Z ");
char okF l ag = 0; Ser i al .pr i nt l n("Temper at ur a");
V ec t or r awG yr o =
b y t e d eg r ee[8] = whi l e(mi l l i s() < st + per i od )
mpu.r ead RawG yr o();
0b00000,
V ec t or nor mG yr o =
0b00110, l cd .setCur sor (0, 1);
mpu.r ead Nor mal i zeG yr o();
0b01111, t empShow();
l cd .setCur sor (0, 1);
0b00110,
l cd .pr i nt (nor mG yr o.X Axi s, 1);
0b00000, l cd .cl ear ();
l cd .setCur sor (6, 1);
0b00000, l cd .pr i nt ("G yr o");
l cd .pr i nt (nor mG yr o.Y Axi s, 1);
0b00000, d el a y(2000);
l cd .setCur sor (12, 1);
0b00000 st = mi l l i s();
l cd .pr i nt (nor mG yr o.Z Axi s, 1);
; Ser i al .pr i nt l n("G yr o");
Ser i al .pr i nt (" X nor m = ");
whi l e(mi l l i s() < st + per i od )
Ser i al .pr i nt (nor mG yr o.X Axi s);
voi d set up()
Ser i al .pr i nt (" Y nor m = ");
l cd .setCur sor (0, 1);
Ser i al .pr i nt (nor mG yr o.Y Axi s);
l cd .beg i n(16, 2); g yr oShow();
Ser i al .pr i nt (" Z nor m = ");
l cd .cr eat eC har (0, d eg r ee);
Ser i al .pr i nt l n(nor mG yr o.Z Axi s);
Ser i al .beg i n(9600);
d el a y(200);
Ser i al .pr i nt l n("I ni t i al i ce l cd .cl ear ();
M PU 6050"); l cd .pr i nt ("Accel er omet r o");
voi d accel Show()
whi l e(!mpu.beg i n(M PU 6050 d el a y(2000);
_SC ALE _ st = mi l l i s();
2000DP S, M PU 6050 Ser i al .pr i nt l n("Accel er omet r o");
_R ANGE 2G)) whi l e(mi l l i s() < st + per i od ) l cd .setCur sor (0, 0);
l cd .cl ear ();
l cd .cl ear (); l cd .setCur sor (0, 1); l cd .pr i nt (" X Y Z ");
l cd .pr i nt ("Di sposi t i vo no accel Show(); V ec t or r aw Accel = mpu.r ead Raw Accel ();
encont r ad o"); V ec t or nor m Accel =
Ser i al .pr i nt l n("No se pud o mpu.r ead Nor mal i ze Accel ();
encont r ar un sensor l cd .setCur sor (0, 1);
M PU 6050, V er i f i c ar !"); voi d t empShow() l cd .pr i nt (nor m Accel .X Axi s, 1);
d el a y(500); l cd .setCur sor (6, 1);
f l oat t emp = l cd .pr i nt (nor m Accel .Y Axi s, 1);
count = 0; mpu.r ead Temper at ur e(); l cd .setCur sor (12, 1);
mpu.c al i br at eG yr o(); Ser i al .pr i nt (" Temp = "); l cd .pr i nt (nor m Accel .Z Axi s, 1);
mpu.set T hr eshol d (3); Ser i al .pr i nt (t emp); Ser i al .pr i nt ("X nor m = ");
Ser i al .pr i nt l n(" ∗C "); Ser i al .pr i nt (nor m Accel .X Axi s);
l cd .cl ear (); l cd .cl ear (); Ser i al .pr i nt (" Y nor m = ");
l cd .pr i nt ("M PU 6050 l cd .pr i nt ("Temper at ur a"); Ser i al .pr i nt (nor m Accel .Y Axi s);
I nt er f ace"); l cd .setCur sor (0, 1); Ser i al .pr i nt (" Z nor m = ");
l cd .setCur sor (0, 1); l cd .pr i nt (t emp); Ser i al .pr i nt l n(nor m Accel .Z Axi s);
l cd .pr i nt (" Resumen l cd .wr i t e((b y t e)0); d el a y(200);
d e ci r cui t o"); l cd .pr i nt ("C ");

4
Conclusiones :
Se logro cumplir con el objetivo del funcionamiento de la I nt er f az mpu6050, pero surgieron varios incovenientes
al hora de compilar el codigo, debido al cruce de librerias ( Debido a que puedan existir similitud en los nombres
proporcionados por distintos colaboradores de la comunidad de Arduino).

Vous aimerez peut-être aussi