Test of a cheap power bank

I got a small aluminium power bank (Figure 1) as a corporate gift. It is one of those 18650 single-cell power banks you can buy on eBay for about 5 bucks. How good are these? Do they meet their specs? Well, let's see.

Figure 1: Power bank under test with a tastefully pixelated logo of the company I got this gadget from

Experimental part
The power bank was fully charged and then a 10cm cable with stripped wires on one end and a USB-A connector on the other was used to connect the power bank to a MightyWatt R3 electronic load (24 A/3 A, 30 V/5.5 V range).
A constant current of 0.5 A was drawn from the power bank until it switched itself off. Charge was calculated by integrating the measured current over time and total delivered energy was calculated by integrating the product of measured current and voltage (i. e. power) over time. The voltage drop across the cable was compensated for by measuring the cable resistance and increasing the voltage used for calculation of power by the product of current and cable resistance.

Results and discussion
The voltage from the power bank varied between 4.85 V and 4.88 V, which means the regulator kept a very stable voltage throughout the discharge and provided voltage high enough to charge devices connected to the power bank.
The power bank shot itself down after 2 hours, 14 minutes and 45 seconds after delivering 5.33 Wh of energy and showing a useful capacity of 1.12 Ah at the output voltage, which corresponds to 1.48 Ah at the nominal 3.7 V of the internal battery, not including losses at the internal boost converter. The stated capacity was 2.2 Ah (Figure 2), which means the power bank failed to deliver what it promised and was only able to deliver about 67 % of the stated capacity. Using a ballpark figure of 90 % boost converter efficiency, the power bank delivered 75 % of the stated capacity. Considering the unit was brand new, it is a rip off.

Figure 2: Power bank specifications showing the rated capacity in wrong units (mA instead of mAh)

Cheap power bank failed to deliver what it promised on the packaging. You can expect about 2/3 of the stated capacity to be really available. That being said, it is actually usable if you take the stated capacity with a pinch of salt and you don't mind that the device does not have any indication of the remaining capacity.


Crappy USB cable under test

What is in this test (Introduction)

This is a test of power handling capability of a really cheap USB cable. How cheap? I don't know because I found this cable in my box of USB cables. I probably got this bundled with some device. What you will find inside this test? A (not so) shocking revelation that chinese manufacturers are able to make a cable with virtually no copper at all.

I wasn't really going to test the cable in the first place. I was actually going to test a cheap powerbank I got as a corporate gift. You know, one of those small powerbanks that have a single 18650 cell inside and a boost converter ending in a USB port. And for testing, I needed a cable so I could connect it to my MightyWatt R3 electronic load. So I cut the cable, saving only the USB-A connector end with a few centimetres of cable. Inside, I found four tiny conductors that had barely any metal in them.

How I tested the cable (Experimental part)

The USB-B connector was cut from the remaining part of the cable, which was subsequently used for the experiment. The length of the cable for experiment was measured using a tape measure. Both ends of the crappy cable under test (CCUT) were stripped and the foil and braided shielding was removed (Figure 1). Using the removed part with the USB-A connector, the power conductors were identified to be red (VBUS) and grey (GND). These conductors were stripped to bare copper and twisted together at one end, forming a single conductor.

Figure 1: Crappy USB cable and its internal conductors. Red wire – VBUS, gray wire – GND. Green and white wire – differential data pair.

A power bank was used as the power supply. A MightyWatt R3 electronic load (24A/3A, 30V/5.5V ranges) was used as the measurement device.

The positive terminal of the power bank was connected to one end of CCUT, the negative terminal was connected to negative (PWR-) terminal of the load. The other end of CCUT was connected to positive (PWR+) terminal of the load. The voltage-measuring (sense) terminals of the load were connected at the ends of CCUT to measure the voltage drop across it (Figure 2).

Figure 2: Measurement setup showing MightyWatt R3 electronic load, power bank and CCUT

A 30-second linear sweep from 0 to 0.5 A was applied by the load followed by 60-second constant current at 0.5 A. Voltage drop across CCUT was measured as well as the applied current. The resistance was calculated as a ratio of voltage drop and applied current at the beginning of the 60-second constant current phase. The ambient temperature was 22 °C. Approximate cable gauge was estimated from the experimental data using a table on Wikipedia.


So how bad was it? (Results and discussion)

