The Hardware:

While the first Battery Analyzer did its job I wasn't quite happy about the fixed load resistors. I took the chance to learn how to design my own PCB and created the MkII with a programmable constant current load. Like the MkI it is designed as a hat for the Arduino Mega 2560, which might not be as fancy as a standalone device, but for my first PCB I didn't want to bite off more than I could chew. The measurements are done by an Adafruit INA219 module and the constant current load consists of a MCP4725 12-Bit DAC, a TLV2372 rail-to-rail OpAmp and an IRLZ44 MOSFET (as well as some caps and resistors). Additionally it uses a generic 0.96'' 128x64 OLED display and a micro SD card adapter.

Schematic of the CC circuit

I included the KiCad files in the Github project, but they're probably quite bad and no one should look at them. :D

When the Battery Analyzer gets powered on the OLED display shows a selection menu for Alkaline, NiMh and LiPo/Li-Ion batteries. This selection determines the test end voltage. The next screen shows the discharge current selection. If OK is pressed the test starts. First a battery check is performed to see if it is already discharged, missing or in reverse. If everything's OK the CC control sets the discharge current and the INA219 takes a measurement every second which is then displayed on the OLED screen. Every 15 seconds a data point is logged to the SD card in CSV format. If the SD card is missing the optional logging is disabled and a message is displayed on the screen. The test ends when the battery reaches the end voltage and a message will be shown.


The Battery Tests:

The test parameters were quite simple, I tested four batteries of every brand, two at a 100mA discharge rate and two at 500mA. The analysis was done in LibreOffice in which, like in everything else in this project, I had very little experience, but I hope the data is understandable.

Starting with the most basic, the measured energy of the batteries.

In the low drain (100mA) test all Alkaline batteries are in the 2500-3000 mWh range while the Lithium (LiFeS2) batteries are above 4000mWh.

In the high drain (500mA) test the Alkaline batteries lost a significant amount of power which got converted into heat, most struggle to reach 1600mWh. The Lithium batteries on the other hand kept most of their energy.

This gives us our first insight, Alkaline batteries are bad for high drain applications and while some are a little bit better than others, rechargeable NiMh batteries will save money and protect the environment on the long run. Btw, stay tuned for part two of the Battery Analyzer "series" where I take a look at NiMh batteries.

None of the brands is much worse than the others, but one thing is interesting. The expensive top tier batteries of brands with multiple tiers are always worse than the mid tiers. Duracell Ultra < Duracell Plus in energy. Energizer Max Plus < Energizer Max in energy. Coop Basic Plus is roughly the same as Basic in energy, but has a worse high drain loss and Varta Long Life Max Power has also a worse loss than Varta Long Life Power.

Here we see the energy loss that occurred in the 500mA test compared to the 100mA test. The first thing you probably noticed is the super low loss of the Lithium batteries with roughly 11.5%. Most Alkaline batteries are between 40% and 50% but there are some outliers like the dishonorable mention, the Energizer MAX Plus, which are not only the most expensive cells in the test, but also have the worst high drain loss with 58.6%. The lowest high drain loss achieved Energizer's Industrial cell with 40.5% which is quite a contrast to Duracell's Industrial cell with not so great 56.2%, making it the second worst battery in the test.

The next two graphs show how much charge you get for your money, or rather how much you pay for each 100mWh. The prices are in Swiss Francs because that's where I live, but you can add your local prices to the spreadsheet which you can download from the Github page. Just change the values in the "Price/Cell" and "Price/Cell Bulk" column for the 100mA test. The prices for the 500mA test are linked so they update automatically. Each battery has two bars in the graph, the blue one (left if this causes trouble for some color blind people) shows the prices for "Standard" packs which is often a four pack over here and the green one shows bulk packs if available. The exact amount of batteries in a pack is noted in the spreadsheet.

The price difference between some some of the brands is significant just like the savings if you buy for example 20 instead of four batteries.

To make the decision easier on which brand to buy I calculated a score which both incorporates the energy in a cell as well the price per milliwatt-hour.

My usual batteries were the Migros MPower (a Swiss store brand), but after this test I realized they're not that good. They even get beaten by the Durabase brand, which is the budget line at the same store, in every aspect. IKEA's Alkalisk are a surprisingly good value, even though they were just OK in the test their low price make it my new default for low drain applications. Another interesting value is Energizer's Lithium battery, due to its low high drain loss a 10 pack is absolutely worth the money in high drain applications and possibly extreme temperature applications (according to the literature), but testing this is outside my budget. The GP batteries were imported from Germany where prices are much lower (not including shipping) but they still can't beat locally bought Alkalisks. The most surprising find however are the Lux (Emli Lux GmbH) batteries. I paid 3.- for 12 in a Dollar Store (Alkalisk are 3.- for 10) which makes them the least expensive cells and yet they performed really good. Since Lux tools usually have a really bad quality I would never have guessed that. Unfortunately their availability is uncertain.

Special case Industrial batteries: You usually don't find them at the store and especially Duracell makes clear on the packaging that they're not for you. Of course I bought them anyways and the results were mixed. Duracell Industrial are nothing special and can't compete with Duracell's Plus. The Duracell Procells are better, but also more expensive. Since I couldn't find a bulk pack for either of them (that is sold to Joe Average) they lost the "industrial" benefit (which is mostly the price in large quantities). Energizer's Industrial batteries are quite good compared to the average cell, but can't compete with the really inexpensive ones. Varta's Industrial batteries are great when bought in bulk, but average if you don't need 40 of them.

Bonus: Discharge curves

This is a collection of the discharge curves of all battery brands.

As you can see the Alkaline curves are quite similar to each other and the cells spend most of their life well bellow 1.5V. Before this test I always thought you sacrifice power with 1.2V NiMh batteries, but the discharge curve of this Eneloop is in a similar range at a ~230mA discharge. The Lithium iron sulfide batteries show off their power with a higher and more constant voltage and a more sudden drop off. Energizer's Ultimate Lithium (blue) seem to be quite a bit better than Varta's Ultra Lithium (Purple).

The second graph shows how devastating high drain for Alkaline batteries is. The Lithium cells keep up quite well.

Conclusion:

So what did we learn? Which battery you buy does matter and cheap doesn't necessarily mean bad. We also learned that the expensive Lithium batteries can be worth it under the right circumstances.

I hope this will help you with your future battery purchases. You can find all the files on the Github page, feel free to share your own analysis.