SparkFun Forums 

Where electronics enthusiasts find answers.

Have questions about a SparkFun product or board? This is the place to be.
By tehuster
#179179
Dear Sparkfunners,

I want to hook up this(https://www.sparkfun.com/products/11486) amazing piece of technology to my arduino uno r3 and eventually to my atmega328 after i got it working.

I looked around on the internet and the datasheet and the internet says:

GND - Arduino GND
VCC - Arduino 3.3v
SDA - Arduino SDA (dedicated pin or Analog 4)
SCL - Arduino SCL (dedicated pin or Analog 5)
INT - Arduino digital pin 2 (?) If the library i'm using is using the interupt.

However the datasheet says:

The logic level of the auxiliary I2C bus is VDD.
The way i understand this is that the I²C bus is 3.3.v? Correct me if i'm wrong please.

Does this mean that i will damage the mpu-9150 when i connect the 5v i²c ports (a5,a4) from my arduino to the 3v i²c ports from the 9150?

Thanks for reading my post, i hope someone can shed some light on this matter. (sorry for the bad english)

Greetings,

Thomas Huster
User avatar
By Ross Robotics
#179180
tehuster wrote: The logic level of the auxiliary I2C bus is VDD.
The way i understand this is that the I²C bus is 3.3.v? Correct me if i'm wrong please.

Does this mean that i will damage the mpu-9150 when i connect the 5v i²c ports (a5,a4) from my arduino to the 3v i²c ports from the 9150?

Thanks for reading my post, i hope someone can shed some light on this matter. (sorry for the bad english)

Greetings,

Thomas Huster
Correct, you will need a logic level shifter between the UNO and the 9150. Like this one, https://www.sparkfun.com/products/12009
By tehuster
#179188
Thanks for the reply codlink, i will get a logic converter.
And going to do some research on atmega 328 running at 3v. I guess i need to clock it down to a lower Mhz but that's another story.
Thanks again.
User avatar
By Ross Robotics
#179189
Yep, it will run at 8MHz just fine at 3V.
By UhClem
#179192
A level converter might not be required.

The I2C bus uses passive resistor pullups (to 3.3V on the MPU9150 board) and active (open drain/collector) pull downs. So the devices driving the bus should only ever pull down and never drive it to their Vcc. You would have to look carefully at the details of the firmware in the Arduino to make sure it never drives those pins high. It shouldn't but you want to be sure.

On the other hand, the MPU9150 specs a latchup current of 100mA which I suspect that the Arduino I/O pins will never reach. Adding a little series resistance would make sure that you couldn't possibly exceed the latchup current. 20 Ohms should be more than enough to limit fault current but not so high as to seriously slow down signal fall times.
By Mee_n_Mac
#179197
UhClem wrote:A level converter might not be required.
I guess so long as the pull-ups are to 3.3V and not the 5V of the Uno. The only question then is whether the pull-ups will:
- create a logic high at the Uno (supposedly this works)
- do so fast enough for the bus speed

The OP might want to try the above situation (no converter) but if it fails to work reliably, then decrease the pull-up value and/or the bus speed.

FWIW : IIRC the speed vs voltage graph for the 328 says it should run at 14+ MHz @ 3.3V. Adafruit clocks some of their "low" voltage Arduino boards at 12 MHz.