This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problem with IMU Connection
#1
Hi all,

I have a tinypilot in a Raspi Zero W and an IMU 20948 connected via I2C extender, 6m cable. The first year the system ran perfectly, no problems. But since the second year I sometimes have problems in the IMU Connection. I want to understand what is happening.

What does it mean, when it says pypilot server: connected? Does that mean, the IMU is connected?
But it says magnetic heading false, pitch false, roll false.
Connection OK, but wrong values?
What can I do?

Thanks for your help
Olaf


Attached Files Image(s)
   
Reply
#2
Connected means the web server connected to the pypilot server maybe confusing.

As for pitch roll false, etc means imu is not working. So try running "i2cdetect -y 1" see if 0x68 is there. Maybe try without 6M extender? can you just mount the imu near the pi and not use it?
Reply
#3
The extender is on my PCBs (Mainboard and IMU). I measured the signals (SCL and SDA) and they look good. The next time the error occurs, I will measure again.
Also I changed the I2C bitrate to 50 kBit in config.txt
Reply
#4
the imu driver might use 100kbit regardless, did you scope the signal?
Reply
#5
Yes, I scoped them. Without my changes in config.txt I measured 62 kHz (or was it 67?) on SCL.
After inserting dtparam=i2c_arm_baudrate=50000 it changed to 50 kHz.
But that did not help, I had the error again. Was not able to scope it then.
Reply
#6
The ICM20948 chip has pins with very little distance between them on the modules. Several users have already noticed that the I2C connection degrades in high humidity. Blowing air through the pins can restore the connection.

However, deposits form at the solder joints. The problem eventually recurs.
The best solution is to replace the module and coat the chip with liquid insulator. Coating provides more effective protection than spraying with tropicalizing varnish.
Reply
#7
Hmm, soldering looks good, and most of the time the IMU works perfectly. but coating is a good idea anyway.

Today while sailing, I often see "Servo Flags: DRIVER_TIMEOUT" What does that mean? Is it a timeout on the I2C? It was when the pilot was running god, heading/pitch/roll constantly changing.
Reply
#8
The ICM20948 IMU chip measures 3x3 mm and has 24 pins on the underside.

Even with a microscope, inspecting the pin solder joints is difficult. However, if the problem disappears after drying the chip with air, the IMU must be replaced, as the IMU's I2C signal is highly sensitive to leakage currents between the integrated circuit's pins.
Reply
#9
Ah, you mean the BGA itself... OK, I can not see, if they look good:-)
But the IMU is in a cabinet inside the boat and never got wet. Anyway I will try.

There's another thing that came in my mind: I use a 5 pin connector: +12V, GND, +3.3V (IMU VCC), SCL, SDA. So the GND of the IMU is the same pin as the GND of the motor. Maybe it's better to use a 6 pin connector with two different GNDs.
Reply
#10
I also notice the problem of blowing breath on sensor can cause it to malfunction, and drying it will work again. I will do more testing also with conformal coating and I am trying new sensors too.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)