Non-linear current readings

Hello,
I’ve recently been building my first Quadplane with Arduplane (a T-1 Ranger VTOL) and the current readings from the current sensor onboard the Matek H743-WLITE I have installed in it outputs readings that almost exponentially deviate from the actual current.

When the three engines are idling or at a low throttle position, the readings are very accurate as confirmed by my multimeter, but when I increase throttle, the current readings will rapidly deviate from the actual current and I will get measurements of about 60-80 amps between the 3x small 1806 motors when just hovering.
My multimeter has a 10 amp fuse so I haven’t been able to precisely measure the actual current at higher throttle levels, but based off of how many mAhs are put back into my batteries after a flight I estimate they are twice as much as the actual readings.

How could I go about solving this? I suspect that a regular adjustment of the BATT_AMP_PERVLT parameter will not serve due to the nonlinear nature of this issue. Feel free to correct me if I am wrong since I haven’t touched Ardupilot in a couple of years.

Thanks for any help that you might be able to provide!

BATT_AMP_PERVLT must be set to the correct value, for the H473wlite to 66.7 initially. The current sensor can measure higher currents fairly accurately, but not low currents, as it is designed for a measuring range of up to 220A. You should therefore calibrate the BATT_AMP_PERVLT for the expected current in flight, preferably using the recharging method. The current at idle is measured rather inaccurately, deviations of 0.5-1A are normal here.

And don’t forget to solder the capacitor to the supply pins of the controller. It can prevent interference pulses that make the current measurement inaccurate.

1 Like

Param BATT_AMP_PERVLT was already set to 66.7 which is why I am so confused. I know the current sensors tend to be accurate at higher amperages and not at lower ones but this is the exact opposite.
I just did a test flight and used the formula New AMP_PERVLT = OLD AMP_PERVLT*(Charged mAh/logged mAh) and have gotten the default value of 40. Seems a bit odd given that Matek specifies that it should be 66.7 but I’ll need to test it out.