mirror of https://github.com/ArduPilot/ardupilot
AP_BattMonitor: Sum: report average temperature
This commit is contained in:
parent
45647718cb
commit
600d9eb7a8
|
@ -54,6 +54,9 @@ AP_BattMonitor_Sum::read()
|
||||||
float current_sum = 0;
|
float current_sum = 0;
|
||||||
uint8_t current_count = 0;
|
uint8_t current_count = 0;
|
||||||
|
|
||||||
|
float temperature_sum = 0.0;
|
||||||
|
uint8_t temperature_count = 0;
|
||||||
|
|
||||||
for (uint8_t i=0; i<_mon.num_instances(); i++) {
|
for (uint8_t i=0; i<_mon.num_instances(); i++) {
|
||||||
if (i == _instance) {
|
if (i == _instance) {
|
||||||
// never include self
|
// never include self
|
||||||
|
@ -77,6 +80,12 @@ AP_BattMonitor_Sum::read()
|
||||||
current_sum += current;
|
current_sum += current;
|
||||||
current_count++;
|
current_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float temperature;
|
||||||
|
if (_mon.get_temperature(temperature, i)) {
|
||||||
|
temperature_sum += temperature;
|
||||||
|
temperature_count++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const uint32_t tnow_us = AP_HAL::micros();
|
const uint32_t tnow_us = AP_HAL::micros();
|
||||||
const uint32_t dt_us = tnow_us - _state.last_time_micros;
|
const uint32_t dt_us = tnow_us - _state.last_time_micros;
|
||||||
|
@ -87,10 +96,15 @@ AP_BattMonitor_Sum::read()
|
||||||
if (current_count > 0) {
|
if (current_count > 0) {
|
||||||
_state.current_amps = current_sum;
|
_state.current_amps = current_sum;
|
||||||
}
|
}
|
||||||
|
if (temperature_count > 0) {
|
||||||
|
_state.temperature = temperature_sum / temperature_count;
|
||||||
|
_state.temperature_time = AP_HAL::millis();
|
||||||
|
}
|
||||||
|
|
||||||
update_consumed(_state, dt_us);
|
update_consumed(_state, dt_us);
|
||||||
|
|
||||||
_has_current = (current_count > 0);
|
_has_current = (current_count > 0);
|
||||||
|
_has_temperature = (temperature_count > 0);
|
||||||
_state.healthy = (voltage_count > 0);
|
_state.healthy = (voltage_count > 0);
|
||||||
|
|
||||||
if (_state.healthy) {
|
if (_state.healthy) {
|
||||||
|
|
|
@ -22,6 +22,9 @@ public:
|
||||||
/// returns true if battery monitor provides current info
|
/// returns true if battery monitor provides current info
|
||||||
bool has_current() const override { return _has_current; }
|
bool has_current() const override { return _has_current; }
|
||||||
|
|
||||||
|
/// returns true if battery monitor provides temperature info
|
||||||
|
bool has_temperature() const override { return _has_temperature; }
|
||||||
|
|
||||||
void init(void) override {}
|
void init(void) override {}
|
||||||
|
|
||||||
static const struct AP_Param::GroupInfo var_info[];
|
static const struct AP_Param::GroupInfo var_info[];
|
||||||
|
@ -31,6 +34,7 @@ private:
|
||||||
AP_Int16 _sum_mask;
|
AP_Int16 _sum_mask;
|
||||||
uint8_t _instance;
|
uint8_t _instance;
|
||||||
bool _has_current;
|
bool _has_current;
|
||||||
|
bool _has_temperature;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AP_BATTERY_SUM_ENABLED
|
#endif // AP_BATTERY_SUM_ENABLED
|
||||||
|
|
Loading…
Reference in New Issue