I’m currently setting up a 1S build and have a reading coming into qGroundControl showing the current battery voltage.
PX4 and QGroundControl are set up to use a 1S battery (4.2V to 3.5V).
If I use a power supply through the self-built voltage divider at a higher voltage to get the voltage reading out to QGroundControl - I can get it to show the voltage. The scaling has also been amended to give the right result.
However - I cannot seem to get QGroundControl to register any voltage under about 5.5V.
With this being a 1S build we need to monitor voltages lower than that.
Anyone have any ideas on where I may have gone wrong here?
So I assume this is with PX4 v1.13? And you adjusted the params to BAT1_V_DIV, etc.?
I appreciate the response.
Yes BAT1_V_DIV is correct - and we’ve shown that it’s working correctly using the calculations at lower voltage.
And yes - it’s PX4 V1.13.
Seemingly just anything under 2S voltages it just doesn’t register - very strange.
I’ve gone down as many rabbit holes as I can and just can’t seem to get it to recognise the 1S battery correctly.
Any ideas on other params to look at would be appreciated!
Ok, that sounds like a bug then. I can recommend to create an issue on GitHub, or debug the code and find where it goes wrong.
I’m having a hunch this might actually be down to QGroundControl itself because it quite excitedly reports “Avionics power low” when the autopilot’s voltage is dipping somewhat below 5v so it might expect 5v min at all times and not even consider anything below.
Is the vehicle powering up and are the motors spinning?
What flight controller are you using.
Thanks @JulianOes @Christian-Born for your help.
Yes it’s powering up and the motors are spinning - I think there might be some more configuration issues there - but this applies even just with QGroundControl active and connected to the UAV.
I’m using a mRo Control Zero H7 FC.
Voltage divider has been tested a load of times and is reporting the correct voltages at the supplied multiplier, which we’ve tested multiple times.
If we use that same voltage divider and use double the value, we get double what the actual voltage is reported in QGroundControl - but as soon as that voltage drops below around 5.5V or so, QGroundControl stops reporting it.
To keep this updated - I’ve tried the following:
- Using nightly QGroundControl builds
- Updating PX4 to Beta firmware and Developer firmware levels
- Swapped out batteries/power supplies just in case
Nothing seems to be having an effect - it’s strange.
Also - by modifying the divider - we can get voltage measurements - but they seem to cut off around 5.5V.
When using the Battery screen in Vehicle Setup - if we set a higher divider, it’ll start reading it from about 5.5V upwards, so we know a correct measurement is reaching the ADC on the FC.
Motors all spinning up as usual, we can fly the UAV without too many issues.
Just seems an issue in PX4 or QGroundControl somewhere that is not allowing 1S systems to be properly calculated.
I’ve had a look through some of the code on the PX4 side and the QGroundControl side but can’t find any limits based on 5.5 or anything hard coded around that and can’t see anything. But I know very little C/C++ so it’s not an easy find for me.
If anyone else has any interesting tests we could run that might track down the source, I’d be happy to try them?
I’ll also raise an issue on Github as per @JulianOes suggestion.