Multiplexing MPU9150s (i2c)


i'm trying connect 3 mpu9150 sensors arduino using i2c, can't working. single mpu9150 without multiplexer works well. multiplexer use cd4067be. resistors 2.2k.


a larger image attached.

since can imagine made mistake (i'm not @ electronics), chose ask question here. did wrong? wrong multiplexer maybe? wrong wiring? may programming mistake, it's first attempt write arduino, there isn't wrong. don't try read 2nd , 3rd sensors. attempt test connection first 1 results in "mpu6050 connection failed".

code: [select]

#include "wire.h"
#include "i2cdev.h"
#include "mpu6050.h"

mpu6050 accelgyro;
int en = 12;
int ma = 8;
int mb = 9;
int mc = 10;
int md = 11;
int mux_id = 0;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int16_t mx, my, mz;


void mux(int n) {
   serial.print("mux: "); serial.print(n); serial.println(".");
  digitalwrite(en, low);
  if(n%2==1) {
    digitalwrite(ma, high);
    serial.print(1);
  } else {
    digitalwrite(ma, low);
    serial.print(0);
  }
  if(n%4>1) {
    digitalwrite(mb, high);
    serial.print(1);
  } else {
    digitalwrite(mb, low);
    serial.print(0);
  }
  if(n%8>3) {
    digitalwrite(mc, high);
    serial.print(1);
  } else {
    digitalwrite(mc, low);
    serial.print(0);
  }
  if(n>7) {
    digitalwrite(md, high);
    serial.print(1);
  } else {
    digitalwrite(md, low);
    serial.print(0);
  }
  serial.println("");
}
void setup() {
 
    pinmode(en, output);
    pinmode(ma, output);
    pinmode(mb, output);
    pinmode(mc, output);
    pinmode(md, output);
    mux(0);
   
    wire.begin();

    serial.begin(38400);

    serial.println("initializing i2c devices...");
    accelgyro.initialize();

    // verify connection
    serial.println("testing device connections...");
    serial.println(accelgyro.testconnection() ? "mpu6050 connection successful" : "mpu6050 connection failed");
    delay(2000);
}

void loop() {
    // read raw accel/gyro measurements device
    accelgyro.getmotion9(&ax, &ay, &az, &gx, &gy, &gz, &mx, &my, &mz);

    // display accel/gyro x/y/z values
    serial.print("(");
    serial.print(ax); serial.print(",");
    serial.print(ay); serial.print(",");
    serial.print(az); serial.print(",");
    serial.print(gx); serial.print(",");
    serial.print(gy); serial.print(",");
    serial.print(gz); serial.print(",");
    serial.print(mx); serial.print(",");
    serial.print(my); serial.print(",");
    serial.print(mz);
    serial.println("");

 
    //mux_id = (mux_id + 1)%3;
    //mux(mux_id);
}

resolved multiplexing ad0 instead of scl.


Arduino Forum > Using Arduino > LEDs and Multiplexing > Multiplexing MPU9150s (i2c)


arduino

Comments