Skip to content

Commit bfe91e9

Browse files
committed
Add 5s and 10s average of ampere to help calibrate ampere sensor.
1 parent e65dc56 commit bfe91e9

File tree

6 files changed

+118
-0
lines changed

6 files changed

+118
-0
lines changed

locales/en/messages.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3130,6 +3130,12 @@
31303130
"motorsmAhDrawn": {
31313131
"message": "Amp. drawn:"
31323132
},
3133+
"motorsAmperageAverage5s": {
3134+
"message": "Amperage (5s avg):"
3135+
},
3136+
"motorsAmperageAverage10s": {
3137+
"message": "Amperage (10s avg):"
3138+
},
31333139
"motorsVoltageValue": {
31343140
"message": "$1 V"
31353141
},
@@ -3139,6 +3145,12 @@
31393145
"motorsmAhDrawnValue": {
31403146
"message": "$1 mAh"
31413147
},
3148+
"motorsAmperageAverage5sValue": {
3149+
"message": "$1 A"
3150+
},
3151+
"motorsAmperageAverage10sValue": {
3152+
"message": "$1 A"
3153+
},
31423154
"motorsText":{
31433155
"message": "Motors"
31443156
},
@@ -5333,6 +5345,12 @@
53335345
"powerBatteryAmperage": {
53345346
"message": "Amperage"
53355347
},
5348+
"powerBatteryAmperageAverage5s": {
5349+
"message": "Amperage (5s average)"
5350+
},
5351+
"powerBatteryAmperageAverage10s": {
5352+
"message": "Amperage (10s average)"
5353+
},
53365354
"powerBatteryCapacity": {
53375355
"message": "Capacity (mAh)"
53385356
},

locales/zh_CN/messages.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2239,6 +2239,12 @@
22392239
"motorsmAhDrawn": {
22402240
"message": "已消耗电流:"
22412241
},
2242+
"motorsAmperageAverage5s": {
2243+
"message": "电流 (5秒平均):"
2244+
},
2245+
"motorsAmperageAverage10s": {
2246+
"message": "电流 (10秒平均):"
2247+
},
22422248
"motorsVoltageValue": {
22432249
"message": "$1 V"
22442250
},
@@ -2248,6 +2254,12 @@
22482254
"motorsmAhDrawnValue": {
22492255
"message": "$1 mAh"
22502256
},
2257+
"motorsAmperageAverage5sValue": {
2258+
"message": "$1 A"
2259+
},
2260+
"motorsAmperageAverage10sValue": {
2261+
"message": "$1 A"
2262+
},
22512263
"motorsText": {
22522264
"message": "电机"
22532265
},
@@ -4000,6 +4012,12 @@
40004012
"powerBatteryAmperage": {
40014013
"message": "电流"
40024014
},
4015+
"powerBatteryAmperageAverage5s": {
4016+
"message": "电流 (5秒平均)"
4017+
},
4018+
"powerBatteryAmperageAverage10s": {
4019+
"message": "电流 (10秒平均)"
4020+
},
40034021
"powerBatteryCapacity": {
40044022
"message": "容量 (mAh)"
40054023
},

