README.rst
1.. _boards_nrf_battery:
2
3Battery Voltage Measurement
4###########################
5
6Overview
7********
8
9This sample demonstrates using Nordic configurations of the Zephyr ADC
10infrastructure to measure the voltage of the device power supply. Two
11power supply configurations are supported:
12
13* If the board devicetree has a ``/vbatt`` node with compatible
14 ``voltage-divider`` then the voltage is measured using that divider. An
15 example of a devicetree node describing a voltage divider for battery
16 monitoring is:
17
18 .. code-block:: devicetree
19
20 / {
21 vbatt {
22 compatible = "voltage-divider";
23 io-channels = <&adc 4>;
24 output-ohms = <180000>;
25 full-ohms = <(1500000 + 180000)>;
26 power-gpios = <&sx1509b 4 0>;
27 };
28 };
29
30* If the board does not have a voltage divider and so no ``/vbatt`` node
31 present, the ADC configuration (device and channel) needs to be provided via
32 the ``zephyr,user`` node. In this case the power source is assumed to be
33 directly connected to the digital voltage signal, and the internal source for
34 ``Vdd`` is selected. An example of a Devicetree configuration for this case is
35 shown below:
36
37 .. code-block :: devicetree
38
39 / {
40 zephyr,user {
41 io-channels = <&adc 4>;
42 };
43 };
44
45Note that in many cases where there is no voltage divider the digital
46voltage will be fed from a regulator that provides a fixed voltage
47regardless of source voltage, rather than by the source directly. In
48configuration involving a regulator the measured voltage will be
49constant.
50
51The sample provides discharge curves that map from a measured voltage to
52an estimate of remaining capacity. The correct curve depends on the
53battery source: a standard LiPo cell requires a curve that is different
54from a standard alkaline battery. Curves can be measured, or estimated
55using the data sheet for the battery.
56
57Application Details
58===================
59
60The application initializes battery measurement on startup, then loops
61displaying the battery status every five seconds.
62
63Requirements
64************
65
66A Nordic-based board, optionally with a voltage divider specified in its
67devicetree configuration as noted above.
68
69Building and Running
70********************
71
72The code can be found in :zephyr_file:`samples/boards/nrf/battery`.
73
74.. zephyr-app-commands::
75 :zephyr-app: samples/boards/nrf/battery
76 :board: thingy52_nrf52832
77 :goals: build flash
78 :compact:
79
80
81Sample Output
82=============
83
84.. code-block:: console
85
86 *** Booting Zephyr OS build zephyr-v2.2.0-318-g84219bdc1ac2 ***
87 [0:00:00.016]: 4078 mV; 10000 pptt
88 [0:00:04.999]: 4078 mV; 10000 pptt
89 [0:00:09.970]: 4078 mV; 10000 pptt
90 [0:00:14.939]: 4069 mV; 10000 pptt
91 [0:00:19.910]: 4078 mV; 10000 pptt
92 [0:00:24.880]: 4069 mV; 10000 pptt
93