RoadTest: Test and Review the Nordic nPM Fuel Gauge Board
Author: JWx
Creation date:
Evaluation Type: Evaluation Boards
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: none in this price range
What were the biggest problems encountered?: occasional GUI glitches, time consuming modelling
Detailed Review:
As power efficiency of electronic modules increases, more and more appliances can be turned portable and thus battery powered. This fact makes more important tasks connected with the battery management - especially energy conservation and battery charge level measurement.
Nordic Semiconductor - manufacturer of (among other components) power management IC's, identifies several methods of estimating charge level of lithium based batteries, namely:
According to the manufacturer's information, most fuel gauge implementations involve only limited number of supported battery types, where new models are created by the manufacturer at customer's request. Nordic Semiconductor provide a possibility do model new battery models in-house, using only low cost nPM1300 evaluation kit with a dedicated load-generating daughterboard - and this is something we will try to test here.
Nordic Semiconductors nPM1300 PMIC (which is a member of family of PMICs compatible with the models generated) is an power management IC designed for nRF52, nRF53, nRF54 and nRF91 system-on-chip (and System In Package in the latter case) - this is important information, because fuel gauging algorithm is implemented as a library running on the host system and provided as a compiled binary.
nPM1300 is a power management IC supporting single-cell Li-ion, Li-poly or LiFePO4 battery with charge current up to 800 mA, 1350 mA unregulated output (when running from the battery) and up to 500 mA of adjustable, regulated output in the form of two 200 mA buck regulators and two 50 mA LDOs (which can be reconfigured as 100 mA load switches).
It also contains:
and has a block diagram as below:

nPM Fuel Gauge is an daughterboard for nPM1300 evaluation kit, allowing for creating of new battery profiles, with the block diagram as below:

As can be seen, it is essentially configurable current sink allowing for discharging a cell in the controlled manner, allowing for measuring it's parameters in all points of the discharge curve.
As it was written in the beginning, Nordic Semiconductors identifies three main approaches to the capacity estimation of the cell during discharge. Let's compare them in more detail.
Batterydesign.net portal defines Open Circuit Voltage as "potential difference between the positive and negative terminals when no current flows and the cell is at rest", while "at rest" "requires that the cell is left to reach an equilibrium before the potential difference is measured".
In this approach, only the voltage of the cell is considered (another question is if it is always possible to measure voltage of the battery without load while being powered by such a battery).
It's precision is connected to the discharge curve's slope - the stepper one is, the easier the measurement.
For example, Sony is providing following set of discharge curves for their Li-Ion battery families (sourced from "Lithium Ion Rechargeable Battery" catalog from 2001 - current products can have better parameters)
| {gallery}Discharge curves |
|---|
|
Lithium-Polimer |
|
Lithium-Ion with graphite anode |
|
Lithium-Ion with hard carbon anode |
As can be seen, discharge curves can be mostly flat in the middle part and voltage difference from temperature variation can outpace the difference caused by significant charge level change - turning the battery monitoring into the last moment "battery low" warning, without meaningful forecast capability.
To further underline this relationship, below are presented some of dQ/dV curves from "A Generalized SOC-OCV Model for Lithium-Ion Batteries and the SOC Estimation for LNMCO Battery", where long horizontal peaks on the right side of plots indicate voltage ranges where large charge differences are resulting in only small voltage changes.
| {gallery}dQ/dV plots |
|---|
|
LNMCO battery plot |
|
LMO battery plot |
|
LFP battery plot |
As can be seen, especially in the case of LFP/LiFePO4 batteries, OVC voltage can be misleading when estimating battery charge, particularly when temperature variations are present.
Both modules have arrived (after longer than usual stop at customs office) in small, cardboard boxes, containing boards packaged in ESD protection bags. So - no bundled software, no printed documentation, no (usually redundant) cables, only strictly necessary items.

Both modules are provided in the form prepared to operate without enclosures - without any components on the bottom sides and equipped with plastic "feet", providing some separation from (possibly conductive) working surface.
| {gallery}Module photos |
|---|
|
Evaluation kit - top |
|
Evaluation kit - bottom |
|
Fuel gauge module - top |
|
Fuel gauge module - bottom |
and can be connected using an edge connector (like below)

nPM1300 evaluation kit can be used in connection with another development kit from Nordic Semiconductor using I2C compatible TWI interface (like below)

or connected to the PC computer, using USB (and another USB for PMIC power)

and - as seen on the block diagram below, PC connection (and use of embedded nRF53 SOC) is required to operate Fuel Gauge daughterboard (and create battery profiles)

At this stage we need to underline the important difference:
Another component needed for operating the evaluation kit from the PC (and creating models) is an nPM PowerUP application, that can be installed inside of nRF Connect for Desktop package

Inside PowerUP application, evaluation kit should be selected first:

then, after the initial connection, firmware upgrade will be executed:
As a test setup, two elements were connected to the Evaluation Kit - a salvaged battery of unknown parameters (marked as 18250 battery with 600 mAh capacity) and an 47Ω resistor (used for controlled discharge of the battery).
As generating precise battery models involve taking into consideration the temperature (and - to get better results, can be repeated at different temperatures, for example +5°C, +25°C and +45°C, while avoiding extreme heat and below freezing values is recommended, as they can increase non-linearities and distort the model), 10 kΩ NTC termistor was glued to the battery.
In case when no termistor is present, evaluation kit provides (selectable by a jumper) fixed 10 kΩ resistor that can be substituted for it, but in this case user supplied test temperature will be used instead ot the measurement, making the model less precise.
Evaluation kit provides three methods of battery connection:

