I’m using the Navio2 version from sometime around May 2017, ArduPlane 3.7.1 and an HMC5893 compass installed externally. I have the compass configured as Compass #3 and as the primary.
I also have internal compasses #1 and #2 set as “not used.”
Lately I have been getting a “Bad Compass Health” alarm. In two test flights this week the airplane accurately and successfully finished the test missions both times - with the Bad Compass Health showing. I replaced the compass with another HMC5893 and the same Bad Compass Health alarm came in.
How can I check to see if the external compass is having the problem?
How can I check to see if the alarm is being generated on behalf of one of the internal compasses?
All logs from the flights with this error triggered would help.
I don’t think recovering this is possible at the moment but you can launch ArduPlane on the ground and see if the error comes up. If it does, ssh into the Pi and type dmesg. This is the log I’m after.
I jusr re-calibrated outside, still got the Bad compass Health error, and also got a Compass Variance Error. Shouldn’t the external compass be the only one in effect? I’ve got the external compass set as compass #3, external, and the two other compasses #1 and #2 unchecked.
AFAIK the external compass will always be number one. S I guess you disabled the external one, are are using one of the internal ones (number 3) and marking it as internal.
Just saw this data (please see red circled section in the Mission Planner HUD status screenshot below). Apparently the Z axis value and magfield are not being reported by compass #3, the one being used.
Am I seeing this correctly?
This happened on two different HMC5893 units so I do not think it is the compass itself. What could be causing this?
the numbers in your red circle refer to mz, magfield and ax2 and NOT mx3 my3 and mz3!
they belong to the left side!
“bad compass health” means no signal from compass!
when connecting external compass, it is being recognised automatically as “external”!
Yes I see now that the numbers I saw were for the other equipment and not Compass #3. #3 does have numbers corresponding to its names in the status list. They are in general about 100 unit lower than #1 and #2.
My external compass does get recognized as an external compass.
Changed i2c baudrate from 1000000 to 100000. The system still reported Bad Compass Health after a few minutes of operation. The compass still appeared to be accurately changing heading. In the EKF Status screen the compass bar graph had absolutely no indication.
Another observation: Compass #1 and #2 while not “being used” show some small fluctuations of a few points either way in their mx3, my3, mz3 and magfield3 values in the Mission Planner status screenwhile the plane is sitting still. Compass #3 however shows very little fluctuation, maybe in the tenth’s place now and then.
If you meant compass instead of baro, then how do you deduce that I’d still get Bad Compass Health? Does the i2cdetect output show that the i2c and compass are working?
The more I look at this problem the more I am confused.
In this excerpt from a Telemetry from an actual flight where the “Bad compass Health” alarm was active, the Mission Planner status screen showed all three compasses updating.
If they were all working, then what could the alarm represent?
Here is a new dmesg output file taken during a Bad Compass Health incident.
Even though Mission Planner continues to report the Bad Compass Health indication, the compass seems to be working fine. It is an HMC-5893 connected to the Navio2 by way of the I2C port.
Alarm represent a discrepancy between compass data.
I have also a setup with an external HMC5893 compass. It is an i2c working with a Drotek GPS. As the compass is below the GPS antenna, I set a Roll180° in the compass calibration screen. It is my primary compass.