ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
Loading...
Searching...
No Matches
battery.h
Go to the documentation of this file.
1
29#ifndef BATTERY_H
30#define BATTERY_H
31
32#include <stdint.h>
33
34#define BATT_CELL_DETECT_V 4.35f
35#define BATT_PRESENT_V 2.5f
36#define BATT_ABSENT_V 1.5f
37#define BATT_LEVEL_MS 2000u
38#define BATT_RECOVER_MS 2000u
39#define BATT_RECOVER_HYST 0.05f
40#define BATT_RESERVE_SOC 0.20f
41#define BATT_R_CELL_DEFAULT 0.040f
43typedef struct {
44 float scale_v;
45 float scale_i;
47 uint8_t has_current;
49
51typedef struct {
52 uint8_t present;
53 uint8_t cells;
54 uint8_t level;
55 uint8_t pct;
56 float vbat;
57 float current;
58 float used_mah;
59 float cell_v;
61 float r_cell;
62 float soc;
63 float remain_s;
64 float vbat_raw;
66
68typedef struct {
69 float warn, crit, emerg;
71 uint8_t cells;
73
74void batt_init(const batt_cfg_t *cfg);
75void batt_set_scales(float scale_v, float scale_i);
76void batt_get_cfg(batt_cfg_t *out);
77
79void batt_step(float pin_v, float cur_pin_v, uint32_t dt_ms, uint8_t armed, const batt_limits_t *lim);
80
82const batt_state_t *batt_state(void);
83
85void batt_read(batt_state_t *out);
86
88float batt_soc_from_ocv(float cell_v);
89
90#endif /* BATTERY_H */
void batt_init(const batt_cfg_t *cfg)
Definition battery.c:57
void batt_set_scales(float scale_v, float scale_i)
Definition battery.c:75
float batt_soc_from_ocv(float cell_v)
LiPo open-circuit voltage → state of charge 0…1 (exposed for the tests)
Definition battery.c:41
void batt_step(float pin_v, float cur_pin_v, uint32_t dt_ms, uint8_t armed, const batt_limits_t *lim)
one sample: pin voltages, time step, armed flag (flight-control context)
Definition battery.c:145
void batt_read(batt_state_t *out)
seqlock snapshot for other tasks; keeps *out on a race
Definition battery.c:84
const batt_state_t * batt_state(void)
state as computed by the last step (same context)
Definition battery.c:82
void batt_get_cfg(batt_cfg_t *out)
Definition battery.c:81
float sens_v_per_a
current sensor gain, V/A
Definition battery.h:46
uint8_t has_current
a current sensor is wired
Definition battery.h:47
float scale_i
current multiplier (1 = nominal sensor)
Definition battery.h:45
float scale_v
×10 divider ratio (110 = ×11)
Definition battery.h:44
thresholds and settings (from the parameters)
Definition battery.h:68
float crit
Definition battery.h:69
float capacity_mah
0 = unknown
Definition battery.h:70
uint8_t cells
0 = auto
Definition battery.h:71
published state
Definition battery.h:51
uint8_t level
PV2_BATT_OK / LOW / CRITICAL / EMERGENCY
Definition battery.h:54
uint8_t cells
0 = not known
Definition battery.h:53
uint8_t present
a battery is connected
Definition battery.h:52
float remain_s
s of flight left, < 0 = n/a
Definition battery.h:63
float vbat_raw
V, last sample, unfiltered (calibration)
Definition battery.h:64
uint8_t pct
0…100
Definition battery.h:55
float current
A, filtered (τ 0.05 s); 0 without a sensor
Definition battery.h:57
float vbat
V, pack, filtered (τ 0.1 s)
Definition battery.h:56
float r_cell
Ω per cell, estimate
Definition battery.h:61
float used_mah
since power-on
Definition battery.h:58
float soc
0…1
Definition battery.h:62
float cell_v
V, sagged, filtered (τ 0.5 s): failsafes, CHECKS.
Definition battery.h:59
float cell_rest_v
V, sag compensated: state of charge
Definition battery.h:60