Peter.bp
10 W
My idea for BMS was to create separate PCB for each cell in series...
As I have some experience using PIC micro controllers and as they're quite cheap, have decided to build an individual cell module using PIC12F675 (average cost <0.5$)...
The requirements were set up:
- Accuracy of cell voltage measurement < 10mV.
- Standby current < 0.01mA
- Communication: serial through daisy chain.
- Max automatic bleeding current >0.5A.
- Easy calibration and set up (HVC, LVC and bleeding threshold set point).
- Simple asynchronous communication protocol.
- Operating voltage 2.5V-5V.
- Stand alone operation (no need polling modules).
One year ago, I created a prototype and have published some details on my site: http://bps.biz.hr/BMS.html.
The site is not well maintained and the project is still not finished, but there is explained the communication protocol which I developed.
I know that the pages are not well organized, but think that it is enough to get the picture what I wanted to make.
Measured average standby current on prototype was less than 8uA at 4.2V and less than 3uA at 3.3V. The quiescent current doesn't increase significantly when particular cell goes into low voltage alarm as it sends alarm message only every ~2.3 seconds...
After a while, I changed the circuit to this:
NB, the processor is still PIC12F675, not PIC12F683. The voltage reference is replaced with ADR5040 (2.048V).
In order to increase accuracy and to make voltage measurement more resistive to transients, I increased ADC resolution to 12bit by oversampling.
In addition, have changed voltage reference from original 1.2V to 2.048V (ADR5040).
At this moment, I'm waiting for AD5040 voltage references and then I'm ready to start testing.
Four battery packs are ready for testing this modules:
- HK 15C 5000mAh (total 12S2P)
- Headway 38120S 8S20P (my solar system battery)
- Headway 38120S 16S1P (my old electric bicycle)
- Headway 38120S 24S2P (Greyborg bike with Crystalyte 5305 motor)
Wonder to know is it worth to prepare this for serial production (expect price per module less than 10US$ based on 1000 modules production) as well as is there some interest in this half open project. Only thing which I intend to keep closed is firmware in PIC12F675 (completely written in MPASM).
The reason why I am keeping the firmware closed is that I spent much more than thousand hours (during three years) in creating stable firmware...
Of course, I have to update project documentation no my site...
In order to cut any discussion about used language packs in my software: I did not use C language just because I wanted to stay tight with the hardware and to take most of it. Assembly language is closest to direct machine coding (have enough experience in that too, ha ha).
All code in my firmware I have created, i.e. no third part software is installed in it. In addition, the firmware inside cell module (PIC12F675) is taking too much resources and it is impossible to debug it in real circuit (not enough resources left for debugger).
At the end, Have created PCB for 8S, but it is possible to cut into smaller pieces. The picture of almost completed PCB is here:
Have soldered manually all components and thus it doesn't look very nice.
Bleeding resistors ere on edge of the board as they'll be mounted on the heat sink.
Central module has been created on DIY universal prototype board:
It is visible that I used two modules and two 18650 cells for testing the prototype...
NB Firmware is still under development, it is written in ASM30 for dsPIC30F4011 processor (again: no third party software in it).
Any suggestions? Comments?
Is it worth to offer to open market only programmed ICs for DIY?
As I have some experience using PIC micro controllers and as they're quite cheap, have decided to build an individual cell module using PIC12F675 (average cost <0.5$)...
The requirements were set up:
- Accuracy of cell voltage measurement < 10mV.
- Standby current < 0.01mA
- Communication: serial through daisy chain.
- Max automatic bleeding current >0.5A.
- Easy calibration and set up (HVC, LVC and bleeding threshold set point).
- Simple asynchronous communication protocol.
- Operating voltage 2.5V-5V.
- Stand alone operation (no need polling modules).
One year ago, I created a prototype and have published some details on my site: http://bps.biz.hr/BMS.html.
The site is not well maintained and the project is still not finished, but there is explained the communication protocol which I developed.
I know that the pages are not well organized, but think that it is enough to get the picture what I wanted to make.
Measured average standby current on prototype was less than 8uA at 4.2V and less than 3uA at 3.3V. The quiescent current doesn't increase significantly when particular cell goes into low voltage alarm as it sends alarm message only every ~2.3 seconds...
After a while, I changed the circuit to this:
NB, the processor is still PIC12F675, not PIC12F683. The voltage reference is replaced with ADR5040 (2.048V).
In order to increase accuracy and to make voltage measurement more resistive to transients, I increased ADC resolution to 12bit by oversampling.
In addition, have changed voltage reference from original 1.2V to 2.048V (ADR5040).
At this moment, I'm waiting for AD5040 voltage references and then I'm ready to start testing.
Four battery packs are ready for testing this modules:
- HK 15C 5000mAh (total 12S2P)
- Headway 38120S 8S20P (my solar system battery)
- Headway 38120S 16S1P (my old electric bicycle)
- Headway 38120S 24S2P (Greyborg bike with Crystalyte 5305 motor)
Wonder to know is it worth to prepare this for serial production (expect price per module less than 10US$ based on 1000 modules production) as well as is there some interest in this half open project. Only thing which I intend to keep closed is firmware in PIC12F675 (completely written in MPASM).
The reason why I am keeping the firmware closed is that I spent much more than thousand hours (during three years) in creating stable firmware...
Of course, I have to update project documentation no my site...
In order to cut any discussion about used language packs in my software: I did not use C language just because I wanted to stay tight with the hardware and to take most of it. Assembly language is closest to direct machine coding (have enough experience in that too, ha ha).
All code in my firmware I have created, i.e. no third part software is installed in it. In addition, the firmware inside cell module (PIC12F675) is taking too much resources and it is impossible to debug it in real circuit (not enough resources left for debugger).
At the end, Have created PCB for 8S, but it is possible to cut into smaller pieces. The picture of almost completed PCB is here:
Have soldered manually all components and thus it doesn't look very nice.
Bleeding resistors ere on edge of the board as they'll be mounted on the heat sink.
Central module has been created on DIY universal prototype board:
It is visible that I used two modules and two 18650 cells for testing the prototype...
NB Firmware is still under development, it is written in ASM30 for dsPIC30F4011 processor (again: no third party software in it).
Any suggestions? Comments?
Is it worth to offer to open market only programmed ICs for DIY?