Some time ago i developed a very simple circuit that performs differential measurements of cells in a cell stack.
This circuit is also internally temperature-compensated, has exceptional noise immunity and consumes close to zero current when not used.
It is also infinitely scalable, only limited by the maximum voltage of transistors used.
And the circuit can be multiplexed into a single output, meaning that the measurement of any number cell stack can be done with a single ADC channel.
This nifty little circuit was developed with the idea of building a DIY BMS, that is low cost and can be custom configured for the battery pack it's used with.
Also, since the BMS would have a microcontroller, some more advanced features could be implemented, like serial comms, capacity measurement as well as parameter configurations for balancing, charging, discharging etc.
As of now i have built and tested a 10S version of my cell measurement circuit. The circuit works well and requires minimal calibration to make accurate.
Currently i'm stuck at the low power part. I want to get familiar with the low power modes of the MCU i'm using first and then design my code around the sleep modes. The goal is minimal power consumption for longest operation.
At first i tried using the LGT8F328p (atmega328p clone) and managed to get about 3,5mA of current draw. After that i start running into the area of diminishing returns. And 3,5mA is way too much draw for a mid-sized battery pack, so i'm also looking at other options.
Now i'm reading up on the low power modes in the STM32F103C8T6, which is found in the blue pill. I'm staying on mainstream MCU's just to hopefully cut down on development time.
STM32 also has much more processing power than the atmega, which would allow it to run for shorter periods as it runs calculations and measurements. That and it also has much lower power consumption than the atmega, making it the more attractive option.
I'll keep this thread going as i develop my BMS. Also i'm open to any kind of input.