Pretty bad…
The total resistance was 3.7 Ω and slowly increasing as the cable was heating up. The length of the cable was 1.55 m so back and forth 3.10 m. That means the specific resistance was a solid 1.19 Ω/m, which is horrible. The wire gauge was approximately 36 AWG and its cross-section around 0.0127 mm2, which can be safely rounded to zero :-) If you really put 0.5 A through this cable, you would get 1.85 V drop, which would probably cause any device supplied from that cable not working.
On the bright side, MightyWatt R3 turned out to be great at such an experiment. The accuracy within 1 % was available when the current was a meager 1/180 of the used range (Figure 3).

Figure 3: Relative measurement error as a function of current range. Accuracy better than 1 % starts at approximately 1/180 of the current range. Heating causing the increased resistance is visible as the vertical slope at the right end of the curve.


The bottom line (Conclusions)

Crappy cables are crappy. And at the USB 2.0 maximum current may be totally unusable.
May this be a cautionary tale and also an inspiration how to use an electronic load to measure stuff!


MightyWatt R3 Resource Page

This page contains the most up-to-date resources for MightyWatt R3. 


If you are looking for resources for versions 2 to 2.5, click here.


Resources on GitHub.

Latest release and factory calibrations also available on Google Drive.


Please, contact me if you found a bug or have a software request.

Latest hardware revision: 3.1.0

Latest sketch (firmware) version: 3.1.7 (3.1.0 calibration)

Latest Windows control program version:

Application notes

Contains guides and ideas on how to extend the use of MightyWatt R3.

Arduino firmware

Main (firmware): This is the program that runs in Arduino. It is compatible with Arduino Uno and Zero (M0/M0 Pro) board.
Calibration sketch: Use this for manual calibration of MightyWatt R3 together with calibration aid. See the Detailed guide on how to perform calibration.

Calibration aid

Excel spreadsheet: Calculates the calibration values from values obtained using the Calibration sketch. Replace default values in Configuration.h of the main firmware.


This folder contains factory calibration files for units sold through Tindie.


SVG drawing: Contains drawings of the layers. See the folder readme for the number of layers needed.


Detailed guide: All you need to know for calibrating and running MightyWatt R3.
Case assembly instructions: If you have the original acrylic layered case for MightyWatt R3 for Arduino Uno or Arduino Zero (M0/M0 Pro), these are the instructions on how to assemble it.
Communication protocol description: If you wish to use your own PC-side control program with the original firmware, this guide has information about the communication protocol which is used by MightyWatt R3.
Booster pack guide: A guide for the official Booster pack accessory. Increases the maximum power dissipation with a power resistor.

Schematic and BOM

Eagle source files for the PCB of MightyWatt R3.
PDF schematic also included for a quick reference without having to install Eagle.
PDF Bill of Materials.

Windows control program 

Complete C# project: A PC-side program that controls MightyWatt R3. Program has manual control, advanced measurement programs, data logging, graphs and statistics. The executable is located in C#/bin/Release/MightyWatt.exe

MightyWatt Revision 3: Brand New and Seriously Improved

I have developed a new version of MightyWatt, the R3! It looks almost the same on the outside but is very different on the inside. It addresses shortcomings of the revision 2 and adds some new functions. But first, what is MightyWatt R3 (skip to Hardware changes if you already know…):

MightyWatt R3 on an Arduino Uno board

MightyWatt R3 is a programmable electronic load. That means you can use it for testing batteries, power supplies, fuel cells, solar cells and other sources of electrical power. You can also make a programmable power supply from a fixed-voltage power supply and MightyWatt R3 and use it for example as an intelligent battery charger.

MightyWatt R3 is made as an Arduino shield. Simply put it on an Arduino, upload the control sketch, open Windows control program and you are ready to go. In its heart, MightyWatt R3 has a special FET designed for linear operation that acts as a programmable resistor. It is controlled by an analog feedback loop that is able to keep either constant current or constant voltage (constant power and resistance is kept by a software loop). The current or voltage is set using a DAC, the actual voltage and current is read by an ADC so MightyWatt R3 has an integrated ammeter and voltmeter, both of which have two ranges with very fast autoranging. For the voltage measurement to be as precise as possible, MightyWatt R3 offers 4-wire (Kelvin) measurement where voltage is sensed by a dedicated pair of connections. This removes the effect of cable resistance from the measured value. It is of course possible to measure the voltage at the input terminals too (2-wire measurement). The power is dissipated in a force-cooled heatsink that is able to, with its fan, dissipate up to 70 Watts continuously. Current range is up to 24A and voltage up to 30V. MightyWatt R3 is 100% open source – hardware, firmware, software – so you can make your own one. Or buy a ready-to-use unit on Tindie.

