Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

New MinIMU-9 help not working

I just received the new MinIMU-9 and I’m having trouble getting it working.
It is the only thing connected to an Arduino Uno and I’m using the code from the Pololu item page.

When using the LM303 Serial Example, the process hangs waiting for a return from "while (Wire.available() < 6);"
This is in the readAcc function.

Which I assume means its never gettin a response from the ACC.

Same with the L3G2400D example.

In the function L3G4200D::read() it hangs at “while (Wire.available() < 6);”

I tested the output power pins VDD and VIO and get 3v and 1.8v

Should the LSM303 Arduino Libary and L3G4200D Arduino Library even work with this new board?

I did read the Note on the product page and I did use that link to LSM303 library. But that wouldn’t account for the L3G2400D libary note working.

Does anyone else actually have this board and code working?
Please respond if you do.

I don’t think it is working at all.

Here is a logical analyzer capture of a program which sets five registers. The L3G4200D never acks its address being sent from the Arduino.


Hi Chuck.

Both of those libraries should work with the new MinIMU-9. We test every board before it ships, and it seems really unlikely that this board would happen to have both a bad LSM303DLM and a bad L3G4200D. Can you tell me how you have everything connected? Also, can you take a close look at your solder joints? One possible explanation for what you’re seeing would be a bad SDA or SDL connection.

- Ben

I inspected the solder joints under a microscope. The solder has wicked into the hole properly.

I have it connected as in the guthub document.

Arduino Uno/Duemilanove MinIMU-9
5V -> VIN
GND -> GND
Analog Pin 5 -> SCL
Analog Pin 4 -> SDA

But, I’m fresh this morning so I’ll go back through each piece of software and try to see why I’m not getting a response.

That all looks right, and you seem know what you’re doing, so this makes me a bit concerned that there could have been a production error. Please let me know if you discover anything further. Also, the person who wrote the libraries might have some additional things for you to try when he gets into work on Monday. If we can’t get to the bottom of this, I’ll get you an RMA number.

- Ben

I decided to concentrate on the LM303 chip.

I tested the power and ground connections.

Just like in the schematic.
1, 2, 3 17 and 28 all have a good ground.
VIO pins 5, 21, 22 and 23 all have 1.8v.
VDD pins 6 and 7 have 3v.

I checked the i2c bus at the SCL pins 20 and 24 and SDA pins 19 and 25 and had a good signal on the logic analyser which matched what was going in to the board. So the signal is getting to the chip.

So I decided to check my Arduino and Logic setup. I had a HMC5843 triple axis magnetometer handy, so I replaced the MiniIMU-9 with this breakout board and loaded some Arduino HMC library example. It worked fine and my logical analyser shows two way communitcation.

So I went mack to the MiniIMU , nothing. No responses from the LM303.

I loaded the serial example from the L2G4200D library. No response from that chip either.

I agree it is strange that both chips would be bad unless they got cooked or something.

I’m using the i2c addresses in the libraries, which are the same as the datasheets.
I wonder if they were changed or something. But still, both chips would be a long shot.

I’m trying to figure out if I can find anyway to get any reaction on of this setup.
If you think of something else let me know.

Hello, Chuck.

Do you have a way to take some clear pictures of your connections between the MinIMU-9 and your Arduino, and some closeups of the board itself? (If you have a camera with a macro mode, it should help you get in-focus pictures.)

If we can’t find anything wrong in your pictures, then I think we would want you to return the board to us to look at (and we could send you a replacement).

- Kevin

Kevin,
Yes, I will later this morning.
I was busy a few days working at my day job. :slight_smile:

I’ll upload a few photos. If you’re like more please ask.
One if these is hooked to the logic analyser.
Chuck






How do you want to handle shipping it back? I have a supply of small USPS Priority Mail boxes and a friendly postman who comes by daily.

Were you able to test any others in the batch? I recommend you do, since the other poster is also having issues. I know he didn’t solder it, but still it isn’t looking good.

I would at least like you to specifically test the next one you send out to me to rule out it not working when I get it.

Chuck

Hello, Chuck.

Thanks for posting your pictures. I couldn’t see anything wrong in them, so I will contact you via email with RMA information.

I did test one MinIMU board from our stock after you first reported your problem, and it seemed to work fine for me. I will verify that the replacement board we send you is good before we ship it.

- Kevin

Kevin,
Thanks.

I’m actually going to order another one right now.
Along with some other parts. I’m taking advantage of the sale.

I just wanted you to know so not to confuse everyone.

I appear to be having the same problem. I have not been able to go through the thorough troubleshooting steps that chuck has, but I managed to determine that the program is hanging at “while (Wire.available() < 6);” line in the L3G4200D library and the same in LSM303.

