2 Replies Latest reply on Mar 2, 2015 12:25 PM by Bunsen

    Intel Edison on Mini breakout with MPU-6050 on I2C

    SanderJ2

      I have an Intel Edison with the mini breakout board and the MPU-6050 accelerometer and gyroscope from Invensense:

       

      http://www.invensense.com/mems/gyro/mpu6050.html

       

      I have connected it on bus 6 of the mini breakout, i.e.

       

      J20 pin 2: 3.3 V power

      J19 pin 3: Ground

      J17 pin 7: I2C6 SCL

      J17 pin 9: I2C6 SDA

       

      Since the latter two pins are open data collectors, I used two 4.7 kOhm pull-up resistors to 3.3 V level. The MPU-6050 is configured on its default I2C address, 0x68. The pinmode is set to pinmode1, so pin 7 and 9 on J17 are indeed I2C pins.

       

      When I run the Arduino I2C detect tool without the pull-up resistors, it detects the device on address 0x68. However, communicating over the I2C bus is not possible, either with Arduino or libmraa and C++. It gives an error:

      'lost arbitration'. I also used 10 kOhm pull-up resistors, but the same problem appears.

       

      A friend of mine has the Intel Edison on the Galileo board, he can read accelerometer values with no problem with my programs, so the software is OK.

       

      By examining this forum on other sensors, I suspect the I2C SCL and SDA needs a logic level converter to shift 3.3 V to 1.8.

       

      Can anyone confirm a logic level shifter is indeed needed since the MPU-6050 is powered on 3.3 V whilst the mini-breakout is expecting 1.8 V?