dingo117
10 mW
Hello people, I would like to share a finished project of mine, and maybe receive some feed back on a few things.
Firstly the project is a simple arduino powered cell voltage monitor for multi-cell battery packs, it just uses 4 analog inputs on an arduino, multiplexes 16 inputs and uses a voltage divider to read the high end of the cells in series voltages. it has 3 trip values high voltage, low voltage and lowest voltage, with various alarm sounds for each one, but later i plan to use the on board memory to store and save the samples for later analysis or use a bigger external eeprom memory.
This system can easily be scaled up to handle more than 16 cells, or scaled down to handle 8, or 12 cells.
The voltage divider steps down roughly a 60 volt input to 5 volts which is safe for the ardunio's 5v analog inputs, the 1024 level input i expect to get (60 / 1024) 0.058 steps in reading accuracy i can expect double this as i have error subtracted from error in the calculations for the final value, but i get around 0.2-0.3 volts inaccuracy any ideas why?
besides this any suggestions for improving or adding on to the functionality of this? maybe adding some cell balancing method to make it a viable BMS? i have thought of that a lot and wondered about doing that with some shunts and serial multiplexers.
All resources are provided for any one wanting to recreate or use this, it is a very simple circuit.
some files are to big/not supported to attach so i have links to them.
the Arduino board is the Leonardo Pro Micro with ATmega32U4 chip, they cost me like $5 AUD on ebay the rest of the components are super cheap, the optorelays/optocouplers are PS2501-4 Quad optocoupler able to handle 80 volts, to use a higher voltage battery pack find a higher voltage capable component, the diodes are 1n914, signal diodes, the voltage divider resisters are 110k for R1, and 10k for R2.
Edit:
I would highly suggest adding a thermal cutoff / fuse inline of each input, this will lower the chance of a malfunction blowing up your hard work and it will help stop a fire if anything shorts beyond the cutoffs / fuses.
I have also update the code some to be a bit more power efficient and to have an array to use compensation values for each input, also my power saving efforts will effect usb communication for debugging and such as it turns them off, but a little note in code lets you know how to fix that.
note the PINK lines are where cuts to the track are made they are NOT joints
http://amboscience.com/uploads/arduino_cellmon/cellmon_1to16_logic.ino (INO is the arduino sketch /source code file)
http://amboscience.com/uploads/arduino_cellmon/cellmon.fzz (fzz is a file for fritzing, a free circuit design program)
Firstly the project is a simple arduino powered cell voltage monitor for multi-cell battery packs, it just uses 4 analog inputs on an arduino, multiplexes 16 inputs and uses a voltage divider to read the high end of the cells in series voltages. it has 3 trip values high voltage, low voltage and lowest voltage, with various alarm sounds for each one, but later i plan to use the on board memory to store and save the samples for later analysis or use a bigger external eeprom memory.
This system can easily be scaled up to handle more than 16 cells, or scaled down to handle 8, or 12 cells.
The voltage divider steps down roughly a 60 volt input to 5 volts which is safe for the ardunio's 5v analog inputs, the 1024 level input i expect to get (60 / 1024) 0.058 steps in reading accuracy i can expect double this as i have error subtracted from error in the calculations for the final value, but i get around 0.2-0.3 volts inaccuracy any ideas why?
besides this any suggestions for improving or adding on to the functionality of this? maybe adding some cell balancing method to make it a viable BMS? i have thought of that a lot and wondered about doing that with some shunts and serial multiplexers.
All resources are provided for any one wanting to recreate or use this, it is a very simple circuit.
some files are to big/not supported to attach so i have links to them.
the Arduino board is the Leonardo Pro Micro with ATmega32U4 chip, they cost me like $5 AUD on ebay the rest of the components are super cheap, the optorelays/optocouplers are PS2501-4 Quad optocoupler able to handle 80 volts, to use a higher voltage battery pack find a higher voltage capable component, the diodes are 1n914, signal diodes, the voltage divider resisters are 110k for R1, and 10k for R2.
Edit:
I would highly suggest adding a thermal cutoff / fuse inline of each input, this will lower the chance of a malfunction blowing up your hard work and it will help stop a fire if anything shorts beyond the cutoffs / fuses.
I have also update the code some to be a bit more power efficient and to have an array to use compensation values for each input, also my power saving efforts will effect usb communication for debugging and such as it turns them off, but a little note in code lets you know how to fix that.
note the PINK lines are where cuts to the track are made they are NOT joints
http://amboscience.com/uploads/arduino_cellmon/cellmon_1to16_logic.ino (INO is the arduino sketch /source code file)
http://amboscience.com/uploads/arduino_cellmon/cellmon.fzz (fzz is a file for fritzing, a free circuit design program)