Hardware changes in Revision 3


Schematic of MightyWatt R3

Dedicated ADC

While the revision 2 used Arduino's internal ADC, the new version has a dedicated delta-sigma ADC. Either ADS1115 (16-bit) or ADS1015 (12-bit). This means that the measurements will be more precise, less noisy and the calibration will hold for a MightyWatt R3 as a unit, regardless of the control board (Arduino) used.
Both supported ADCs have internal programmable gain amplifier so their resolution is effectively 4 bits larger. However, since they use one half of their range (negative values are not used), one bit is unused so in the end they behave almost like 19-bit and 15-bit devices.
To complement the new ADCs, the DAC can also be a 16-bit AD5693RBRMZ or a 12-bit AD5691RBRMZ (same as in revision 2).

Two current ranges

Instead of the one current range of its predecessor, MightyWatt R3 has two, separated by a factor of 8. Thus, a 24A version will also have a 3A hardware range. This will enhance the resolution and precision making MightyWatt R3 very usable even at low currents. The current sense resistor will, apart from Vishay WSL3637, now support also Ohmite LVK24 and LVK12 footprints, suitable especially for low currents.

Improved linearity towards zero

Analog voltage and current measurement have an intentional offset so the rail-to-rail operational amplifiers will remain in their linear range. Since both voltage and current are measured differentially against that offset, the measurement is even more precise than the single-ended measurement in revision 2 and the offset is of course completely eliminated from the result.

Better op-amps

The standard op-amps now include: OPA365 for the voltmeter and OPA197 as the FET gate driver. This is a definite improvement over the TLC2272/LMC6482 op-amp used in revision 2 both in terms of linearity and stability.

More stable gate driving circuit

More stabilization was added to the gate driver so the load is now very stable even with power supplies that have their own feedback for current and/or voltage. The compensation network is different for constant current and constant voltage mode and is automatically selected by the load.

More input protection

There is never too much protection so there are three new transient voltage suppressors – two on the voltmeter and one to protect the gate of the transistor.

Higher input impedance for the voltmeter

The standard resistors on the input are 1MΩ, three times the value of the revision 2 resistors. The burden on the device under test will be lower and the measurement more accurate, especially at low currents.

Switchable fan

The fan can be turned off when the load is small. MightyWatt R3 can dissipate about 10 W without the fan running so for low-power measurements, the fan can be turned off. The firmware will manage automatic turn on when the temperature or power dissipation increases above set threshold.


LED is connected to PWM output from Arduino so its brightness can be controlled. Since it has a dedicated transistor now, it has an increased maximum brightness.


Not only the hardware has changed. The firmware is now structured to several modules, each performing a dedicated task. It is more readable but also more complex because it has more functions. Some of the highlights:
  • The communication now uses CRC checking of data integrity.
  • The ADC control module performs filtering using a triangular weighted moving average filter to provide a smoother yet quick response.
  • The main loop makes about 3000 turns per second on Arduino Uno (ATmega328P) and 150 complete measurements (V + I + temperature) per second.
  • The software modes (constant power, constant resistance, constant software-controlled voltage and maximum power point tracker) have been reworked to settle faster.
  • Firmware will allow short-term overload on voltage, current and power so quick transients will not abort the measurement…
  • …but the protection logic will disconnect MightyWatt R3 within 10 ms from the time the power exceeded DC safe operating area of the transistor.
  • Calibration sketch has been reworked too and is more automated and informative.

Windows application

And the changes also reflect in the Windows control application. Although most of the improvements lead to both a better accuracy and precision, something the control application has nothing to do with, user can now play with LED and fan rules and enable/disable the smoothing filter.

The LED and fan rules work like this: LED will light depending on some pre-defined conditions which can be combined. For example, it can light when the current is over 10% of the range or the temperature is above 50 °C.

The fan can automatically turn off with two settings that differ by what they will allow – either put emphasis on cooling (stricter rules) or emphasis on fan noise, meaning turning the fan off as often as possible (relaxed rules). The logic will still turn the fan on if the power or temperature is too high. It can, of course, be always turned on, which is the default setting.

Windows application now supports graphs using gnuplot and statistics so you can see how your measurement is progressing in real-time.

So all and all, improvements everywhere. It has still the same principle, but it just got way better! Get your MightyWatt R3 on Tindie or make your own one. MightyWatt R3 remains open-source. That hasn't changed and never will.