src/js/tabs/motors.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ const motors = {
3333
sensorGyroScale: 2000,
3434
sensorAccelRate: 20,
3535
sensorAccelScale: 2,
36+
amperageHistory5s: [], // Store last 5 seconds of amperage readings for average calculation
37+
amperageHistorySize5s: 20, // Number of readings to keep for 5 seconds average (4Hz * 5s = 20)
38+
amperageHistory10s: [], // Store last 10 seconds of amperage readings for average calculation
39+
amperageHistorySize10s: 40, // Number of readings to keep for 10 seconds average (4Hz * 10s = 40)
3640
sensorSelectValues: {
3741
gyroScale: {
3842
1: 1,
@@ -77,6 +81,10 @@ motors.initialize = async function (callback) {
7781
self.configHasChanged = false;
7882
self.configChanges = {};
7983

84+
// Reset amperage history when initializing
85+
self.amperageHistory5s = [];
86+
self.amperageHistory10s = [];
87+
8088
// Update filtering defaults based on API version
8189
const FILTER_DEFAULT = FC.getFilterDefaults();
8290

@@ -463,6 +471,8 @@ motors.initialize = async function (callback) {
463471
const motorVoltage = $(".motors-bat-voltage");
464472
const motorMahDrawingElement = $(".motors-bat-mah-drawing");
465473
const motorMahDrawnElement = $(".motors-bat-mah-drawn");
474+
const motorAmperageAverage5sElement = $(".motors-bat-amperage-average-5s");
475+
const motorAmperageAverage10sElement = $(".motors-bat-amperage-average-10s");
466476

467477
const rawDataTextElements = {
468478
x: [],
@@ -639,6 +649,33 @@ motors.initialize = async function (callback) {
639649
motorVoltage.text(i18n.getMessage("motorsVoltageValue", [FC.ANALOG.voltage]));
640650
motorMahDrawingElement.text(i18n.getMessage("motorsADrawingValue", [FC.ANALOG.amperage.toFixed(2)]));
641651
motorMahDrawnElement.text(i18n.getMessage("motorsmAhDrawnValue", [FC.ANALOG.mAhdrawn]));
652+
653+
// Calculate amperage averages
654+
const currentAmperage = FC.ANALOG.amperage;
655+
656+
// 5 seconds average
657+
TABS.motors.amperageHistory5s.push(currentAmperage);
658+
if (TABS.motors.amperageHistory5s.length > TABS.motors.amperageHistorySize5s) {
659+
TABS.motors.amperageHistory5s.shift();
660+
}
661+
const amperageSum5s = TABS.motors.amperageHistory5s.reduce((sum, value) => sum + value, 0);
662+
const amperageAverage5s = amperageSum5s / TABS.motors.amperageHistory5s.length;
663+
664+
// 10 seconds average
665+
TABS.motors.amperageHistory10s.push(currentAmperage);
666+
if (TABS.motors.amperageHistory10s.length > TABS.motors.amperageHistorySize10s) {
667+
TABS.motors.amperageHistory10s.shift();
668+
}
669+
const amperageSum10s = TABS.motors.amperageHistory10s.reduce((sum, value) => sum + value, 0);
670+
const amperageAverage10s = amperageSum10s / TABS.motors.amperageHistory10s.length;
671+
672+
// Display average amperages
673+
motorAmperageAverage5sElement.text(
674+
i18n.getMessage("motorsAmperageAverage5sValue", [amperageAverage5s.toFixed(2)]),
675+
);
676+
motorAmperageAverage10sElement.text(
677+
i18n.getMessage("motorsAmperageAverage10sValue", [amperageAverage10s.toFixed(2)]),
678+
);
642679
}
643680
}
644681

src/js/tabs/power.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,19 @@ import { initializeModalDialog } from "../utils/initializeModalDialog";
1111
const power = {
1212
supported: false,
1313
analyticsChanges: {},
14+
amperageHistory5s: [], // Store last 5 seconds of amperage readings for average calculation
15+
amperageHistorySize5s: 25, // Number of readings to keep for 5 seconds average (5Hz * 5s = 25)
16+
amperageHistory10s: [], // Store last 10 seconds of amperage readings for average calculation
17+
amperageHistorySize10s: 50, // Number of readings to keep for 10 seconds average (5Hz * 10s = 50)
1418
};
1519

1620
power.initialize = function (callback) {
1721
const self = this;
1822

23+
// Reset amperage history when initializing
24+
self.amperageHistory5s = [];
25+
self.amperageHistory10s = [];
26+
1927
if (GUI.active_tab != "power") {
2028
GUI.active_tab = "power";
2129
}
@@ -224,6 +232,8 @@ power.initialize = function (callback) {
224232
$(elementBatteryState).find(".voltage").attr("id", "battery-voltage");
225233
$(elementBatteryState).find(".mah-drawn").attr("id", "battery-mah-drawn");
226234
$(elementBatteryState).find(".amperage").attr("id", "battery-amperage");
235+
$(elementBatteryState).find(".amperage-average-5s").attr("id", "battery-amperage-average-5s");
236+
$(elementBatteryState).find(".amperage-average-10s").attr("id", "battery-amperage-average-10s");
227237

228238
destinationBatteryState.append(elementBatteryState.children());
229239

@@ -332,6 +342,31 @@ power.initialize = function (callback) {
332342
elementMspBatteryState.text(i18n.getMessage("powerMahValue", [FC.BATTERY_STATE.mAhDrawn]));
333343
elementMspBatteryState = $(`${elementPrefix}-amperage .value`);
334344
elementMspBatteryState.text(i18n.getMessage("powerAmperageValue", [FC.BATTERY_STATE.amperage]));
345+
346+
// Calculate amperage averages
347+
const currentAmperage = FC.BATTERY_STATE.amperage;
348+
349+
// 5 seconds average
350+
self.amperageHistory5s.push(currentAmperage);
351+
if (self.amperageHistory5s.length > self.amperageHistorySize5s) {
352+
self.amperageHistory5s.shift();
353+
}
354+
const amperageSum5s = self.amperageHistory5s.reduce((sum, value) => sum + value, 0);
355+
const amperageAverage5s = amperageSum5s / self.amperageHistory5s.length;
356+
357+
// 10 seconds average
358+
self.amperageHistory10s.push(currentAmperage);
359+
if (self.amperageHistory10s.length > self.amperageHistorySize10s) {
360+
self.amperageHistory10s.shift();
361+
}
362+
const amperageSum10s = self.amperageHistory10s.reduce((sum, value) => sum + value, 0);
363+
const amperageAverage10s = amperageSum10s / self.amperageHistory10s.length;
364+
365+
// Display average amperages
366+
elementMspBatteryState = $(`${elementPrefix}-amperage-average-5s .value`);
367+
elementMspBatteryState.text(i18n.getMessage("powerAmperageValue", [amperageAverage5s.toFixed(2)]));
368+
elementMspBatteryState = $(`${elementPrefix}-amperage-average-10s .value`);
369+
elementMspBatteryState.text(i18n.getMessage("powerAmperageValue", [amperageAverage10s.toFixed(2)]));
335370
});
336371
}
337372

src/tabs/motors.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,8 @@
279279
<span i18n="motorsVoltage" class="power_text"></span><span class="motors-bat-voltage power_value"></span>
280280
<span i18n="motorsADrawing" class="power_text"></span><span class="motors-bat-mah-drawing power_value"></span>
281281
<span i18n="motorsmAhDrawn" class="power_text"></span><span class="motors-bat-mah-drawn power_value"></span>
282+
<span i18n="motorsAmperageAverage5s" class="power_text"></span><span class="motors-bat-amperage-average-5s power_value"></span>
283+
<span i18n="motorsAmperageAverage10s" class="power_text"></span><span class="motors-bat-amperage-average-10s power_value"></span>
282284
</div>
283285
</div>
284286
<div class="motors">

src/tabs/power.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,14 @@
123123
<td i18n="powerBatteryAmperage"></td>
124124
<td class="value"></td>
125125
</tr>
126+
<tr class="amperage-average-5s">
127+
<td i18n="powerBatteryAmperageAverage5s"></td>
128+
<td class="value"></td>
129+
</tr>
130+
<tr class="amperage-average-10s">
131+
<td i18n="powerBatteryAmperageAverage10s"></td>
132+
<td class="value"></td>
133+
</tr>
126134
</tbody>
127135
</table>
128136

0 commit comments

Comments
 (0)