I have an issue with activating and using the external compass on my ardupilot build.
The board I’m using does have an internal compass, which is not as good and therefore it is suggested to disable the internal compass and use an external compass.
Wing FC 10DOF
IMU:MPU-9250 accelerometer/gyro/Compass (SPI)
OSD:INAV OSD w/ AT7456E chip
VCP & 6x UARTs
2x Motors,4x Servos outputs
Built in inverter for RC input (UART3-RX)
Default firmware : inav_1.9.0_FF_F35_LIGHTNING.HEX
Reference software : inav-configurator
Beitian BN-880 GPS ()
The GPS is conencted to Serial2
Serial2_Function = Mavlink
Works perfect, gets 3D lock in matter of 30 seconds. BEAUTIFUL!
TO make the compass work, I had to resolder the tiny (0603 or 0402) SMD 0 Ohm resistor to the I2C pads,
as per instruction here:
-> Done that, no issues checked continuity
The compass is connected to I2C via SDA/SCL
Following a thread I found relating to this issues:
I changed the following paramters:
COMPASS_ENABLE = ENABLED
COMPASS_EXTERN2 = INTERNAL / tried EXTERNAL
COMPASS_EXTERN3 = INTERNAL / tried EXTERNAL
COMPASS_EXTERNAL = EXTERNAL / tried INTERNAL
COMPASS_OPTIONS = 0 COMPASS_USE = ENABLED COMPASS_USE2 = ENABLED / tried DISABLE COMPASS_USE3 = ENABLED / tried DISABLE COMPASS_TYPEMASK = 56318 -> Disabled anything but HMC5883 which should prefer external compass When performing the compass calibration I see the progress bar move along when I move the external compass. So I know it is connected properly and getting data. However, the issue is that the result is always POOR. Never more than 31/90 points. I have the ability to move the external compass, as nothing is mounted inside the airframe yet and the wires are long enough, to keep the FC steady and move only the compass. Can this be the reason for the poor results, as the software is expecting to also see data from the accelerometer? Any idea what I'm missing, or else can try to get better compass calibration results?