qmk_firmware/docs/drivers/battery.md
Joel Challis 6ee806f376
Implement battery level interface (#24666)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-02-28 16:46:14 +11:00

2.0 KiB

Battery Driver

This driver provides support for sampling battery level.

Usage

To use this driver, add the following to your rules.mk:

BATTERY_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

Define Default Description
BATTERY_SAMPLE_INTERVAL 30000 The time between battery samples in milliseconds.

Driver Configuration

Driver selection can be configured in rules.mk as BATTERY_DRIVER. Valid values are adc (default), vendor, or custom. See below for information on individual drivers.

ADC Driver

This is the default battery driver. The default configuration assumes the battery is connected to a ADC capable pin through a voltage divider.

BATTERY_DRIVER = adc

The following #defines apply only to the adc driver:

Define Default Description
BATTERY_PIN Not defined The GPIO pin connected to the voltage divider.
BATTERY_REF_VOLTAGE_MV 3300 The ADC reverence voltage, in millivolts.
BATTERY_VOLTAGE_DIVIDER_R1 100000 The voltage divider resistance, in kOhm. Set to 0 to disable.
BATTERY_VOLTAGE_DIVIDER_R1 100000 The voltage divider resistance, in kOhm. Set to 0 to disable.
BATTERY_ADC_RESOLUTION 10 The ADC resolution configured for the ADC Driver.

Functions

uint8_t battery_get_percent(void)

Sample battery level.

Return Value

The battery percentage, in the range 0-100.