mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 00:35:39 +03:00
Changed the scaling factor of the curent sensor to be in the form of y=mx+b. Altered the scaling to be in mV/10A, this means that for you average 50mOhm shunt resistor you will have a scale factor of 500, plenty of integre adjustability and the default 400 used will be fine as a first guess in most cases. Offset is adjusted to mA to give greater adjustability as an integer value. Builds successfully to OMNIBUSF4SD.
This commit is contained in:
parent
625f083a3f
commit
bcd5752a12
2 changed files with 5 additions and 4 deletions
|
@ -107,9 +107,10 @@ static int32_t currentMeterADCToCentiamps(const uint16_t src)
|
|||
const currentSensorADCConfig_t *config = currentSensorADCConfig();
|
||||
|
||||
int32_t millivolts = ((uint32_t)src * ADCVREF) / 4096;
|
||||
millivolts -= config->offset;
|
||||
// y=x/m+b m is scale in (mV/10A) and b is offset in (mA)
|
||||
int32_t centiAmps = (millivolts * 10000 / (int32_t)config->scale + (int32_t)config->offset) / 10;
|
||||
|
||||
return (millivolts * 1000) / (int32_t)config->scale; // current in 0.01A steps
|
||||
return centiAmps; // Returns Centiamps to maintain compatability with the rest of the code
|
||||
}
|
||||
|
||||
static void updateCurrentmAhDrawnState(currentMeterMAhDrawnState_t *state, int32_t amperageLatest, int32_t lastUpdateAt)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue