Yesterday, I'm building a DIY battery pack out of cells harvested from old laptops, thinking "Man, I wish I knew someone with an old broken e-bike or something".
Very next day. I go for my daily walk. 1 block from my house, e-scooter on the curb, with a sign that says "FREE". "Sold!" I said out loud, and carried the thing one-handed quickly back home (okay I only made it a few houses before I switched to two hands).
The escooter itself was held upright with zipties, rear wheel was present but not attached, rear tire was blown, and while it did power on and show something on the screen, the throttle didn't do anything, and it was physically sticky (and thus very dangerous). And e-scooters are banned in my town (my whole province really), and they're pretty dangerous, and I'm stupid enough to ride without a helmet, so I decided to scrap the scooter for batteries.
I found 30x DMEGC INR18650-26E, rated at 2600mAh at 0.5C, and rated for up to 3C discharge: https://e-foton.pl/userdata/public/assets/Testy_ogniw/DMEGC-INR18650-26E.pdf
I have no use for a 36v series battery pack or its BMS, so I pulled a single cell out of the nickel stripping and threw it in my tester, set for 2A discharge, 2A charge, 5 cycles, 10 minute rest period between:
https://i.imgur.com/egbT45Z.png
I got just over 2500mAh at 2C. Cell only rose ~3°C at end of discharge curve. Cell dropped from 4.1895v unloaded to 4.0250v under 2A, indicating internal DCIR 82.25mΩ. Datasheet states <25 mΩ(ACIR), but I don't have an ACIR tester, however these DCIR values are very good and well within the expected difference.
TLDR: Got free e-scooter batteries. All my testing indicates they are near-new, in perfect health, and quite safe. 280Wh of energy storage, enough to watch old TV episodes on my phone for the first few days of the American Invasion.
Oh my god you just tickled my autism. I WOULD LOVE TO TELL YOU ABOUT MY BATTERY TESTER.
https://imgur.com/a/ZbfAtUk
Unfortunately it is quite a mess because of the number of times I've taken it apart, expanded it, etc:
https://i.imgur.com/mHeF1gA.jpeg
Originally it was all in that black plastic box on the left with the screen. Then I learned two things - 1) if you try to switch an ao3400 mosfet at 20khz to turn a 1 ohm load into a 2A CC load, it will explode. and 2) if you try to put a TP5100 charger in an enclosed space and run it at 2A, it will not.
So the little floating midair circuit board next to the black box is the TP5100 board, heatsunk, and powered by a PD trigger board so it gets its own 9V while everyone else gets 5V. It gets shut on/off by a GPIO wired to its CS pin, but otherwise, it is permanently powered and connected to the battery pins.
The big green circuit board is my attempt at making a much bigger CC load. Here is a rough schematic of whats going on:
https://i.imgur.com/H1qFbui.png
Basically I use a switch to select between high current or low current mode. High current can go from 600mA to 6A. Low current can go from 600mA to 6mA. Then I use a 20 turn trimpot to dial it in, by hand. Dialing it in with the ESP32 would require a DAC, and the S3 doesn't have one, and I trust this manual control more anyway.
Then each side of that switch feeds a pair of 3Peak LMV321B-TR op-amps. They're SMD parts I ordered off digikey, but I've gotten good at deadbugging them. The high-I opamp is wired to a 0.1 ohm, 3W shunt and an IRLZ44N mosfet screwed to a massive CPU heatsink (I used a hand tap to drill a screw hole in the aluminum and then just screwed the mosfet on), the low-I is wired to 10 ohm 1/4w shunt and another little bitty AO3400 mosfet. I have only tested it up to 5 amps, but at 20 watts, the heatsink barely gets warm, and the fan is completely unnecessary.
GNDs are kept separate until the last possible point, to avoid wifi noise from the ESP32 interfering with measurements.
While the ESP32 can't dial in a precise current, it can control the whole thing on or off, thanks to a pair of AO3400 mosfet drains wired to each opamp's output. Whenever the ESP32 wants, it can sink them to ground to turn off a discharge cycle.
Inside the ESP32 black box is also a TP4054, with a series of resistors wired from its PROG pin to different GPIOs. With all floating, the TP4054 does not charge, despite being permanently powered and wired to the battery. By grounding combinations of GPIOs/resistors, I can select a charge current from 600mA down to 30mA.
Battery wires are 18ga, soldered to the battery for maximum connection. Bit of a pain to switch batteries, but way more reliable than any kind of removable connector.
It's ugly, but it works. I've tested 12Ah battery packs at 5A discharge 2A charge, and I've tested 30mAh earbud lipos at 30mA discharge, 30mA charge, all with the same... mess. Oh and it uploads all the data over wifi to my Grafana server for graphing.
That's awesome. Great work. I need to get my charger/tester setup done . I run 100% off grid for electricity, so you would think i have this sorted already 🤣 i really need to get my shit together.