Testing and comparing 21 cheap USB chargers
I ordered 21 (ultra) cheap USB chargers from AliExpress and will test them to see if they:
- can provide the power they claim to be able to deliver
- are safe to use (will they catch on fire π₯ or even explode π₯)?
- aren't just overpriced fire hazards (provide bang-for-buck πΆπ΅)
The project was started today and will take some time to complete. Currently the project is in the setup phase so this project is still π§ under construction π§. I have ordered and received 12 21 chargers and have taken some π· pictures. Basic data has been entered in a π Google sheet (which will also be used to record measurements etc. during this project) for the first 12 chargers.
All chargers have been received, all basic data has been entered into the π Google sheet. A test-protocol, to ensure all chargers undergo the same tests under the same conditions, has been written and is nearly finished. A viewer to visualize the test results has been created. Software to run the tests automated on the DL24-P has been written. After a few finishing touches, testing will commence sometime soon in the upcoming days π π
Today the second DL24-P came in. Unfortunately this did present a small issue but I'm confident I'll be able to fix it and worst case this isn't even a showstopper anyway. In other news: under A word on software (and a bit of hardware) you'll find more about a Custom ambient sensor I made to reliably and consistently measure ... well, ambient temperature for this project. The people over at PCBWay picked up on this project and were kind enough to reach out to me and sponsor the PCB for that project. I'm looking forward to team up with them and see what else we can do! Thank you PCBWay!
*sigh* I can't get the second DL24-P to work with my previous implementation. However, all is not lost. All we have to do is reverse engineer the "native" protocol. Which, I'm happy to say, seems to be not that hard. I'm expecting this to take a few days at most. Up until now I had implemented the "PX100" protocol but that appears to only work on the older model. I am currently well on my way to supporting the "native" protocol though. And that should be the last "major hurdle". I'll be back! Update: Dangit π This protocol doesn't allow to set values like current or the timer. It only allows to control the 'cursor' and send 'up' / 'down' commands. That's like controlling the device blindfolded. I have contacted Atorch but hope on any useful response is low. I'm looking for alternatives (flashing the firmware to a newer or older version, extracting the firmware of the older device, ... not sure yet).
Let's goooo! π I contacted Atorch, honestly not even expecting a reply, but after a little back-and-forth I got them to send me a firmware update that seems to support the "PX100" protocol. Details can be found here. I have asked Atorch politely if I can share the firmware file online and am waiting for their reply. Keep watching this issue for updates on that. I will be testing the firmware soon and then there's just one hurdle left: getting the data files to 'align' and put them into a nice interactive graph. But once I have my testsetup working (reliably) I will start doing the tests and dump the data in the repository. Aligning the data, making the graphs is a tomorrow problem. Any day now! ππ₯³
Update: We got the green light!
The following chargers are in this test:
- GUSEYEE AR-890 (β¬1.94 / $1.79)
- {noname} TRG-044P (β¬1.39 / $1.28)
- GUSEYEE {nomodel} (β¬2.16 / $1.99)
- NNBILI {nomodel} (β¬1.55 / $1.43)
- GUSEYEE LYK-881 (β¬2.45 / $2.26)
- Maerknon AR-893 (β¬2.19 / $2.02)
- {noname} BK385B (β¬2.49 / $2.30)
- Byleen KeKe-PD002 (β¬4.29 / $3.96)*
- Maerknon AD-64 (β¬2.19 / $2.02)
- Maerknon KeKe-F002 (β¬3.30 / $3.05)*
- WALKESEN AR-896 (β¬3.35 / $3.09)*
- Maerknon NC-22 (β¬2.51 / $2.32)
- Henruisi TRG-182 (β¬1.99 / $1.84)
- olaf TRG-157 (β¬1.99 / $1.84)
- Maerknon 61-A2C2 (β¬1.99 / $1.84)
- FANBEDA BK329-4A4C (β¬4.39 / $4.05)
- {noname} BH-L01 (β¬1.19 / $1.10)
- {noname} A2347 EMC 3621 (β¬1.59 / $1.47)
- GUSEYEE TE-023 (β¬1.59 / $1.47)
- GUSEYEE BK319 (β¬3.99 / $3.68)
- {noname} 62-CCA (β¬1.59 / $1.47)
* Ordered in US version by (my) mistake. Other than the plug standard / format there shouldn't be any difference. These chargers will be tested with a simple adapter plug.
As a 'control' group (to prove the USB cables are good, the USB tester detects all protocols etc.) we have the following "expensive" or "brand" chargers:
- UGREEN Nexode 100W USB C GaN Charger CD226 (β¬54.99 / $59.55)
- UGREEN Nexode 200W USB C GaN Charger CD271 (β¬117.39 / $127.11)
- Xiaomi Power Bank 3 Pro PLM07ZM (β¬45.39 / $49.15)
- Shenzhen GOOD-SHE Technology Co., Ltd. GS-W65A0927 (β¬25.00 / $27.07)
The test protocol is currently being determined but will include:
- π Measuring current draw from outlet
- π± Determining supported USB protocols
- π Measuring output in several combinations, setups (e.g. single / dual load) and durations, each test producing:
- β‘ Measurements (Voltage, current, temperature, ...) at:
- No load for 1 minute
- Rampup over 5 minutes from 0.2A to 150% of rated load with 100mA increments
- 50% of load for 5 minutes
- 90% of load for 5 minutes
- Rated load for 30 minutes
- 110% of load for 20 minutes
- 125% of load for 20 minutes
- 150% of load for 20 minutes
- βοΈ Weight
- π‘οΈ Infrared image
- π Voltage / current / ripple / power graphs
- β‘ Measurements (Voltage, current, temperature, ...) at:
- Teardown pictures
Measurements will be done using two Atorch DL24-Ps, a FNIRSI FNB58, Geti PM001, Kaiweets KTI-W01, Hanmatek DOS1102, OWON XDM1241, Imtex precision scale, UGREEN 240W USB-C to USB-C cable (0.5m), UGREEN 18W USB-A to USB-C cable (0.5m) and UGREEN 18W USB-A to USB-C Adapter. Not the most expensive or best test equipment, but will do fine for this project. Non-affiliate links.
The actual, latest, checklist used during each test can be found here.
I've tried to automate a lot of this project. Mostly because testing these chargers is pretty repetitive, but more importantly I want to make sure every test is as identical as possible.
Some of my test equipment can be controlled over (USB virtual) serial port or comes with software that can export data to some file format. If this project amounts to nothing then at least I will have made my mark in the test and measurement devices .Net codespace π Most of the software I had to develop for this project is open source and whatever is released is released, as always, as MIT.
The following application or packages were developed during, or before, this project:
- OwonBinfileReader: Reads OWON (and Hanmatek) oscilloscope
.bin
files. I had to reverse engineer the file format mostly myself. Information is very scarce on the web on this file format. It turns out my oscilloscope (the Hanmatek DSO1102, which is a rebranded version of the OWON SDS1102 as far as I know) also supports SCPI. I had done an SCPI implementation a couple of months before for my OWON XDM1241 and I briefly considered implementing a 'client' for the oscilloscope too but that rabbit hole went a little too far off road for this project. I may still do so in the future... - CFNReader - Provides a simple way to read FNIRSI's CFN files (*.cfn) produced by the FNIRSI USB meter tool. I haven't been able to communicate directly with the USB meter yet, but am interested in any information about this. For now, reading a
.cfn
file will have to do. - LibAtorch: A library for reading and commanding Atorch devices. With this package you can control your Atorch load. This is the main one; it controls the electronic load (or: plural in a later stage..) that is hooked up to the chargers to test them at different levels of power demand.
- OWON XDM1000 series SCPI client: This project is not yet publicly available but will be released as FOSS with MIT licence eventually. This contains a fork of klasyc's excellent ScpiNet. This package can be used to control my OWON XDM1241 and read measurements (in this project I use it to read a temperature probe on the DuT).
- Custom ambient sensor: this was a simple hardware + software one-off that combines a Wemos D1 Mini with a GXHT30 temperature and humidity sensor and a 0.96" SSD1306 OLED display to do ambient temperature readings. This monstrosity outputs the temperature to the serial port and offers an HTTP endpoint as well so that I could easily integrate ambient temperature readings in my test runner.
- Test runner: This is a very specific and unique mudball of a project that integrates all of the above and does the actual testing. Code for this project is not likely to be released. Because.
Icon by Payungkead