Comment by Liftyee
3 days ago
Always love to see an in-depth reverse engineering write-up. This one's particularly interesting since I'm currently designing a battery pack for my own project.
Interesting to see a microcontroller (and quite a classic one...) as well as an ASIC for battery management. I imagine it's for communication purposes. The battery management chips I've been looking at have built in I2C interfaces to let me avoid firmware.
I've been down this road before. The ASIC in the Milwaukee pack is known as an "analog front end". Since you can't wire cells directly up to the pins of your MCU, you have a chip to handle that stuff for you. It will let you read the voltage of each cell in the stack (some are literally analog, and just provide a nicely in-range voltage output for your MCU's ADC to read; others have internal ADCs). It might do current sensing. It might handle a couple alarms to turn off a mosfet when things go wrong. It will have an I2C interface, but the supported commands are "tell me voltage of cell #2" or "put shunt resistor on cell #1 for balancing". It's still the MCU that calls most of the shots here, but the more advanced ASICs can do more things autonomously.
The MSP430 can be put into an extremely low power sleep mode (microAmps I believe, though you have to turn off all it's peripherals also) which means the MCU will not draw down the battery over time, leaving it fully charged and ready to be used even after long storage.
There was a GitHub project a few years ago to try and RE the Milwaukee M18 system. I think it was based around this teardown: https://www.allaboutcircuits.com/news/teardown-tuesday-batte...