IMU3000 breakout

Hey, I’m quite a new at electronics, Im working with a group using the IMU3000 breakout. We tried figuring out ourselves how to connect the IMU3000 with our arduino Uno, but we failed to do so…

Tried the internet, and datasheets etc.

http://www.sparkfun.com/products/10251 Is the IMU we are trying to connect the right way with our arduino uno.

Any help regarding connection to the arduino is much appreciated, thanks in advance

This IMU is a 3.3V part. Your Uno is 5V. Any direct connections will fry the IMU. You will need a 3.3V regulator and bi-directional I2C level converters to connect it up. Otherwise, its pretty simple, power (Vcc), ground (GND), I2C clock (SCL) and data (SDA). Other pins not needed unless you want the I2C passthough and the interrupt pin from the IMU.

I2C level shifting is not trivial. You might be better of switching to a processor that runs at 3.3V. Some Arduino’s do.

Getting close to finals is it?

Kinda, we were delayed by quite a bit due to not receiving our stuff, it was much delayed :stuck_out_tongue:

Thanks a lot for the answer, we figured out the stuff meanwhile though. Thank you for your time :slight_smile:

Out of curiosity how did you interface the 3.3V IMU to 5V Uno? It may help others in a similar situation.

At first we wanted to use MOSFET transistors, but we discovered that you can do this internally on the arduino.

We went into the arduino libraries, and disabled the internal pull-up on the analog pins we needed to use, which means it wont be pulled up to the 5volts thereby saving work and components.

Sorry for the late reply, been very busy :slight_smile:

Great idea! I had forgotten about the disable-able pull ups. So I assume you used external pull ups to 3.3V and got it fixed.

This works as long as your I2C bus is 3.3V parts or your higher voltage parts respond properly to a 3.3V signal (many do). Just can’t mix any lower voltage parts unless they are 3.3V tolerant.

I can’t imagine why you would be busy!

I have a question regarding the results we get from our IMU. When we first plugged it in, we stupidly plugged the arduino to 5V for a short amount of time. Could this have damaged the chip, so that the readings could be way off?

We are using this code:

http://arduino.cc/playground/Main/Gyro

Our problem is that our output starts at 0degrees, then slowly goes to 360degrees and then starts over. We can’t quite understand why, it may be the chip drifting a lot and the “deadzone”(threshold piece of the code) that should ignore small changes doesn’t work.

When you say slowly, are you talking about a few seconds or minutes? Any bias will integrate to cause a slowly increasing or decreasing heading angle.

At rest, a gyro will rarely give a zero result. It will have a bias that you will need to subtract. Also note that the bias is often a function of temperature and previous shocks to the unit. It may be needed to provide a calibration mode where you tell the unit it is not moving, capture the reading from the gyro and then subtract that value from it for then on.

That code reads an analog voltage from an analog gyro. Your IMU3000 has a digital interface and so you’ll need a different sketch to read it.

@fll-freak

By using this sketch, the gyro isn’t even responding to when we move it, so it’s just the code not working properly with the IMU. Its about 30seconds-1minute.

@Mee_n_Mac

We know that it’s a digital interface, but it has to be connected to the analog pins? can you explain this a bit more thoroughly??

qwaki:
@Mee_n_Mac

We know that it’s a digital interface, but it has to be connected to the analog pins? can you explain this a bit more thoroughly??

The data is transfered across the I2C interface, using the SDA and SCL pins. You’ll need a different sketch, one that reads data using the I2C interface not using the analog/digital converter. The wiki will do a better job of explaining how the I2C bus works than I will.

http://en.wikipedia.org/wiki/I%C2%B2C

You still need Vcc and ground (GND) and the above SDA and SCL connections. You can ignore the auxilliary pins (AxSCL, AxSDA) and the INT pin. The SDA and SCL are connected to your Arduino as follows.

http://www.arduino.cc/en/Reference/Wire

When used for the I2C interface those pins no longer act as inputs to the ADC.