{"id":3072,"date":"2015-09-09T20:02:59","date_gmt":"2015-09-09T18:02:59","guid":{"rendered":"http:\/\/www.diarioelectronicohoy.com\/blog\/?p=3072"},"modified":"2019-06-13T18:54:20","modified_gmt":"2019-06-13T16:54:20","slug":"sensor-mpu6050","status":"publish","type":"post","link":"https:\/\/www.diarioelectronicohoy.com\/blog\/sensor-mpu6050","title":{"rendered":"Sensor MPU6050."},"content":{"rendered":"<h5 style=\"text-align: center;\">Practicas con el sensor de 3 ejes y Arduino.<\/h5>\n<h3>INTRODUCCI\u00d3N.<\/h3>\n<p style=\"text-align: justify;\">Cuando iniciamos una nueva tarea que requiere de un nuevo dispositivo al que no hab\u00edamos tenido la ocasi\u00f3n de utilizar, lo propio es tener dudas y naturalmente debemos buscamos informaci\u00f3n que nos aclare los conceptos y conocimientos que se requieren para manejar, cuando no dominar el nuevo \u00abjuguete\u00bb. Si usted se encuentra en este caso, tal vez haya llegado al sitio que estaba esperando. Espero aclararle las preguntas que tiene en estos momentos.<\/p>\n<p style=\"text-align: justify;\">El MPU-6050 no es caro, especialmente teniendo en cuenta el hecho de que combina un aceler\u00f3metro y un giroscopio en el mismo dispositivo.<\/p>\n<p style=\"text-align: justify;\">Comprendo que tenga dudas, a la hora de configurar un IMU (Unidad de Medici\u00f3n de Inercia), utilizando un Arduino para obtener su lectura, ya que no es nada sencillo, pues la mayor\u00eda de estas unidades, utilizan protocolos como I2C o SPI que dan valores emp\u00edricos que requieren un conocimiento y desarrollo matem\u00e1tico importante. Sin mencionar que, algunas IMU siempre dan lecturas err\u00f3neas, dependiendo de como se utilicen que, es el caso en que se encuentran los principiantes. Veremos como depurar esos valores adem\u00e1s, calcularemos \u00e1ngulos de posici\u00f3n y aprovechando herramientas como los filtros para el \u00abruido\u00bb con un Filtro Complementario (Complementary Filter). Este es el aspecto que tiene este sensor:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/el-sensor-mpu-6050\/mpu6050\" rel=\"attachment wp-att-3074\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3074\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2015\/09\/mpu6050.jpg\" alt=\"mpu6050\" width=\"150\" height=\"195\" \/><\/a>Fig. 1\u00a0MPU-6050 (15x21mm)<\/p>\n<p style=\"text-align: justify;\">En este tutorial, har\u00e9 una introducci\u00f3n b\u00e1sica al MPU-6050 y mostrar\u00e9 c\u00f3mo se puede conectar a un Arduino. Veremos como hacer un modelo 3D utilizando los datos de MPU-6050 y Arduino. Este art\u00edculo viene a ser una descripci\u00f3n de la experiencia que he vivido, en mi primer contacto con un sensor de nueva generaci\u00f3n de sensores de movimiento, inercia y aceleraci\u00f3n, en el caso concreto del Invensense MPU-6050. Los sensores IMU b\u00e1sicos (Unidad de Medici\u00f3n de Inercia), compatibles con los microcontroladores actuales como el que nos ocupa el Arduino, para interactuar con el mejor sensor IMU disponible y econ\u00f3mico.<\/p>\n<h3>EL SENSOR MPU-6050.<\/h3>\n<p style=\"text-align: justify;\">Seg\u00fan el fabricante. <i>\u00abLa unidad de procesamiento de movimiento MPU-60X0 es la primera soluci\u00f3n del mundo en procesamiento de movimientos, con la fusi\u00f3n integrada de sensores con 9-ejes, la fusi\u00f3n de sensores utiliza su\u00a0motor propiedad MotionFusion&#x2122; probado en el campo de tel\u00e9fonos m\u00f3viles, tabletas, aplicaciones, controladores de juegos, mandos a distancia, puntero de movimiento y otros dispositivos de consumo<\/i>.<\/p>\n<p style=\"text-align: justify;\"><i>El MPU-60X0 tiene integrado un giroscopio MEMS de 3 ejes, un aceler\u00f3metro de 3 ejes MEMS, y un procesador digital de movimiento (DMP&#x2122;) motor acelerador de hardware con un puerto I2C auxiliar que se conecta a las interfaces de sensores digitales de terceras partes tales como magnet\u00f3metros. Cuando se conecta a un magnet\u00f3metro de 3 ejes, el MPU-60X0 entrega una salida completa de 9 ejes MotionFusion para su primario I2C o puerto SPI (SPI est\u00e1 disponible s\u00f3lo en MPU-6000)\u00bb.<\/i><\/p>\n<p style=\"text-align: justify;\"><i>El MPU-60X0 combina la aceleraci\u00f3n y el movimiento de rotaci\u00f3n m\u00e1s la informaci\u00f3n de rumbo en un \u00fanico flujo de datos para la aplicaci\u00f3n. Esta integraci\u00f3n de la tecnolog\u00eda MotionProcessing&#x2122; presenta un dise\u00f1o m\u00e1s compacto y tiene ventajas de costos inherentes en comparaci\u00f3n con soluciones discretas de giroscopio m\u00e1s aceler\u00f3metro. El MPU-60X0 tambi\u00e9n est\u00e1 dise\u00f1ado para interactuar con m\u00faltiples sensores digitales no inerciales, tales como sensores de presi\u00f3n, en su bus I2C auxiliar maestro. El MPU-60X0 es un procesador de movimiento de segunda generaci\u00f3n y es la huella compatible con la familia MPU-30X0.<\/i><\/p>\n<p style=\"text-align: justify;\">As\u00ed pues, el sensor MPU-6050 es una peque\u00f1a pieza tecnol\u00f3gica de procesamiento de movimiento. El cual mediante la combinaci\u00f3n de un MEMS (Sistemas Microelectromec\u00e1nicos) giroscopio de 3 ejes y un MEMS aceler\u00f3metro de 3 ejes en la misma pastilla de silicio junto con un DMP&#x2122; (Movimiento Digital Processor&#x2122;), es capaz de procesar los algoritmos de movimientos complejos de 9 ejes (MotionFusion&#x2122;) en una placa.<\/p>\n<p style=\"text-align: justify;\">El MPU-6050 elimina los problemas de alineaci\u00f3n del eje transversal que puede arrastrarse hacia arriba en porciones discretas. Las piezas integran el algoritmo MotionFusion para 9 ejes &#8216;pueden incluso acceder a magnet\u00f3metros externos u otros sensores a trav\u00e9s de un bus I2C auxiliar maestro, permitiendo reunir un conjunto completo de dispositivos sensores de datos, sin la intervenci\u00f3n del procesador del sistema. El MPU-6050 es un 6 DOF (grados de libertad = Degrees of Freedom) o un sensor IMU de seis ejes, lo que significa que da seis valores de salida.<\/p>\n<p style=\"text-align: justify;\">El procesador digital de movimiento (DMP) incorporado se encuentra dentro de la MPU-6050 y descarga el c\u00e1lculo de los algoritmos de procesamiento de movimiento desde el procesador host. Los datos resultantes pueden ser le\u00eddos de los registros de la DMP, o pueden estar tamponados en un FIFO. El DMP tiene acceso a uno de los pines externos de la MPU, que pueden ser utilizados para la generaci\u00f3n de interrupciones. El prop\u00f3sito del DMP es descargar los requisitos de temporizaci\u00f3n y la potencia de procesamiento del procesador anfitri\u00f3n.<\/p>\n<p style=\"text-align: justify;\">El sensor MPU-6050 es muy preciso, ya que contiene una conversi\u00f3n hardware de 16 bits de <b>A\/D<\/b> por cada canal, para la digitalizaci\u00f3n de las salidas del aceler\u00f3metro. Para ello capta los canales <b>x, y<\/b> y <b>z<\/b> al mismo tiempo. Como se ha comentado, el sensor utiliza el <a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/introduccion-al-i2c-bus\">I2C-bus<\/a> para interconectar con el Arduino. Aunque algunas versiones (como la mostrada) llevan un regulador que permite conectarla a 5V.<br \/>\n<span style=\"color: #ff0000;\">\u00a0 \u00a0 \u00a0 \u00a0 <b>Precauci\u00f3n con la gama de tensiones de funcionamiento desde 2.37V a 3.45V.<\/b><\/span><\/p>\n<h3>La lectura de los valores brutos es f\u00e1cil.<\/h3>\n<p style=\"text-align: justify;\">La lectura de los valores brutos para el aceler\u00f3metro y el giroscopio es f\u00e1cil. El modo de suspensi\u00f3n tiene que ser inhabilitado, y luego los registros encontrados para el aceler\u00f3metro y el giroscopio se pueden leer.<\/p>\n<p style=\"text-align: justify;\">Sin embargo, el sensor tambi\u00e9n contiene un buffer FIFO 1024 byte. Los valores de los sensores pueden ser programados para poder colocarlos en la memoria intermedia FIFO. Y el tamp\u00f3n podr\u00e1 ser le\u00eddo por el Arduino.<\/p>\n<p style=\"text-align: justify;\">El buffer FIFO se utiliza junto con la se\u00f1al de interrupci\u00f3n. Si los datos de lugares MPU-6050 en el b\u00fafer FIFO, el Arduino indica con la se\u00f1al de interrupci\u00f3n por lo que el Arduino sabe que hay datos en el b\u00fafer FIFO a la espera de ser le\u00eddo.<\/p>\n<h3>Las cosas se ponen realmente complejas con el \u00abDMP\u00bb.<\/h3>\n<p style=\"text-align: justify;\">El sensor tiene un \u00abprocesador digital de movimiento\u00bb (DMP), tambi\u00e9n llamado \u00ab<em>unidad de procesamiento digital de movimiento<\/em>\u00ab. Este DMP se puede programar con firmware y es capaz de hacer c\u00e1lculos complejos con los valores de los sensores.<\/p>\n<p style=\"text-align: justify;\">Para esta DMP, InvenSense tiene una pol\u00edtica de des\u00e1nimo, al no suministrar suficiente informaci\u00f3n de c\u00f3mo programar el DMP. Sin embargo, algunos han usado la <span style=\"text-decoration: underline;\">ingenier\u00eda inversa<\/span> para capturar firmware.<\/p>\n<p style=\"text-align: justify;\">El DMP (\u00abProcesador digital de movimiento\u00bb) puede hacer c\u00e1lculos r\u00e1pidos o directamente en el chip. Esto reduce la carga para el microcontrolador (como el Arduino).\u00a0Vamos ser m\u00e1s pr\u00e1cticos.<\/p>\n<h3>Boceto Corto Ejemplo.<\/h3>\n<p style=\"text-align: justify;\">El boceto corto de\u00a0ejemplo es un esbozo muy breve y muestra todos los valores brutos\u00a0(de aceler\u00f3metro, giroscopio y temperatura). El esquema pr\u00e1ctico se muestra en la figura 3. Deber\u00eda funcionar en Arduino Uno, Nano, Leonardo, y tambi\u00e9n Due.<\/p>\n<p><!-- lang=\"cpp\" file=\"download.txt\" --><\/p>\n<pre lang=\"cpp\" file=\"download.txt\">\/\/ MPU-6050 Short Example Sketch\r\n\/\/ By Arduino User JohnChi\r\n\/\/ August 17, 2014\r\n\/\/ Public Domain\r\n#include\r\nconst int MPU=0x68;  \/\/ I2C address of the MPU-6050\r\nint16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;\r\nvoid setup(){\r\n  Wire.begin();\r\n  Wire.beginTransmission(MPU);\r\n  Wire.write(0x6B);  \/\/ PWR_MGMT_1 register\r\n  Wire.write(0);     \/\/ set to zero (wakes up the MPU-6050)\r\n  Wire.endTransmission(true);\r\n  Serial.begin(9600);\r\n}\r\nvoid loop(){\r\n  Wire.beginTransmission(MPU);\r\n  Wire.write(0x3B);  \/\/ starting with register 0x3B (ACCEL_XOUT_H)\r\n  Wire.endTransmission(false);\r\n  Wire.requestFrom(MPU,14,true);  \/\/ request a total of 14 registers\r\n  AcX=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x3B (ACCEL_XOUT_H) &amp; 0x3C (ACCEL_XOUT_L)    \r\n  AcY=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x3D (ACCEL_YOUT_H) &amp; 0x3E (ACCEL_YOUT_L)\r\n  AcZ=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x3F (ACCEL_ZOUT_H) &amp; 0x40 (ACCEL_ZOUT_L)\r\n  Tmp=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x41 (TEMP_OUT_H) &amp; 0x42 (TEMP_OUT_L)\r\n  GyX=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x43 (GYRO_XOUT_H) &amp; 0x44 (GYRO_XOUT_L)\r\n  GyY=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x45 (GYRO_YOUT_H) &amp; 0x46 (GYRO_YOUT_L)\r\n  GyZ=Wire.read()&lt;&lt;8|Wire.read();  \/\/ 0x47 (GYRO_ZOUT_H) &amp; 0x48 (GYRO_ZOUT_L)\r\n  \r\n  Serial.println(\"MPU-6050\");\r\n  Serial.print(\"Datos del Acelerometro.\");\r\n  Serial.print(\"AcX = \"); Serial.print(AcX);\r\n  Serial.print(\" | AcY = \"); Serial.print(AcY);\r\n  Serial.print(\" | AcZ = \"); Serial.print(AcZ);\r\n  Serial.print(\" | Tmp = \"); Serial.println(Tmp\/340.00+36.53);  \/\/equation for temperature in grados C a partir de hoja de datos\r\n\r\n  Serial.println(\"Datos del Giroscopo.\");\r\n  Serial.print(\"GyX = \"); Serial.print(GyX);\r\n  Serial.print(\" | GyY = \"); Serial.print(GyY);\r\n  Serial.print(\" | GyZ = \"); Serial.println(GyZ);\r\n  delay(333);\r\n}\r\n<\/pre>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/el-sensor-mpu-6050\/bocetocorto\" rel=\"attachment wp-att-3112\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3112\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2015\/09\/bocetocorto-300x222.gif\" alt=\"bocetocorto\" width=\"300\" height=\"222\" \/><\/a>Fig.2 Boceto corto.<\/p>\n<h3>UTILIZANDO EL MPU-6050.<\/h3>\n<p style=\"text-align: justify;\">El esquema que trazaremos en este caso es muy sencillo y conocido, utiliza un pin de interrupci\u00f3n de los que dispone el Arduino. Por lo que conectaremos el pin digital #2 del Arduino (pin de interrupci\u00f3n 0) al pin marcado como INT en el MPU-6050. Si el m\u00f3dulo de su MPU-6050 tiene un pin de 5V, entonces usted puede conectarlo al pin 5V del Arduino. En caso contrario, tendr\u00e1 que conectarlo al pin 3.3V. A continuaci\u00f3n, el GND del Arduino est\u00e1 conectado al GND del MPU-6050. Como el MPU-6050 que se comunica con el protocolo I2C, conectar el pin etiquetado como SDA en el MPU 6050 al pin anal\u00f3gico del Arduino A4 (SDA). Y el pin etiquetado como SCL en el MPU 6050 al pin anal\u00f3gico del Arduino A5 (SCL). Recomiendo utilizar cables flexibles y relativamente largos, ya hemos terminado el cableado al Arduino, como se muestra en el siguiente diagrama que es muy com\u00fan.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/el-sensor-mpu-6050\/esq_mpu6050\" rel=\"attachment wp-att-3080\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3080\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2015\/09\/esq_mpu6050-300x178.gif\" alt=\"esq_mpu6050\" width=\"300\" height=\"178\" \/><\/a>Fig. 3\u00a0Esquema MPU-6050<\/p>\n<p style=\"text-align: justify;\">Descargue la librer\u00eda MPU-6050 para Arduino. Usted puede encontrar la librer\u00eda <a href=\"http:\/\/playground.arduino.cc\/Main\/MPU-6050\" target=\" \" rel=\"noopener noreferrer\">aqu\u00ed<\/a>, descomprima \/extraiga la carpeta llamada \u00abMPU6050\u00bb y pegarla dentro de la carpeta \u00ablibrary\u00bb del Arduino dentro de la carpeta de bibliotecas. Haga lo mismo con la librer\u00eda <a href=\"https:\/\/github.com\/jrowberg\/i2cdevlib\">I2Cdevlib<\/a>, si no la tiene en su Arduino.<\/p>\n<p style=\"text-align: justify;\">Para utilizar el MPU-6050, debemos saber la direcci\u00f3n I2C con la aplicaci\u00f3n que hice en su d\u00eda para estos casos, <a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/scaner-i2c-bus\">este es el enlace<\/a>.<\/p>\n<h3>CARGAR EL C\u00d3DIGO Y PROBAR EL ARDUINO MPU 6050.<\/h3>\n<p style=\"text-align: justify;\">Si usted ha instalado correctamente la librer\u00eda, vaya a la carpeta ejemplos y encontrar\u00e1 los archivos: MPU6050_raw.ino, MPUTeapot.pde y la carpeta MPU6050_DMP6 con el archivo que nos interesa: MPU6050_DMP6.ino es el que debe cargar\u00a0en Arduino. La forma sencilla es, cuando abra el IDE Arduino, en: <i>Archivo -&gt; Ejemplos<\/i> se puede ver el \u00abMPU6050\u00bb<i>.<\/i> A continuaci\u00f3n, abra el programa de ejemplo de: <i>Archivo -&gt; ejemplos -&gt; MPU6050 -&gt;<\/i> <strong>Ejemplos -&gt; MPU6050_DMP6,<\/strong>\u00a0el cual viene muy descrito y le ser\u00e1 de utilidad leer su contenido, por dicho motivo no expondr\u00e9 aqu\u00ed, este\u00a0archivo.<\/p>\n<p style=\"text-align: justify;\">Ahora, tiene que subir este c\u00f3digo a su Arduino. Despu\u00e9s de cargar el c\u00f3digo, abra el monitor Serie y ajuste la velocidad de transmisi\u00f3n sobre 115200. A continuaci\u00f3n compruebe si ve en el monitor de serie algo como, \u00abInicializando dispositivos I2C &#8230;\u00bb. Si no lo ve, s\u00f3lo tiene que pulsar el bot\u00f3n de reinicio de Arduino. Ahora, ver\u00e1 una l\u00ednea que dice \u00abEnviar cualquier car\u00e1cter para comenzar la programaci\u00f3n y demostraci\u00f3n DMP:\u00bb. As\u00ed que s\u00f3lo tiene que escribir cualquier car\u00e1cter en el monitor serie y enviarlo. Y usted comenzar\u00e1 a ver los valores de gui\u00f1ada, cabeceo y balanceo que vienen de la MPU-6050. [<em>Seg\u00fan Wikipedia.\u00a0Dado un sistema de tres ejes fijos en el aeroplano, llamados eje de gui\u00f1ada (yaw en ingl\u00e9s), de cabeceo (pitch) y de alabeo(roll), existen tres rotaciones principales, normalmente llamadas igual que el eje sobre el que se producen, que permiten alcanzar el sistema del aeroplano desde el sistema de referencia&#8230;<\/em>]<br \/>\nAl igual que:<\/p>\n<p><!-- lang=\"cpp\" file=\"download.txt\" --><\/p>\n<pre lang=\"cpp\" file=\"download.txt\">\/*\r\n*  mpu6050.pde\r\n*\r\n*  http:\/\/robologs.net\/2014\/10\/15\/tutorial-de-arduino-y-mpu-6050\/\r\n*\r\n*\/\r\n\r\n#include \"Wire.h\"  \/\/ libreria\r\n \r\n\/\/Direcci\u00f3n I2C de la IMU\r\n#define MPU 0x68 \/\/ asegurarse que esta direcci\u00f3n I2C de la IMU\r\n \r\n\/\/ Ratios de conversion especificados en la documentaci\u00f3n\r\n\/\/ Deberemos dividir los valores que nos d\u00e9 el Giroscopio y el \r\n\/\/ Aceler\u00f3metro entre estas constantes para obtener un valor \r\n\/\/ coherente. RAD_A_DEG es la conversi\u00f3n de radianes a grados.\r\n#define A_R 16384.0  \/\/ aceleracion\r\n#define G_R 131.0    \/\/ giroscopo\r\n \r\n\/\/Conversion de radianes a grados 180\/PI\r\n#define RAD_A_DEG = 57.295779 \r\n \r\n\/\/MPU-6050 da los valores en enteros de 16 bits\r\n\/\/Valores sin refinar\r\nint16_t AcX, AcY, AcZ, GyX, GyY, GyZ;\r\n \r\n\/\/Angulos\r\nfloat Acc[2];\r\nfloat Gy[2];\r\nfloat Angle[2];\r\n\r\nvoid setup()\r\n{\r\n Wire.begin();\r\n Wire.beginTransmission(MPU);\r\n Wire.write(0x6B);\r\n Wire.write(0);\r\n Wire.endTransmission(true);\r\n Serial.begin(9600);\r\n}\r\n\r\nvoid loop()\r\n{\r\n   \/\/Leer los valores del Acelerometro de la IMU\r\n   Wire.beginTransmission(MPU);\r\n   Wire.write(0x3B); \/\/Pedir el registro 0x3B - corresponde al AcX\r\n   Wire.endTransmission(false);\r\n   Wire.requestFrom(MPU,6,true); \/\/A partir del 0x3B, se piden 6 registros\r\n   AcX=Wire.read()&lt;&lt;8|Wire.read(); \/\/Cada valor ocupa 2 registros\r\n   AcY=Wire.read()&lt;&lt;8|Wire.read();\r\n   AcZ=Wire.read()&lt;&lt;8|Wire.read();\r\n \r\n    \/\/Se calculan los \u00e1ngulos Y, X respectivamente.\r\n   Acc[1] = atan(-1*(AcX\/A_R)\/sqrt(pow((AcY\/A_R),2) + pow((AcZ\/A_R),2)))*RAD_TO_DEG;\r\n   Acc[0] = atan((AcY\/A_R)\/sqrt(pow((AcX\/A_R),2) + pow((AcZ\/A_R),2)))*RAD_TO_DEG;\r\n \r\n   \/\/Leer los valores del Giroscopio\r\n   Wire.beginTransmission(MPU);\r\n   Wire.write(0x43);\r\n   Wire.endTransmission(false);\r\n   Wire.requestFrom(MPU,4,true); \/\/A diferencia del Acelerometro, solo se piden 4 registros\r\n   GyX=Wire.read()&lt;&lt;8|Wire.read();\r\n   GyY=Wire.read()&lt;&lt;8|Wire.read();\r\n \r\n   \/\/Calculo del angulo del Giroscopio\r\n   Gy[0] = GyX\/G_R;\r\n   Gy[1] = GyY\/G_R;\r\n \r\n   \/\/Aplicar el Filtro Complementario\r\n   Angle[0] = 0.98 *(Angle[0]+Gy[0]*0.010) + 0.02*Acc[0];\r\n   Angle[1] = 0.98 *(Angle[1]+Gy[1]*0.010) + 0.02*Acc[1];\r\n \r\n   \/\/Mostrar los valores por consola\r\n   Serial.print(\"Angle X: \"); Serial.print(Angle[0]); Serial.print(\"\\n\");\r\n   Serial.print(\"Angle Y: \"); Serial.print(Angle[1]); Serial.print(\"\\n------------\\n\");\r\n \r\n   delay(10); \/\/Nuestra dt sera, pues, 0.010, que es el intervalo de tiempo en cada lectura.\r\n}<\/pre>\n<p style=\"text-align: justify;\">Como ya se sabe, cada dispositivo I2C contiene una direcci\u00f3n \u00fanica que lo representa, en el caso de la plaquita GY-521, por lo general es la direcci\u00f3n 0\u00d768 o 0\u00d769. Una buena forma de encontrar la direcci\u00f3n exacta es utilizando el boceto <a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/introduccion-al-i2c-bus\">i2c_scanner<\/a>, cargamos el boceto en el Arduino y en la consola serial debemos ver la direcci\u00f3n de nuestro m\u00f3dulo MPU6050.<\/p>\n<h3>Como leer datos RAW del sensor.<\/h3>\n<p style=\"text-align: justify;\">Para obtener dichos datos y al mismo tiempo obtener mayor informaci\u00f3n, podemos leer y usar el boceto publicado en el art\u00edculo MPU-6050 de <a href=\"http:\/\/playground.arduino.cc\/Main\/MPU-6050\">ArduinoPlayGround<\/a>.<\/p>\n<p style=\"text-align: justify;\">Dependiendo de la direcci\u00f3n de nuestro modulo (0\u00d769 o 0\u00d768), debemos indicar dicha direcci\u00f3n en la constante MPU6050_I2C_ADDRESS.<\/p>\n<p style=\"text-align: justify;\">Ahora en el monitor serial, debemos poder ver un conjunto de valores que arroja el m\u00f3dulo.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/el-sensor-mpu-6050\/monitor-serial\" rel=\"attachment wp-att-3098\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3098\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2015\/09\/monitor-serial-300x207.gif\" alt=\"monitor-serial\" width=\"300\" height=\"207\" \/><\/a>Fig.\u00a03 Monitor Serial.<\/p>\n<p style=\"text-align: justify;\">Con este boceto el monitor nos muestra los \u00e1ngulos x e y que es lo que hemos pedido que muestre.<\/p>\n<p style=\"text-align: justify;\">Este es un tutorial que nos sirve para entrar en este mundo de la nueva generaci\u00f3n de sensores que la industria pone a nuestro alcance. El l\u00edmite en estos momentos una vez m\u00e1s podemos asegurar que est\u00e1 en manos de los t\u00e9cnicos cada vez mejor formados y por supuesto ayudados por las t\u00e9cnicas puestas a su alcance. Volveremos sobre este dispositivo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Practicas con el sensor de 3 ejes y Arduino. INTRODUCCI\u00d3N. Cuando iniciamos una nueva tarea que requiere de un nuevo dispositivo al que no hab\u00edamos tenido la ocasi\u00f3n de utilizar, lo propio es tener dudas y naturalmente debemos buscamos informaci\u00f3n que nos aclare los conceptos y conocimientos que se requieren para manejar, cuando no dominar [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":3074,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[22,15,276],"tags":[275],"class_list":["post-3072","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-microcontroladores","category-sensor-mpu6050","tag-mpu-6050-imu-unidad-de-medicion-de-inercia"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/3072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/comments?post=3072"}],"version-history":[{"count":38,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/3072\/revisions"}],"predecessor-version":[{"id":4812,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/3072\/revisions\/4812"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media\/3074"}],"wp:attachment":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media?parent=3072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/categories?post=3072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/tags?post=3072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}