According to the datasheet, JST-SH connectors are rated at 1 A, so they can be used in the whole range of charging currents (evaluation kit provides 800 mA at most), but could be insufficient to provide 1350 mA of discharge current - in this case, header connection would be more fitting.
As the battery under test was not equipped with JST connector, header connector was selected.
Another component used during the test was an 47 Ω resistor connected to the output of one of two buck regulators - the one marked as "BUCK1" was selected, because the other one is an recommended reference voltage for TWI and GPIO pins (so it cannot be switched off or reducted below 1.7 V and trying to do so generates warnings in GUI). Use of fixed resistor in connection with stabilized power supply allowed for configuring a constant and software controlled load for the battery.

resulting in the installation as below

As the battery to be profiled should be fully charged, during the first step charger was configured (with terminal voltage of 4.2 V and charging current - in this case 60 mA, later modified to 120 mA) and then activated. At the screenshot below one can see that "Default" battery model is used and the estimated charge level is presented.
Charging (and discharging) process can be monitored on the GRAPH tab - for example, screen below shows a switch from constant current to constant voltage mode during battery charging

After the battery is full, profiling can be started - it generates several warnings before starting (about expected temperature, operations that should be executed (removing of USB power connection), and a warning against changing device's configuration during profiling) and takes a long time - about two days for each temperature.
At the end, profile can be written to the evaluation kit's memory, into one of four slots
| {gallery}Battery profiling |
|---|
|
Warnings before profiling |
|
Profiling started |
|
Profiling finished |
|
Writing of the profile |
|
Profile written |
After profiling battery is empty and needs charging (which is possible after reconnecting USB power cable, disconnected in the profiling process). At this stage, newly created profile can be selected as a current one

Profiling process generates two main files, one json (to be used with PowerUP application) and one inc (for use with nPM SDK):

both of them contain 12 data structures containing parameters for fuel gauging algorithm, and as ralphjy have learned they are intentionally left undocumented by the manufacturer.
/*
* Copyright (c) 2023 Nordic Semiconductor ASA
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
.param_1 = {0.0, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.035, 0.04, 0.045, 0.05, 0.055, 0.06, 0.065, 0.07, 0.075, 0.08, 0.085, 0.09, 0.095, 0.1, 0.105, 0.11, 0.115, 0.12, 0.125, 0.13, 0.135, 0.14, 0.145, 0.15, 0.155, 0.16, 0.165, 0.17, 0.17500000000000002, 0.18, 0.185, 0.19, 0.195, 0.2, 0.20500000000000002, 0.21, 0.215, 0.22, 0.225, 0.23, 0.23500000000000001, 0.24, 0.245, 0.25, 0.255, 0.26, 0.265, 0.27, 0.275, 0.28, 0.28500000000000003, 0.29, 0.295, 0.3, 0.305, 0.31, 0.315, 0.32, 0.325, 0.33, 0.335, 0.34, 0.34500000000000003, 0.35000000000000003, 0.355, 0.36, 0.365, 0.37, 0.375, 0.38, 0.385, 0.39, 0.395, 0.4, 0.405, 0.41000000000000003, 0.41500000000000004, 0.42, 0.425, 0.43, 0.435, 0.44, 0.445, 0.45, 0.455, 0.46, 0.465, 0.47000000000000003, 0.47500000000000003, 0.48, 0.485, 0.49, 0.495, 0.5, 0.505, 0.51, 0.515, 0.52, 0.525, 0.53, 0.535, 0.54, 0.545, 0.55, 0.555, 0.56, 0.5650000000000001, 0.5700000000000001, 0.5750000000000001, 0.58, 0.585, 0.59, 0.595, 0.6, 0.605, 0.61, 0.615, 0.62, 0.625, 0.63, 0.635, 0.64, 0.645, 0.65, 0.655, 0.66, 0.665, 0.67, 0.675, 0.68, 0.685, 0.6900000000000001, 0.6950000000000001, 0.7000000000000001, 0.705, 0.71, 0.715, 0.72, 0.725, 0.73, 0.735, 0.74, 0.745, 0.75, 0.755, 0.76, 0.765, 0.77, 0.775, 0.78, 0.785, 0.79, 0.795, 0.8, 0.805, 0.81, 0.8150000000000001, 0.8200000000000001, 0.8250000000000001, 0.8300000000000001, 0.835, 0.84, 0.845, 0.85, 0.855, 0.86, 0.865, 0.87, 0.875, 0.88, 0.885, 0.89, 0.895, 0.9, 0.905, 0.91, 0.915, 0.92, 0.925, 0.93, 0.935, 0.9400000000000001, 0.9450000000000001, 0.9500000000000001, 0.9550000000000001, 0.96, 0.965, 0.97, 0.975, 0.98, 0.985, 0.99, 0.995, 1.0},
.temps = {22.0},
.param_2 = {2.99, 3.0, 3.0100000000000002, 3.02, 3.0300000000000002, 3.04, 3.0500000000000003, 3.06, 3.0700000000000003, 3.08, 3.0900000000000003, 3.1, 3.1100000000000003, 3.12, 3.1300000000000003, 3.14, 3.1500000000000004, 3.16, 3.1700000000000004, 3.18, 3.1900000000000004, 3.2, 3.2100000000000004, 3.22, 3.2300000000000004, 3.24, 3.25, 3.2600000000000002, 3.2700000000000005, 3.2800000000000002, 3.29, 3.3000000000000003, 3.31, 3.3200000000000003, 3.33, 3.3400000000000003, 3.35, 3.3600000000000003, 3.37, 3.3800000000000003, 3.39, 3.4000000000000004, 3.41, 3.4200000000000004, 3.43, 3.4400000000000004, 3.45, 3.4600000000000004, 3.47, 3.4800000000000004, 3.49, 3.5, 3.5100000000000002, 3.5200000000000005, 3.5300000000000002, 3.54, 3.5500000000000003, 3.5600000000000005, 3.5700000000000003, 3.58, 3.5900000000000003, 3.6, 3.6100000000000003, 3.62, 3.6300000000000003, 3.64, 3.6500000000000004, 3.66, 3.6700000000000004, 3.68, 3.6900000000000004, 3.7, 3.71, 3.72, 3.7300000000000004, 3.74, 3.75, 3.7600000000000002, 3.7700000000000005, 3.7800000000000002, 3.79, 3.8000000000000003, 3.8100000000000005, 3.8200000000000003, 3.83, 3.8400000000000003, 3.85, 3.8600000000000003, 3.87, 3.8800000000000003, 3.89, 3.9000000000000004, 3.91, 3.9200000000000004, 3.93, 3.9400000000000004, 3.95, 3.96, 3.97, 3.9800000000000004, 3.99, 4.0, 4.01, 4.0200000000000005, 4.03, 4.04, 4.050000000000001, 4.0600000000000005, 4.07, 4.08, 4.09, 4.1000000000000005, 4.11, 4.12, 4.130000000000001, 4.140000000000001, 4.15, 4.16, 4.17, 4.18, 4.19, 4.2},
.param_3 = {0.10046154969478571, 0.12078958076647256, 0.1351781216996947, 0.1447033727264946, 0.15044153407891497, 0.15346880598899845, 0.15486138868878768, 0.15569525197197215, 0.15674480262341184, 0.1578897314456722, 0.15886724237101366, 0.15965656971022468, 0.16038281834036383, 0.1611172547549376, 0.16183129064888815, 0.1624933556597257, 0.16311551131881283, 0.16372416977375706, 0.1642996187863873, 0.1647709924752372, 0.16509430632441194, 0.16532717339947461, 0.16554518819756855, 0.16577476034190497, 0.1660082890492854, 0.1662374949556724, 0.1664540986970283, 0.1666509292849206, 0.1668286927455596, 0.1669915061629773, 0.16714350031103065, 0.1672888059635764, 0.16743143035662686, 0.16757486292314347, 0.16772245745211903, 0.16787756773205673, 0.16804354412604727, 0.16822235564168095, 0.1684124800532867, 0.1686118520273498, 0.16881840623035546, 0.16903007285953262, 0.16924450234784283, 0.16945890468343663, 0.16967045115945006, 0.1698763130690194, 0.17007375710234157, 0.1702622530646238, 0.17044347887800848, 0.1706192088620854, 0.17079121733644423, 0.17096116924456686, 0.17112947696737987, 0.17129575368193997, 0.17145959963949003, 0.1716206150912729, 0.1717784224936843, 0.17193278770310783, 0.1720835335535894, 0.17223048302399116, 0.1723734590937938, 0.17251250827249853, 0.17264853380106135, 0.17278264414385075, 0.1729159477652352, 0.17304955152919282, 0.17318415302385232, 0.17331949965688948, 0.1734552043280212, 0.17359087993696423, 0.17372614567251424, 0.17386093969588814, 0.1739956636479779, 0.174130755631149, 0.17426665374776765, 0.17440375161389762, 0.17454154737920363, 0.17467870941155714, 0.174813874753355, 0.17494568044699355, 0.17507290738043949, 0.17519581626490555, 0.1753155384751265, 0.17543321654817917, 0.17554999302114016, 0.17566695717814623, 0.175784885099696, 0.17590443873839587, 0.17602627988150987, 0.1761510702521096, 0.1762786302215647, 0.17640583262505455, 0.1765289051893281, 0.17664407564113394, 0.1767475891625348, 0.17683874019990464, 0.17692333150973943, 0.1770080024880369, 0.17709939253079476, 0.1772040063705432, 0.17732270129692798, 0.17744875045415148, 0.17757489439509905, 0.17769387367265585, 0.17779884154568426, 0.1778902479872523, 0.1779747951871072, 0.17805938757731313, 0.17815092958993467, 0.17825555841698493, 0.1783722913938879, 0.17849628368484782, 0.1786226521910125, 0.1787465138135298, 0.17886370930053527, 0.1789739630246897, 0.17907829627906055, 0.17917773126478273, 0.17927329016743707, 0.17936594829239697, 0.17945653072873305, 0.179545832540114, 0.17963464879020846, 0.17972377173250262, 0.1798136403793007, 0.17990400047412333, 0.17999451709109068, 0.1800848553043226, 0.18017469088231736, 0.18026407448996865, 0.18035352140062316, 0.18044357578370915, 0.18053478180865498, 0.18062760226357452, 0.18072122974181334, 0.18081385147764983, 0.18090362720065734, 0.18098871664040914, 0.18106763108714063, 0.18114183156323224, 0.18121425243201802, 0.18128783893992947, 0.18136553633339803, 0.18144959552068374, 0.18153886014593063, 0.1816311303977876, 0.18172420619578483, 0.18181588823856928, 0.18190491168876816, 0.18199275788761834, 0.18208141008872647, 0.1821728515456992, 0.18226906558167802, 0.1823720421412347, 0.18248378316244623, 0.18260629184769764, 0.18274157139937405, 0.18289150394009077, 0.18305435005681286, 0.18322421216655363, 0.18339496363691468, 0.1835604778354975, 0.18371492789507907, 0.18385665700658962, 0.18398706448766944, 0.18410761986758678, 0.18421979267561056, 0.18432505244100905, 0.18442486869305103, 0.18452071096100497, 0.18461404877413945, 0.18470635166172322, 0.18479889895823742, 0.1848921245358454, 0.18498622742566, 0.18508140664959416, 0.1851778612295609, 0.1852757901874731, 0.18537539254524368, 0.18547686732478574, 0.1855804135480122, 0.1856862348472635, 0.18579486260971675, 0.18590736805096772, 0.1860248727510102, 0.18614849828983804, 0.1862793662474449, 0.18641859820382475, 0.18656731573897123, 0.18672664043287826, 0.18689769386553964, 0.18708159761694915, 0.18727947326710062, 0.18749244239598786, 0.1877216265836047, 0.18796814740994486, 0.1882331264550023, 0.1885176852987707, 0.18882294552124385, 0.18915002870241576, 0.18950005642228002},
.param_4 = {0.004566434077035714, 0.005490435489385116, 0.0061444600772588495, 0.006577426033022482, 0.006838251549041589, 0.006975854817681747, 0.007039154031308531, 0.007077056907816915, 0.007124763755609629, 0.007176805974803281, 0.00722123828959153, 0.007257116805010212, 0.007290128106380173, 0.00732351157976989, 0.007355967756767643, 0.007386061620896622, 0.0074143414235824006, 0.0074420077169889565, 0.007468164490290332, 0.007489590567056235, 0.007504286651109633, 0.007514871518157937, 0.007524781281707662, 0.0075352163791774975, 0.007545831320422063, 0.00755624977071238, 0.007566095395319467, 0.007575042240223663, 0.007583122397525436, 0.007590523007408059, 0.007597431832319574, 0.007604036634708018, 0.007610519561664857, 0.007617039223779248, 0.00762374806600541, 0.007630798533275305, 0.007638342914820331, 0.007646470710985497, 0.00765511272969485, 0.007664175092152263, 0.007673563919561611, 0.007683185129978755, 0.007692931924901946, 0.007702677485610755, 0.007712293234520457, 0.007721650594046336, 0.007730625322833707, 0.007739193321119264, 0.007747430858091295, 0.007755418584640244, 0.0077632371516565555, 0.007770962238389402, 0.007778612589426357, 0.007786170621906361, 0.007793618165431364, 0.007800937049603314, 0.007808110113349286, 0.007815126713777628, 0.007821978797890428, 0.007828658319272324, 0.00783515723153608, 0.007841477648749933, 0.00784766062732097, 0.007853756551993215, 0.00785981580751069, 0.0078658887058724, 0.00787200695562965, 0.007878159075313158, 0.00788432746945551, 0.007890494542589282, 0.007896642985114282, 0.007902769986176734, 0.007908893802180812, 0.007915034346870409, 0.007921211533989437, 0.007927443255177165, 0.007933706699054709, 0.00793994133688896, 0.007946085216061589, 0.007952076383954251, 0.007957859426383612, 0.007963446193859343, 0.007968888112505748, 0.007974237115826325, 0.007979545137324552, 0.007984861689915737, 0.007990222049986182, 0.00799565630629072, 0.00800119454006863, 0.008006866829641345, 0.008012665010071121, 0.008018446937502479, 0.008024041144969457, 0.008029276165506088, 0.008033981325569763, 0.00803812455454112, 0.008041969614079065, 0.008045818294910767, 0.008049972387763399, 0.008054727562297418, 0.008060122786223999, 0.008065852293370522, 0.008071586108868137, 0.008076994257847993, 0.008081765524803828, 0.008085920363056923, 0.008089763417595782, 0.008093608526241506, 0.008097769526815212, 0.008102525382590223, 0.008107831426994904, 0.008113467440220354, 0.008119211463227841, 0.008124841536978627, 0.008130168604569785, 0.008135180137485896, 0.008139922558139116, 0.008144442330217397, 0.008148785916701684, 0.008152997649654407, 0.008157115033124229, 0.008161174206368818, 0.008165211308645838, 0.00816926235147739, 0.008173347289968214, 0.008177454567005606, 0.00818156895868594, 0.008185675241105573, 0.00818975867646897, 0.008193821567725846, 0.008197887336391962, 0.008201980717441324, 0.008206126445847953, 0.008210345557435206, 0.008214601351900606, 0.008218811430802265, 0.008222892145484424, 0.008226759847291324, 0.0082303468675973, 0.008233719616510557, 0.008237011474182637, 0.00824035631545134, 0.008243888015154455, 0.008247708887303806, 0.008251766370269573, 0.008255960472626708, 0.008260191190717492, 0.008264358556298604, 0.008268405076762188, 0.008272398085800834, 0.008276427731305748, 0.008280584161168145, 0.00828495752643991, 0.008289638279147032, 0.008294717416474829, 0.008300285993077165, 0.008306435063607912, 0.008313250179095033, 0.008320652275309674, 0.008328373280297893, 0.008336134710768849, 0.008343658083431705, 0.008350678540685412, 0.0083571207730268, 0.008363048385803155, 0.0083685281757994, 0.008373626939800479, 0.00837841147459132, 0.008382948576956864, 0.008387305043682044, 0.008391547671551793, 0.008395743257351054, 0.008399949952647156, 0.008404187478902063, 0.008408464882984546, 0.008412791211345189, 0.008417175510434586, 0.008421626826703322, 0.008426154206601985, 0.008430766696581169, 0.008435473343091462, 0.00844028340214834, 0.008445221027714398, 0.008450334911407623, 0.008455676034136828, 0.00846129537681082, 0.008467243920338404, 0.008473572645628397, 0.0084803325335896, 0.008487574565130829, 0.008495349721160892, 0.008503708982588596, 0.008512703330322755, 0.008522383745272175, 0.008532801208345667, 0.008544006700452038, 0.008556051202500104, 0.008568985695398667, 0.008582861160056538, 0.008597728577382533, 0.008613638928285455},
.param_5 = {0.18480028246988037, 0.15780260002231355, 0.10869905436373663, 0.06937914717827395, 0.039842878465926476, 0.020090248226694186, 0.010120209013516832, 0.008560972430109778, 0.009974906698636578, 0.009647453398190127, 0.008031083020693108, 0.006888981678864273, 0.006639477475967742, 0.006583965038747027, 0.006255004112673199, 0.005837366681475751, 0.00559460960923349, 0.005382306670793143, 0.004758285006727873, 0.0036122160819300995, 0.0025280951101701657, 0.0020494630598028897, 0.00203448610195606, 0.0021050038714401365, 0.0021033391534882803, 0.0020264074897404123, 0.0018792469511282398, 0.0017027002205968235, 0.001548076718439588, 0.0014309434794138737, 0.0013513627299959093, 0.0013087729345282254, 0.0013002589071229968, 0.0013228504340553372, 0.0013759309496057595, 0.0014594848814920847, 0.001567217771019161, 0.0016769814874519236, 0.0017704381166766016, 0.001845118986676126, 0.00190100378264918, 0.0019368005340334588, 0.0019492355632000705, 0.0019361309618511242, 0.0018973108435580213, 0.0018332088313250186, 0.0017542727072928505, 0.001680553525758733, 0.001622526352098013, 0.0015806293565260796, 0.0015543653749157914, 0.0015375437769801943, 0.0015208383516958704, 0.001500557600500694, 0.0014766427696952765, 0.0014491947917921397, 0.0014189664174314026, 0.0013868684541141867, 0.0013531605494696702, 0.0013178433645653215, 0.001281932947760911, 0.001250339578488975, 0.00122789032432815, 0.0012155180189718853, 0.0012132153879185203, 0.0012191148118959744, 0.001227036944075749, 0.0012320513825860024, 0.0012335467276124515, 0.0012315515658773216, 0.001227544358745232, 0.0012250817066529127, 0.0012264360693674259, 0.0012317731808625387, 0.0012408908306756408, 0.0012495165065271735, 0.0012498081711794992, 0.0012378517006880405, 0.0012135047065290824, 0.0011774210322022804, 0.0011369809905091566, 0.001102868612213627, 0.0010790921966982031, 0.0010657024818803984, 0.001062457408941217, 0.0010676912661629692, 0.0010794616374983773, 0.00109724900824483, 0.0011210523350624335, 0.0011470470002491323, 0.0011580107861133837, 0.0011376134898335999, 0.0010829228003609442, 0.0009940180600305493, 0.0008848389035032156, 0.0007988288509301958, 0.0007693740369647123, 0.0008002773684333622, 0.0008909267386650668, 0.0010150398460600021, 0.001112473107310434, 0.0011463322644138588, 0.001114196447747108, 0.0010179415935691188, 0.0008926105208929488, 0.000799789279195412, 0.0007688163184582653, 0.0008006109219430013, 0.000891685634871707, 0.001006190017969165, 0.0010942057630131466, 0.001138003623293686, 0.0011374096758273028, 0.0010957141341944032, 0.0010338600507269272, 0.0009753953569330634, 0.0009262192731500363, 0.0008863358562568105, 0.0008555319437010198, 0.0008329116422544844, 0.0008176556714411046, 0.0008096275521609839, 0.0008088145108572573, 0.0008135981322375183, 0.0008192215528215682, 0.0008221668717726255, 0.0008220674099966574, 0.0008189717783029654, 0.0008146326620273037, 0.0008128659922992595, 0.00081591497154785, 0.0008239109455991309, 0.0008364839993882031, 0.0008474906052652678, 0.0008465873367058396, 0.000829079358381779, 0.0007948416489059196, 0.0007454722112876927, 0.0006959769219232539, 0.0006664606585335756, 0.0006636698940782823, 0.0006876540971818834, 0.0007352571852466822, 0.0007878355115117225, 0.0008251585322902044, 0.0008424820447919604, 0.000839808367189554, 0.0008213886044695917, 0.0008039529502229872, 0.0008022654543559868, 0.0008186075367311654, 0.0008529795134161813, 0.0009054117978886736, 0.0009759890034918839, 0.0010647713930132807, 0.0011717647133082862, 0.00129641860178685, 0.001421721170176242, 0.001512310120285916, 0.0015482435459174618, 0.0015284803133812017, 0.0014543829916563097, 0.0013462689595095112, 0.001236984511774307, 0.0011407402772599731, 0.001057855399732438, 0.0009883298791920486, 0.000932163715638458, 0.0008893569090723599, 0.0008599094594928872, 0.0008438213669010805, 0.0008402281095363368, 0.0008444221551008255, 0.0008514930337389856, 0.0008603732443126372, 0.0008710627450040156, 0.0008835615358132945, 0.0008978696167399533, 0.000913986987784686, 0.0009319136489476659, 0.000951670556717174, 0.0009747684622935654, 0.0010051509259282818, 0.0010455006422429788, 0.001096046540319598, 0.0011567886201576186, 0.0012277268817577347, 0.0013088613251195994, 0.0014001919502432125, 0.0015017187571292681, 0.0016134417457767253, 0.001735360916186278, 0.001867476268357926, 0.002009787802291149, 0.0021622955179862943, 0.0023249994154437084, 0.002497899494662871, 0.0026809957556434352, 0.0028742881983866153, 0.0030777768228917174, 0.0031820701805844454},
.param_6 = {4.065606214337369, 3.471657200490899, 2.3913791960022053, 1.526341237922027, 0.8765433262503841, 0.4419854609872709, 0.2226445982973696, 0.18834139346241563, 0.21944794737000506, 0.21224397476018175, 0.17668382645524838, 0.15155759693501747, 0.14606850447129172, 0.14484723085243234, 0.13761009047880968, 0.1284220669924674, 0.12308141140313644, 0.1184107467574469, 0.10468227014801268, 0.0794687538024641, 0.055618092423742604, 0.045088187315661665, 0.04475869424303558, 0.04631008517168578, 0.04627346137674182, 0.04458096477428786, 0.041343432924820234, 0.037459404853129596, 0.03405768780567198, 0.031480756547105915, 0.02972998005990879, 0.028793004559621305, 0.028605695956707144, 0.0291027095492169, 0.03027048089132567, 0.032108667392824475, 0.034478790962422234, 0.03689359272394388, 0.038949638566884714, 0.040592617706874945, 0.04182208321828196, 0.042609611748736786, 0.0428831823904019, 0.04259488116072352, 0.041740838558276816, 0.040330594289150756, 0.03859399956044063, 0.03697217756669091, 0.03569557974615889, 0.03477384584357479, 0.03419603824814654, 0.03382596309356445, 0.03345844373731088, 0.03301226721101613, 0.03248614093329383, 0.031882285419426726, 0.03121726118349155, 0.030511105990510545, 0.02976953208833344, 0.028992554020440542, 0.028202524850737265, 0.027507470726753636, 0.02701358713522173, 0.0267413964173846, 0.026690738534207448, 0.02682052586171213, 0.02699481276966509, 0.02710513041688789, 0.027138028007475667, 0.027094134449304197, 0.027005975892391287, 0.02695179754636512, 0.026981593526084757, 0.027099009978975852, 0.027299598274863057, 0.02748936314359851, 0.02749577976595141, 0.027232737415136543, 0.026697103543640854, 0.025903262708448782, 0.025013581791200057, 0.02426310946870014, 0.02374002832736255, 0.023445454601367377, 0.02337406299670608, 0.023489207855584282, 0.023748156024963607, 0.024139478181386953, 0.024663151371373537, 0.025235034005482992, 0.02547623729449444, 0.025027496776339198, 0.02382430160793869, 0.021868397320670696, 0.019466455877070743, 0.017574234720463267, 0.016926228813224364, 0.017606102105532928, 0.019600388250631817, 0.022330876613321782, 0.024474408360827815, 0.025219309817106628, 0.024512321850436725, 0.02239471505852131, 0.019637431459645915, 0.0175953641422949, 0.016913959006081836, 0.01761344028274603, 0.019617083967179982, 0.022136180395324057, 0.024072526786289572, 0.025036079712459358, 0.025023012868197192, 0.02410571095227687, 0.022744921115991357, 0.02145869785252774, 0.020376824009302186, 0.019499388837651566, 0.018821702761423476, 0.01832405612959831, 0.01798842477170326, 0.017811806147541298, 0.017793919238862088, 0.017899158909223667, 0.01802287416207138, 0.018087671178998455, 0.01808548301992785, 0.01801737912266732, 0.017921918564603456, 0.017883051830580587, 0.017950129374050272, 0.01812604080318192, 0.018402647986537346, 0.01864479331583624, 0.018624921407531247, 0.01823974588439914, 0.01748651627593023, 0.016400388648329933, 0.015311492282310546, 0.01466213448773901, 0.014600737669723252, 0.015128390138000047, 0.016175658075426314, 0.017332381253259976, 0.018153487710387273, 0.0185346049854207, 0.018475784078167412, 0.018070549298332406, 0.017686964904906066, 0.017649839995831362, 0.018009365808085986, 0.01876554929515495, 0.01991905955354978, 0.021471758076821446, 0.023424970646293564, 0.02577882369278195, 0.028521209239312784, 0.03127786574388114, 0.033270822646286335, 0.03406135801018173, 0.03362656689438748, 0.03199642581643847, 0.029617917109212022, 0.027213659259037182, 0.025096286099715592, 0.02327281879411225, 0.02174325734222715, 0.020507601744046422, 0.019565851999592265, 0.018918008108842477, 0.018564070071824812, 0.018485018409797327, 0.018577287412216426, 0.018732846742258724, 0.018928211374877324, 0.01916338039008869, 0.019438353787892826, 0.019753131568278626, 0.02010771373126552, 0.020502100276850732, 0.02093675224777436, 0.021444906170456357, 0.02211332037042324, 0.023001014129345188, 0.024113023887031848, 0.025449349643469343, 0.02700999139867155, 0.02879494915263292, 0.030804222905350676, 0.03303781265684147, 0.03549571840708865, 0.03817794015609777, 0.0410844779038716, 0.04421533165040736, 0.047570501395699516, 0.05114998713975916, 0.05495378888258351, 0.05898190662415592, 0.06323434036450692, 0.06771109010361709, 0.07000554397285086},
.param_7 = {0.0004643408424046534, 0.0004751416308327458, 0.00048594241926083867, 0.000496743207688931, 0.0005075439961170238, 0.0005183447845451161, 0.0005291455729732089, 0.0005399463614013013, 0.000550747149829394, 0.0005615479382574866, 0.0005723487266855794, 0.0005831495151136717, 0.0005939503035417645, 0.0006047510919698569, 0.0006155518803979496, 0.000626352668826042, 0.0006371534572541348, 0.0006479542456822271, 0.00065875503411032, 0.0006695558225384124, 0.0006803566109665053, 0.0006982489367490469, 0.0007161780633013259, 0.000734107189853604, 0.0007520363164058826, 0.0007699654429581608, 0.0007878945695104388, 0.0008058236960627177, 0.0008237528226149963, 0.0008416819491672744, 0.0008596110757195525, 0.0008775402022718311, 0.0008954693288241094, 0.000918934334555488, 0.000952918801138174, 0.0009869032677208617, 0.001020887734303548, 0.0010548722008862353, 0.0010888566674689215, 0.0011228411340516089, 0.0011835953272356942, 0.0012574726065387558, 0.0013313498858418145, 0.0014349784400910994, 0.0015583562445101178, 0.001662395011578475, 0.001760418123587231, 0.0018547751334646956, 0.001944632440805275, 0.002034489748145858, 0.0021385812613209723, 0.002243828392987555, 0.002368394914812586, 0.002499071774266008, 0.0026407315541202227, 0.0027817141600768834, 0.002921794661293105, 0.0030651156981412755, 0.0032118626802490747, 0.0033672556090111492, 0.003530383798623422, 0.0036972277587161324, 0.003866866487824527, 0.004045649001664781, 0.004255774484223956, 0.004554681033067253, 0.005011249717572902, 0.005455499279130866, 0.0059201004495214975, 0.006488623761063441, 0.007178241553464816, 0.007875976649990993, 0.008470848444052641, 0.008988562412108847, 0.009474340947310861, 0.009956902616283375, 0.010468287282135467, 0.011032726962809575, 0.011633229268902968, 0.012253504794916938, 0.012905411160484824, 0.01360455913984547, 0.014360285966215212, 0.015126921525965948, 0.01588606975271595, 0.016648177256862243, 0.017398545870358596, 0.018181007367933, 0.01904455198149231, 0.019909843569651798, 0.02072721850465652, 0.021729988697693395, 0.02274900905836049, 0.02362631545890037, 0.024745902743176548, 0.02558333668439513, 0.026530440521944865, 0.027655335915146538, 0.02879814575161814, 0.02994132246897766, 0.031074964507359557, 0.03241600066290961, 0.03354661739802123, 0.034653618786602704, 0.03547606666914474, 0.036106379017884195, 0.036736999654563625, 0.03753859406332894, 0.038567777785243396, 0.039668699449238155, 0.04070505990011609, 0.04164415277573723, 0.042434319107885025, 0.04307807113107077, 0.043611070029777384, 0.044066414274872644, 0.04446500287790962, 0.04481663563795654, 0.04513700802267784, 0.045360824742268054, 0.045360824742268054, 0.045360824742268054},
.param_8 = {2.1106401927484246e-05, 2.15973468560339e-05, 2.2088291784583575e-05, 2.2579236713133224e-05, 2.3070181641682897e-05, 2.3561126570232546e-05, 2.4052071498782222e-05, 2.4543016427331875e-05, 2.5033961355881545e-05, 2.5524906284431204e-05, 2.601585121298088e-05, 2.650679614153053e-05, 2.6997741070080202e-05, 2.7488685998629858e-05, 2.7979630927179528e-05, 2.847057585572918e-05, 2.8961520784278856e-05, 2.9452465712828506e-05, 2.994341064137818e-05, 3.0434355569927834e-05, 3.092530049847751e-05, 3.173858803404758e-05, 3.255354833187845e-05, 3.336850862970927e-05, 3.418346892754012e-05, 3.499842922537094e-05, 3.5813389523201763e-05, 3.662834982103262e-05, 3.7443310118863464e-05, 3.825827041669429e-05, 3.907323071452511e-05, 3.988819101235596e-05, 4.0703151310186785e-05, 4.1769742479794904e-05, 4.331449096082609e-05, 4.4859239441857345e-05, 4.640398792288853e-05, 4.794873640391978e-05, 4.949348488495097e-05, 5.103823336598222e-05, 5.379978760162246e-05, 5.715784575176162e-05, 6.0515903901900654e-05, 6.52262927314136e-05, 7.083437475045989e-05, 7.55634096172034e-05, 8.00190056176014e-05, 8.430796061203162e-05, 8.839238367296704e-05, 9.247680673390264e-05, 9.720823915095328e-05, 0.0001019921996812525, 0.000107654314309663, 0.00011359417155754581, 0.00012003325246001011, 0.0001264415527307674, 0.00013280884824059568, 0.00013932344082460342, 0.00014599375819313975, 0.0001530570731368704, 0.00016047199084651917, 0.00016805580721436966, 0.0001757666585374785, 0.00018389313643930825, 0.00019344429473745257, 0.0002070309560485115, 0.00022778407807149553, 0.0002479772399604939, 0.00026909547497824983, 0.0002949374436847018, 0.0003262837069756734, 0.0003579989386359542, 0.0003850385656387564, 0.0004085710187322203, 0.0004306518612414028, 0.0004525864825583352, 0.0004758312400970667, 0.000501487589218617, 0.0005287831485864985, 0.0005569774906780425, 0.0005866095982038556, 0.0006183890518111577, 0.0006527402711916005, 0.0006875873420893612, 0.0007220940796689068, 0.0007567353298573747, 0.0007908429941072088, 0.0008264094258151363, 0.000865661453704196, 0.0009049928895296272, 0.0009421462956662053, 0.0009877267589860634, 0.0010340458662891133, 0.0010739234299500166, 0.0011248137610534792, 0.0011628789401997785, 0.0012059291146338574, 0.0012570607234157515, 0.0013090066250735517, 0.0013609692031353482, 0.0014124983866981617, 0.0014734545755868004, 0.0015248462453646013, 0.0015751644903001228, 0.0016125484849611243, 0.0016411990462674633, 0.001669863620661983, 0.0017062997301513156, 0.0017530808084201541, 0.001803122702238098, 0.0018502299954598219, 0.001892916035260783, 0.0019288326867220465, 0.0019580941423213982, 0.0019823213649898808, 0.0020030188306760293, 0.0020211364944504374, 0.0020371198017252973, 0.0020516821828489924, 0.0020618556701030933, 0.0020618556701030933, 0.0020618556701030933},
.param_9 = {0.7305813870697574},
.param_10 = {160.81299196643764, 0.5229135523419954},
.param_11 = {0.5714742853756033, 0.0035815434921769133},
.param_12 = {0.41477565277722667},
.name = {'b', '1', '8', '2', '5', '0'},
In addition, several CSV files are created under profile_1 directory, some of them containing measurements from the profiling process. For example, file b18250_600mAh_Tp25.csv contains data like this:
Seconds Current(A) Voltage(V) Temperature(C) 1 -0.000025 4.179207 24.176 [...] 7 -0.000025 4.179207 24.072999 8 0 4.179199 24.072999 9 -0.000025 4.179207 24.072999 [...] 340 -0.120025 4.074407 24.072999 341 -0.120025 4.074407 24.072999 [...] 90151 -0.059825 3.097947 21.834999 90152 -0.059825 3.096347 21.834999
As can be seen, profiling process discharges the battery using current of different values and even some intervals with no current draw (which may be connected with the intent to measure Open Circuit Voltage when the battery is "at rest").
Profiling process was repeated twice for the same battery (used, low cost, of unknown current parameters) with the following results:
The source of differences is currently unknown (may be some uncaught operator error, regeneration of long unused battery during the first full charge/discharge cycle or maybe some incompatibility of the algorithm with the partially degraded cell).
Now the question arises - how to test newly generated model? One of the advertised advantages of the fuel gauging algorithm is the possibility to precisely estimate the charge level, especially for the battery in the middle of the discharging curve (when OCV method would be unreliable) and without the need of measuring all the charge drawn from the battery (using Coulomb Counter approach).
To do this test, we have discharged the battery to about 60% charge level first by enabling BUCK1 regulator, configured to output 1.8 V and with 47 Ω resistor connected. As the output is powered from USB first, and from the battery only when USB power is not present, USB power cable was disconnected.

What is interesting here is a current plot - despite being loaded with a fixed resistor, current fluctuates in the range of about 10 - 30 mA, which means that instantaneous current measurements at the battery side loaded with switched regulator are presented.
After the battery was discharged to about 60%, main test was executed: five times evaluation kit was powered down by disconnecting the USB cable from controller port (and closing the PowerUP application), which seems sufficient to clear any internal state from the Evaluation Kit, as the fuel gauge algorithm (with high probability) runs on the controller SOC, which is powered by the PC USB connection.
Results are as below and seem repeatable:

Given the difficulties of obtaining reliable li-ion battery charge estimation - especially in the middle of discharge curve and in energy-efficient manner, fuel gauging method provided by the Nordic Semiconductor seems to provide repeatable results.
Somewhat unfortunate is the fact that it is restricted to their nRF SOCs (running the algorithm) and PMICs (providing measurements), but for new projects seeking a great level of power efficiency it is a very interesting proposition, especially when end-user can profile new batteries in-house, without the need of getting support from the manufacturer.
Minor annoyances were identified in the PowerUP GUI application - namely, blinking when refreshing data (which seems connected with the performance of the machine running the application - the slower the machine, the more blinking encountered) and occasional (once every several days) disconnections with the Evaluation Kit, resulting in graph data loss, but those are of low significance.
Generating models was easy (if somewhat time-consuming) so in summary this is a very interesting solution for somebody already using an nRF technology or planning to build a power-efficient solution without restraints on the technology used.
Top Comments
Hi JWx
In reference to your summary comment "Somewhat unfortunate is the fact that it is restricted to their nRF SOCs". Please see my earlier comment on this topic in another road test below…