samples: nrf: battery: add documentation
Provide a description of the sample and how it works with different power supply source configurations. Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
This commit is contained in:
parent
628bd00168
commit
cc3ccef40d
2 changed files with 87 additions and 4 deletions
81
samples/boards/nrf/battery/README.rst
Normal file
81
samples/boards/nrf/battery/README.rst
Normal file
|
@ -0,0 +1,81 @@
|
|||
.. _boards_nrf_battery:
|
||||
|
||||
Battery Voltage Measurement
|
||||
###########################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
This sample demonstrates using Nordic configurations of the Zephyr ADC
|
||||
infrastructure to measure the voltage of the device power supply. Two
|
||||
power supply configurations are supported:
|
||||
|
||||
* If the board devicetree has a ``/vbatt`` node with compatible
|
||||
``voltage-divider`` then the voltage is measured using that divider.
|
||||
* Otherwise the power source is assumed to be directly connected to the
|
||||
digital voltage signal, and the internal source for ``Vdd`` is
|
||||
selected.
|
||||
|
||||
An example of a devicetree node describing a voltage divider for battery
|
||||
monitoring is:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/ {
|
||||
vbatt {
|
||||
compatible = "voltage-divider";
|
||||
io-channels = <&adc 4>;
|
||||
output-ohms = <180000>;
|
||||
full-ohms = <(1500000 + 180000)>;
|
||||
power-gpios = <&sx1509b 4 0>;
|
||||
};
|
||||
};
|
||||
|
||||
Note that in many cases where there is no voltage divider the digital
|
||||
voltage will be fed from a regulator that provides a fixed voltage
|
||||
regardless of source voltage, rather than by the source directly. In
|
||||
configuration involving a regulator the measured voltage will be
|
||||
constant.
|
||||
|
||||
The sample provides discharge curves that map from a measured voltage to
|
||||
an estimate of remaining capacity. The correct curve depends on the
|
||||
battery source: a standard LiPo cell requires a curve that is different
|
||||
from a standard alkaline battery. Curves can be measured, or estimated
|
||||
using the data sheet for the battery.
|
||||
|
||||
Application Details
|
||||
===================
|
||||
|
||||
The application initializes battery measurement on startup, then loops
|
||||
displaying the battery status every five seconds.
|
||||
|
||||
Requirements
|
||||
************
|
||||
|
||||
A Nordic-based board, optionally with a voltage divider specified in its
|
||||
devicetree configuration as noted above.
|
||||
|
||||
Building and Running
|
||||
********************
|
||||
|
||||
The code can be found in :zephyr_file:`samples/boards/nrf/battery`.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/boards/nrf/battery
|
||||
:board: nrf52_pca20020
|
||||
:goals: build flash
|
||||
:compact:
|
||||
|
||||
|
||||
Sample Output
|
||||
=============
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
*** Booting Zephyr OS build zephyr-v2.2.0-318-g84219bdc1ac2 ***
|
||||
[0:00:00.016]: 4078 mV; 10000 pptt
|
||||
[0:00:04.999]: 4078 mV; 10000 pptt
|
||||
[0:00:09.970]: 4078 mV; 10000 pptt
|
||||
[0:00:14.939]: 4069 mV; 10000 pptt
|
||||
[0:00:19.910]: 4078 mV; 10000 pptt
|
||||
[0:00:24.880]: 4069 mV; 10000 pptt
|
|
@ -57,13 +57,10 @@ struct divider_config {
|
|||
};
|
||||
|
||||
static const struct divider_config divider_config = {
|
||||
#if DT_HAS_NODE(VBATT)
|
||||
.io_channel = {
|
||||
#if DT_NODE_HAS_PROP(VBATT, io_channels)
|
||||
DT_IO_CHANNELS_LABEL(VBATT),
|
||||
DT_IO_CHANNELS_INPUT(VBATT),
|
||||
#else
|
||||
DT_LABEL(DT_ALIAS(adc_0)),
|
||||
#endif
|
||||
},
|
||||
#if DT_NODE_HAS_PROP(VBATT, power_gpios)
|
||||
.power_gpios = {
|
||||
|
@ -74,6 +71,11 @@ static const struct divider_config divider_config = {
|
|||
#endif
|
||||
.output_ohm = DT_PROP(VBATT, output_ohms),
|
||||
.full_ohm = DT_PROP(VBATT, full_ohms),
|
||||
#else /* /vbatt exists */
|
||||
.io_channel = {
|
||||
DT_LABEL(DT_ALIAS(adc_0)),
|
||||
},
|
||||
#endif /* /vbatt exists */
|
||||
};
|
||||
|
||||
struct divider_data {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue