Micro Pix controller and external compass

I’m using a MicroPix controller (not the MINI Pixhawk sold by Radiolink). The controller lets me update the fw to the latest version, but I simply cannot get an external compass to work. The internal one works fine. It doesn’t matter whether I choose compass #1 to be the internal or the external one, or which one I choose to be the primary - it ALWAYS chooses the internal compass. I connected my logic analyzer to the SDA/SCL pins going to the external compass and find that it is using addresses 0x3C and 0x3D and gets “ACKs” from the compass chip. If I disconnect the external compass, I get the WRITES but no ACKs, so I know that I’m not simply seeing activity on the internal chip. I tried a second MicroPix with no luck. And of course, trying to get information from the seller is a useless exercise. If anyone has any suggestions, I’d love to hear them.

EDIT: When I go to CALIBRATE COMPASSES, The progress bar moves as I turn the compass, but when it gets to the end, it ALWAYS fails - even with the “relaxed” setting. I have tried 3 different GPS/Compass units. All of them fail.

What is this “Micro Pix” controller?


I picked this one because the Mini-Pix (from RadioLink) requires a special build of firmware. The Micro-Pix loads the latest just fine (or so I thought).

But I did notice one thing… there seems to be some sort of interaction between the internal and external compasses. First, it always responds to the internal compass - no matter what I do
But if I say use ONLY the external compass, it sometimes gives an error, sometimes not. But I have the compasses sitting on my workbench, not aligned in a 'copter. So I sometimes see the
message “Error compass variance”. Does the code not respond to an external compass if it hasn’t been calibrated? When I try to calibrate the external compass, I get the “green bar” that moves
when I rotate the compass, but when it gets to the end, it always fails - even when it is set to “relaxed”. Does the last stage of compass calibration compare the two compasses, and if they don’t
agree, it fails? Since they aren’t on an airframe the two compasses do not rotate together.

Yu need to start using the raw parameters in the advanced parameters tab, under config, so you can see what is going on. Each compass will get a serial number when it boots up so you can tell which compass is which. You can also note what chipset your compass is using either via the messages tab under the HUD or in mission planner under the mandatory calibration a tab called HWID.

You can disable a compass by eliminating it’s chipset driver under the compass_types parameter. But you can also make all compass external so it won’t use the internal compass for troubleshooting.

Also the status page under the HUD shows you what data is coming in from the compass.

What do you mean by “it always responds to the internal compass”? If you are looking at the HUD and assuming the compass is moving it that’s not always the case. With NO compass enabled it will show yaw movement. Post a parameter file it will show what compass’s are being recognized.

I assumed that since the HUD was always correct, (said NE when pointed NE, S when pointed S) that it was getting compass information from the internal compass. It was too accurate to be just the gyro. I’ll check the logs and files and see what is really going on.