Paso 4: Configuración de acelerómetro de I2C-giroscopio
TL; DR:
1. NO CONECTE A 5V.
2. no flipar.
3. usar esta librería: https://github.com/jrowberg/i2cdevlib
4. no de la placa en la soldadura hasta que se haya ejecuta una calibración.
Se utilizó un MPU6050 de SparkFun, https://www.sparkfun.com/products/11028. Estos se pueden encontrar en Amazon por sólo $10 y lo tengo en la buena palabra que trabajan bien, pero el cableado será un poco diferente de las imágenes. Este paso servirá como un fondo genérico y un tutorial para configurar y utilizar un acelerómetro I2C, ya que la mayoría de esta información está dispersa entre hilos de foro una docena.
¿Qué es I2C?
Usted pudo haber visto tableros simples tales como https://www.sparkfun.com/products/9269 con salidas analógicas individuales para X, Y y Z. Los sentido; cada salida corresponde a un eje del acelerómetro. Luego puede ve una placa de I2C y flipar un poco dentro. I2C es un estándar de comunicación donde la Junta comunica gran cantidad de información mediante pulsos de lógica digital en lugar de salidas analógicas. El MPU6050 tiene 6-ejes (giroscopio de 3, 3-acelerómetro) así si fueran analógicas utilizan todos los puertos de tu Arduino. La línea de fondo es el Arduino envía una señal de control digital a la Junta y lee en información digital de los pines de entrada.
Cableado:
El cableado para nuestro MPU6050 específico es como sigue. Nota el código de biblioteca asume son los insumos utilizados. Otros tableros será similares.
VDD -> 3.3v
GND -> tierra
INT -> digital 2
SCL -> A5
SDA -> A4
VIO -> tierra
Corriente 5v a través de la junta puede y romperlo, así que no. Algunas placas de MPU6050 tienen reguladores de voltaje que deben protegerlo, pero no merece la pena el riesgo. Si la board tiene un pin de AD0, debe conectarse a tierra. En nuestra junta que del puerto VIO está conectado a un interno AD0, así que sirve como el perno AD0. Si AD0/VIO está conectada a tierra o a VDD en realidad determina la dirección de memoria que la Junta se interrelaciona con el Arduino (0x68 o 0x69). Si esto es confuso, no preocuparse por ello, sólo de alambre a tierra. Si tiene problemas intente cambiar VIO/AD0 desde suelo a VDD.
Código:
Ahora las cosas se ponen un poco difíciles. Que tienes un poco codificación / jugar con experiencia de software. Si no, solo vas lentamente y google nada no sabes. Hay mucha información por ahí. Voy a intentar ser lo más claro posible, pero no puedo cubrir todos los problemas
Una vez que el MPU conectado al Arduino, encenderla y añadir este código de analizador de I2C: http://playground.arduino.cc/Main/I2cScanner#.Uxh...
Desplácese hasta la parte inferior y copiar y pegar el código en un dibujo vacío y ejecutarlo. Abra al serial monitor (Tools -> a Serial Monitor) y asegúrese de que estar en Puerto 9600 (inferior izquierda). Que está en el código, pero de todos modos no leerlo.
Si todo funciona se debe encontrar un dispositivo I2C y darle una dirección de memoria 0x68 o 0x69. Escriba. Si obtiene errores Revise el cableado.
Ahora vas a querer instalar código que realmente habla el acelerómetro/giroscopio. Hay un montón de cosas por ahí pero la he encontrado que funciona mejor es https://github.com/jrowberg/i2cdevlib. Haga clic en "Descarga Zip", recuerda donde te pero (probablemente escritorio) y luego descomprimirlo. Abrir el programa IDE de Arduino. Ahora vamos a esbozar -> Biblioteca de importación -> Agregar biblioteca. Debe agregar la carpeta de I2Cdev y las carpetas de MPU6050 como bibliotecas (están bajo Arduino en la carpeta).
Una vez que están instalados deben abrir el MPU6050_DMP6 (es en MPU6050 -> ejemplos) archivo en Arduino. Sugeriría leer (incluso si no sabes mucho código), es bien comentado y cuenta con algunas opciones de cómo salidas las lecturas de la tabla. Si tenes en 0x69 desde el escáner, debe descomentar una línea en la parte superior del código (después de los #includes; acabo de leer los comentarios tonto) ya que el valor predeterminado es 0x68. Ahora debe compilar el programa.
Subir el código, abrir el puerto serie (115200 esta vez) y sigue las instrucciones. Felicidades, usted debe conseguir trabajando las lecturas de la Junta. Si le parece a la deriva al principio, no te preocupes lo necesita unos 10 segundos de ser todavía para venir a descansar. También la salida de desvío se deriva (un poco), como lo no ha hecho ningún marco de referencia. La Junta aprovecha el acelerómetro gravedad encontrar "hacia abajo" que actúan como referencia para la echada y del rodillo. Algunas placas más de lujo contienen una brújula para la referencia.
Ahora antes de ir, querrá volver a calibrar la placa. Encontrar una superficie nivelada y asegúrese de que la placa es plana con la etiqueta hacia arriba.
Entonces debe ejecutar este código handy dandy calibración disponible en la parte superior, gracias a Luis Ródenas. Otra vez el valor por defecto es 0x68, pero usted puede cambiar eso. Asegúrese de que usted escriba los valores de desvío que le da. Puede y debe utilizar éstos como los desplazamientos en el código de MPU6050_DMP6 (y más adelante nuestro código quadcopter).
Ahora tiene un acelerómetro/giroscopio trabajo y útil. Ahora sugiero pasa algún tiempo jugar con el código MPU6050_DMP6 y tratando de los tipos de salida diferentes.