2014-09-19 13:16:40 -07:00
# Battery Monitoring
2015-01-03 15:53:24 -08:00
Cleanflight has a battery monitoring feature. Battery voltage of the main battery can be measured by the system and used
2014-09-19 13:16:40 -07:00
to trigger a low-battery warning buzzer, on-board status LED flashing and LED strip patterns.
Low battery warnings can:
* help to ensure that you have time to safely land the aircraft.
2015-01-03 15:53:24 -08:00
* help maintain the life and safety of your LiPo/LiFe batteries which should not be discharged below manufacturers recommendations.
2014-09-19 13:16:40 -07:00
2015-01-03 15:53:24 -08:00
Minimum and maximum cell voltages can be set, and these voltages are used to detect the amount of cells you are using.
2014-09-19 13:16:40 -07:00
2015-01-03 15:53:24 -08:00
Per-cell monitoring is not supported, as we only use one ADC to read the battery voltage.
2014-09-19 13:16:40 -07:00
## Supported targets
All targets support battery voltage monitoring unless status.
## Connections
2014-11-14 04:42:48 -08:00
When dealing with batteries **ALWAYS CHECK POLARITY!**
2014-09-19 13:16:40 -07:00
Measure expected voltages first and then connect to flight controller, connecting to the flight controller with
2015-01-03 15:53:24 -08:00
incorrect voltage or reversed polarity will likely fry your flight controller. Ensure that your flight controller
has a voltage divider that is capable of measuring your particular battery voltage.
2014-09-19 13:16:40 -07:00
### Naze32
The Naze32 has an on-board battery divider circuit, connect your main battery to the VBAT connector.
### CC3D
The CC3D has no battery divider, create one that gives you a 3.3v MAXIMUM output when your battery is
fully charged and connect the output from it to S5_IN/PA0/RC5.
S5_IN/PA0/RC5 is Pin 7 on the 8 pin connector, second to last pin, opposite end from the GND/+5/PPM signal input.
Note: When battery monitoring is enabled on the CC3D RC5 can no-longer be used for PWM input.
## Configuration
Enable the `VBAT` feature.
2014-11-12 17:29:07 -08:00
Configure min/max cell voltages using the following CLI setting:
2014-09-19 13:16:40 -07:00
`vbat_scale` - adjust this to match battery voltage to reported value.
`vbat_max_cell_voltage` - maximum voltage per cell, used for auto-detecting battery voltage in 0.1V units, i.e. 43 = 4.3V
2015-01-01 13:55:18 -08:00
`set vbat_warning_cell_voltage` - warning voltage per cell, this triggers battery out alarms, in 0.1V units, i.e. 34 = 3.4V
2014-09-19 13:16:40 -07:00
`vbat_min_cell_voltage` - minimum voltage per cell, this triggers battery out alarms, in 0.1V units, i.e. 33 = 3.3V
e.g.
```
set vbat_scale = 110
set vbat_max_cell_voltage = 43
2015-01-01 13:55:18 -08:00
set vbat_warning_cell_voltage = 34
2014-09-19 13:16:40 -07:00
set vbat_min_cell_voltage = 33
```
2014-11-12 17:29:07 -08:00
# Current Monitoring
Current monitoring (Amperage) is supported by connecting a current meter to the appropriate current meter ADC input (See Board documentation).
2015-01-03 15:53:24 -08:00
When enabled, Amps, mAh used and capacity remaining are calculated and used by the telemetry and OLED display subsystems.
2014-11-12 17:29:07 -08:00
## Configuration
2015-01-03 15:58:41 -08:00
Enable current monitoring using the CLI command
2014-11-12 17:29:07 -08:00
```
feature CURRENT_METER
```
2015-01-16 01:47:10 -08:00
Configure the current meter type using the `current_meter_type` settings as per the following table.
| Value | Sensor Type |
| ----- | ---------------------- |
| 0 | None |
| 1 | ADC/hardware sensor |
| 2 | Virtual sensor |
2015-01-03 15:53:24 -08:00
Configure capacity using the `battery_capacity` setting, which takes a value in mAh.
2014-11-12 17:29:07 -08:00
2015-01-16 01:47:10 -08:00
If you're using an OSD that expects the multiwii current meter output value, then set `multiwii_current_meter_output` to `1` (this multiplies amperage sent to MSP by 10).
### ADC Sensor
2014-11-12 17:29:07 -08:00
The current meter may need to be configured so that the value read at the ADC input matches actual current draw. Just like you need a voltmeter to correctly calibrate your voltage reading you also need an ammeter to calibrate your current sensor.
2015-01-09 05:49:48 -08:00
Use the following settings to adjust calibration.
2014-11-12 17:29:07 -08:00
`current_meter_scale`
`current_meter_offset`
2015-01-16 01:47:10 -08:00
### Virtual Sensor
The virtual sensor uses the throttle position to calculate as estimated current value. This is useful when a real sensor is not available. The following settings adjust the calibration.
| Setting | Description |
| ----------------------------- | -------------------------------------------------------- |
| `current_meter_scale` | The throttle scaling factor [centiamps, i.e. 1/100th A] |
| `current_meter_offset` | The current at zero throttle [centiamps, i.e. 1/100th A] |
If you know your current at zero throttle (Imin) and maximum throttle(Imax) you can calculate the scaling factors using the following formulas where Tmax is maximum throttle offset (i.e. for `max_throttle` = 1850, Tmax = 1850 - 1000 = 850):
```
current_meter_scale = (Imax - Imin) * 100000 / (Tmax + (Tmax * Tmax / 50))
current_meter_offset = Imin * 100
```
e.g. For a maximum current of 34.2 A and minimum current of 2.8 A with `max_throttle` = 1850
```
current_meter_scale = (Imax - Imin) * 100000 / (Tmax + (Tmax * Tmax / 50))
= (34.2 - 2.8) * 100000 / (850 + (850 * 850 / 50))
= 205
current_meter_offset = Imin * 100 = 280
```