Probé el sensor GY-521 en Arduino usando la guía de ( http://playground.arduino.cc/Main/MPU-6050 ). Funcionó bien. ¿Alguien puede guiarme sobre cómo puedo agregar otro módulo GY-521, por favor? Planeo usar un total de cuatro de ellos conectados a mi Arduino Uno. ¿Cómo defino los módulos de sensores adicionales en el programa?
La ruptura del sensor GY-521 es un dispositivo esclavo I2C. Siempre que pueda obtener (o configurar) los sensores adicionales como esclavos I2C con diferentes direcciones de esclavo, se controlarán de la misma manera que el primero, aparte de tener un inicio de comunicación separado para cada uno de los sensores y luego leer los datos. atrás de cada sensor por su dirección I2C.
Desafortunadamente, el MPU-6050 , el IC de la unidad de procesamiento de movimiento en el GY-521, solo admite dos direcciones esclavas I2C, por lo que, en el mejor de los casos, podrá encontrar (o modificar) placas de conexión para admitir estas dos direcciones (por el nivel lógico aplicado al pin AD0 / pin 9 del IC). Si realmente necesita más de 2 dispositivos al mismo tiempo, busque otros dispositivos similares y sus placas de conexión correspondientes.
El cableado físico implica que todos los módulos se conecten en paralelo en los mismos pines que ya usó para controlar el primer módulo, también conocido como bus I2C . Esto solo funcionaría si solo uno de los módulos tiene habilitadas sus resistencias pull-up. En el esquema del módulo, estas resistencias pull-up están marcadas como R4 y R5, de 4,7 kiloohmios cada una.
En la placa GY-521 que se muestra en el enlace proporcionado en la pregunta, las resistencias pull-up parecen ser de 2,2 k cada una, como se ve a continuación:
Sería necesario examinar la placa real que tiene para verificar qué pequeñas partes SMD específicas son las resistencias pull-up en ella: no es demasiado difícil de hacer, ya que están conectadas a las almohadillas de pines de cabecera SDA y SCL.
En todas menos una de las placas de sensores, deberá desoldar esas dos resistencias con cuidado, sin alterar ninguna otra pieza u otras uniones de soldadura en la placa. Si no está acostumbrado a trabajar con componentes SMD, puede que sea mejor empezar practicando primero con algunos tableros de desecho recuperados de impresoras u otro hardware en desuso.
Es demasiado pedirle a alguien que escriba el código por usted, pero hay varios tutoriales de Arduino sobre cómo comunicarse con varios dispositivos I2C que comparten un bus. Busque en el mismo sitio donde encontró la guía para este módulo.
Dado que necesita cuatro de estos módulos i2c, que solo admiten dos direcciones (según el pin AD0), tiene cuatro opciones.
El primero es usar múltiples buses i2c en tu Arduino. Hay varias implementaciones de software i2c para Arduinos. Estos son códigos i2c de software (o bitbanged). Agregan gastos generales, pero para la mayoría de los proyectos, debería estar bien. Estos ocupan otros dos pines.
El segundo es usar un chip i2c switch/multiplexor/bus/buffer. Estos chips cambian físicamente entre dos (o más) buses, o usan búfer u otros métodos para permitir que varios buses de un lado se comuniquen en un solo bus del otro lado. Algunos usan una entrada adicional para cambiar, otros son dispositivos i2c en sí mismos (usted envía un mensaje i2c para hacer el cambio).
El tercero y el cuarto son un poco diferentes y requieren un par de pines libres, y depende del chip i2c que esté utilizando. No todos los chips i2c actuarán igual ante esto. El tercero depende de la velocidad que se tarda en reiniciar desde una pérdida de energía, o si se tarda un poco en calibrar. Esto sería desconectar la alimentación de uno de los módulos. Cualquier transistor de señal pequeño o mosfet funcionaría para esto. Dado que el mpu-6050 tiene un procedimiento de encendido recomendado (VDD y luego VLogic), este podría no ser el mejor.
La opción final, los pines ad0 en los cuatro módulos se pueden vincular a cuatro gpio libres en el arduino, y luego puede cambiar el ad0 para que solo uno de los dispositivos i2c tenga la dirección única a la vez. Tres tendrían la misma dirección 0x68 (AD0 bajo), el cuarto tendría 0x69 (AD0 alto), lea el sensor, luego cámbielo para que el tercero tenga la dirección 0x69, léalo, enjuague y repita la espuma. Esto agrega solo un pequeño código a su proyecto sin requerir piezas adicionales. Es posible que esto no funcione si lo hace demasiado rápido, o si al ic no le gusta que se cambie el pin AD0 después del encendido, pero es la forma más económica y sencilla.
No creo que pueda agregar 4 dispositivos I2C idénticos ya que sus ID de dispositivo de bus serán las mismas. ¿Por qué necesitarías 4 acelerómetros? ¿Uno te da todos los ejes de movimiento?
Roberto
Anindo Ghosh
Roberto
Anindo Ghosh
Roberto
Roberto
Roberto
robar estornino
Anindo Ghosh