I’m using an arduino mega. There’s a good electrical connection between all my pins:
5V -> VIN
GND -> GND
Analog Pin 21 -> SCL
Analog Pin 20 -> SDA

Was there ever a resolution or solution?

Hello.

Chuck’s MinIMU-9 had a damaged MOSFET on the SDA level-shifter. We don’t know what caused it, but it could have been from something as simple as an inadvertent static zap. Can you use your oscilloscope to verify that the Arduino is doing what you expect? Can you post a screenshots/pictures of your oscilloscope that make it possible to see exactly what pins 20 and 21 are doing (similar to what Chuck posted, if possible)? Can you also post some close-up, in-focus pictures of your board?

- Ben

Thanks for your help, Ben. I took a look with my scope and the Arduino appeared to be behaving. I got up bright and early this morning to speak to my advisor about this and he told me there didn’t appear to be anything wrong with the IMU chip, at least not visibly. He mentioned that he had a stock of mega’s with something screwy about their firmware that interfered with their I2C communications. I’m sure it’s no coincidence that I’m having this problem and the mega I’m using was borrowed from his stock. I swapped out the boards and the MinIMU spectacularly streamed it’s heading estimations to the serial port! I reprogrammed the firmware on the original and it also worked.
I suppose hanging at “while (Wire.available() < 6);” is actually a fairly general problem of failed communications, so it was a little hasty of me to assume that my problem must have been related to Chucks
Thanks again!

I got my Minimu9 on the black friday sale and have only now started to use it. I got the arduino libraries working and had everything up an running, all the examples worked fine for a while. After having it run for maybe an hour, it stopped working. The compass.init() function would not return. I traced where it was hanging, and it was in the TwoWire library (specificallt the twi utility endTransmission function). At one point, the Serial example program ran for about 2 seconds, then it started hanging again. After some troubleshooting, I looked at it this morning, and it is running again without any changes from where it was not working in the previous night.

I hooked it up the way the examples say to. I am running an Arduino Duemilinove. 5V to VIN, gnd to gnd, scl to analog pin 5, sda to analog pin 4. I am wondering if you might have any insight to this. I might to let it run more today to see if I get the same behavior.

Hello, eakers.

The behavior you are describing suggests that you might have an intermittent connection somewhere. Have you soldered header pins to the IMU and tested them for good electrical connectivity, and checked for any loose wires in your setup? Could you try inspecting the surface mount components on the board carefully to look for any bad solder joints?

- Kevin

Hello there,

I think I have the same issue…

The first IMU that I bought didn’t work at all. I thought I was doing something wrong, despite the fact that a SparkFun BMP085 i2c barometric sensor (btw, fed by the miniIMU) was being detected. I triple-checked the header’s soldering, everything seemed to be fine. When I was removing the IMU from my protoboard I decided to take another try: this time it worked fine, with the 3 address being detected as they should, but as soon as I stoped applying the force that I was doing to remove it from the protoboard it stoped working and I never saw it working again.

The second one worked fine since the beginning, worked for weeks, until today that I decided to change it’s location inside my plastic box, since then the symptoms seem to be like the first board: I saw it working just once when I placed it in my protoboard, then when I removed to connect it back to it’s primary location (inside the box) it just stoped working, not even on the protoboard it is showing activity anymore.

PS.: in both cases the BMP085 continued to work fine. I tried with an Arduino UNO and an Arduino MEGA 1280 - same result.

I just don’t know what to do anymore…
Is there anyway to send these boards back to you for a deeper analysis?

Thanks in advance.

Hello again,

Today in the morning I realized what the problem is about: a tiny MOSFET connected to the SDA pin has a lousy soldering. Pressing it with my fingertip made the device to show up in the detection routine, as shown below (0x77 is the barometric sensor):

Found device at address - 0x77

Scanning for devices…please wait

Found device at address - 0x77

Scanning for devices…please wait

Found device at address - 0x69

Found device at address - 0x77

Scanning for devices…please wait

Found device at address - 0x18

Found device at address - 0x1E

Found device at address - 0x69

Found device at address - 0x77

Scanning for devices…please wait

I decided to try the same procedure with the first board - worked perfectly, but as soon as I stop pressing it, it stoped.

I took some courage and reworked the soldering on the tiny MOSFET: now I have two fully working boards again.

I don’t know if I’m happy or concerned. Happy because I won’t need to spend more money, concerced because I don’t know if I can trust in this piece of hardware; how can I be 100% sure that the other solderings won’t show the same misbehaviour?
This board is critical for my application, a failure will certainly led to a total destruction of it, followed by a very probable personal and material injuries.

But there is one thing I’m pretty sure: my next projects will not relly on Polulu’s boards.