A simple but effective NiMH BMS?

Mr. Mik

1 kW
Joined
Sep 3, 2008
Messages
390
I have an idea for a BMS for NiMH batteries - but I don't know how to make the electronic measurement parts of it.

What I need is the IDeA - the Imbalance Detection Apparatus - to do it automatically. Manually (with a DMM) I can do all it needs to do - I hope the IDeA is relatively easy to make, for someone with the electronic know-how!

Hopefully someone here can help - or alternatively, tell me why my idea will not work.

What I want to do is tap into a long NiMH battery at equal segments lengths and then compare the segments voltages with each other. It works very well by hand in a Vectrix battery: http://visforvoltage.org/forum/9675-how-improve-nimh-vectrix-battery-it-becomes-damaged#comment-54345
A single reversing cell can be detected by just three voltage measurements, looking like this:
IDeA segments (34 cells each):
1: 39.95V
2: 41.33V
3: 41.36V

The actual Module 4 cell voltages at the time were (just measuring 8 of the 102 cells to verify the result):
Cell 28: 1.214V
Cell 29: 1.214VV
Cell 30: -0.217V
Cell 31: 1.216V
Cell 32: 1.199V
Cell 33: 1.212V
Cell 34: 1.212V
Cell 35: 1.212V

For a Vectrix (102s x 30Ah NiMH) battery the easiest option would be to split the 102 serial battery into three equal parts of 34 cells. All the IDeA needs to do is determine if the voltage of the three segments is approximately equal. When a single cell hits empty, it will within a few seconds drop it's voltage by about 1.4V (from +1.2V to -0.25V). It would be quite unlikely that the exact same number in all three segments hits the reversal point at exactly the same time - unless the battery is very empty as a whole and very balanced. Whenever the battery is not very well balanced, a single cell will reverse before all other cells. The 1.4V drop is easily measured when comparing the three segments voltages.

This approach avoids all the difficulties usually faced when trying to figure out what voltage a NiMH battery should have (without a comparison battery under the exact same conditions available). Temperature and current draw make a big difference to the measured voltage - but the IDeA would be measuring segments of identical cells under identical conditions. Therefore, the current load, temperature and SOC all become relatively unimportant. The IDeA does not even need to know what the voltage is - just the voltage difference between identical segments is what counts!

A single reversing cell will stick out like a sore thumb, without any need to know where exactly in the low segment the cell is! Only 4 tab wires are required for a 102s battery, like this:
IDeA12-2-1.jpg



The IDeA needs to compare the three battery segments to each other and trigger the "Imbalance" response if a voltage difference of maybe 0.8V is detected between any two of the three segments. At 1.2V x 34 cells = 40.8V per segment that should be quite simple!

The IDeA should probably be powered by a 12V DC supply.

It should cause a low current drain on the battery and not cause any additional imbalance.

The IDeAs signal output should be galvanically isolated from the battery to keep everything as safe as possible. The isolated output signal can then be used for whatever response is wanted - for example a warning lamp during riding, or a automatic cutoff of discharge current during automated deep discharges for exercise cycling.

Any suggestions or comments on how this could be done would be most welcome!
 
Take a look at Peter Perkins' LiFePO4 BMS that uses small Picaxe microcontrollers as slaves on each cell. I'm pretty sure that theis could easily be adapted to manage clusters of NiMH cells. The Prius clusters NiMH cells into groupd of 6 (7.2V nominal) and manages the pack this way. It seems to work extremely well.

Just adjusting the operating voltage of pretty much any BMS to work on 7.2V nominal rather than either 3.2V or 3.7V should be relatively easy, but Peter's design has the edge because you could easily adapt the code in each slave unit to do nice things like delta V detection, or you could, perhaps, add temperature sensing using a one wire serial sensor chip. The Picaxe already has a simple 'readtemp' command that does all the clever interfacing and just returns a value in degrees celsius.

Peter has a very long thread on his BMS over on the Battery Vehicle Society forum, here: http://www.batteryvehiclesociety.org.uk/forums/viewforum.php?f=53 He has also posted some stuff about his BMS on this forum somewhere, too.

Jeremy
 
One possible approach would be to use CellLog8 units. If you tapped every third cell, the voltage to the CellLog would be in the 'normal' range. You can program under and over voltage limits as well as voltage differential limits (only between cells on one CellLog). This would be very good at detecting when a single cell goes too low (or too high). The alarm outputs need to be isolated so they can be combinded and you need relays for each one so you can turn them off when not in use (reduced battery drain). Even when turned off they drain a little through the input resistors, but I think any system would have some drain.

You could also possibly use the mini LVC boards in a similar manner. If groups of 3 cells were monitored with a 3.0v cutoff, then you should have good detection of a single cell going too low. I'm not sure how much those sag under load, but the cutoff voltage can be changed if needed. The advantage here is simplicity and extremely low standby drain.
 
Thank you, Jeremy and Fechter! Your help is much appreciated.

However, I am trying to avoid having to connect up multiple cells, or all cells in the battery. Those systems which were developed for Lithium batteries need to detect under-voltage of a cell at the cell level, because the Lithium cell will likely be damaged or destroyed if it is allowed to drop to -250mV.

But with NiMH cells one has the luxury to be able to get away with very little damage under the same circumstances - as long as the reversal is immediately detected and remains a rare event.
The below graph shows the reversal of a single cell in the 102s Vectrix battery under 6A discharge load. It also shows the sudden recovery of that cell a few seconds after the voltage recovery of the entire pack.
Red = Volt x 100; Blue = ampere x 10; X-axis is h:min:sec:msec
NUBDCG6Aend.jpg


If measuring 34-cell segments, the relatively large and sudden voltage drop from a single reversing cell can be more easily detected - at least semi-manually, with three DMMs, or one DMM and three consecutive measurements. Having several segments to compare with each other makes it possible to distinguish the 1.2V drop against the increasingly noisy "background" voltage drop when the battery as a whole is nearing empty.

If I can do it manually, then there has to be a way of doing it automatically with some little gizmo!

4 tab wires are enough for a 102 cell NiMH battery - and they are all located in easily accessible positions in a Vectrix.

It is no mean feat to install multiple tap wires into a Vectrix battery - I have done it and want to avoid it this time around! The building of it is difficult - but the dismantling when a cell fails somewhere in the pack becomes a nightmare! Too many cables, all live, too many DC rated fuses and other parts needed, and no space for it!

What I need is something that can measure voltage V1, V2 and V3 (each ranging between 30V and 55V) and then subtract the voltages from each other and check if the result of
V1 - V2 = 0
V2 - V3 = 0 and
V1 - V3 = 0 .

If any of the three results is >1V or <-1V, then it should generate a signal, preferably a simple "High" or 'Low" voltage which is galvanically isolated from the battery.

I am hoping that some simple Op-Amp comparator or subtracter circuit can be employed to do this.

But a combination of three voltage sensors and one programmable "brain" doing the simple calculations could also be feasible.

Any ideas how this could be done?
 
It should be easy enough to use an op-amp as a voltage comparator, I'm just not sure if you'd run into problems with false triggering. The sensitivity could be adjusted though.

If the premise is that only one cell at a time will go flat, then measuring V1-V3 should be unnecessary, and it will be more difficult due to the voltage differential.

You could get better resolution by dividing the pack into more segments. 3 might barely work. 4 would be better. More importantly, I think the op amps would need to be powered by the segments being monitored and there aren't many that can handle over 32v.

It will have to sense when the voltage difference is greater than some threshold in both directions, so it might take pairs of them. Whatever is detecting the voltage difference can trigger an opto coupler so that all the segments can be ground referenced at the control circuit, alarm, or whatever it's supposed to do when it triggers.
 
Mr. Mik said:
Thank you, Jeremy and Fechter! Your help is much appreciated.

However, I am trying to avoid having to connect up multiple cells, or all cells in the battery. Those systems which were developed for Lithium batteries need to detect under-voltage of a cell at the cell level, because the Lithium cell will likely be damaged or destroyed if it is allowed to drop to -250mV.

Sorry, I wasn't clear enough. What I meant was, why not use the very well proven Prius NiMH management strategy, but using a modified LiFePO4 BMS?

I didn't refer to monitoring each cell, I referred to monitoring the largest number of series connected cells that it's safe to do. Generally this is considered to be around 5 or 6 cells, which is why the Prius monitors in 6 cell groups (it doesn't have connections to each cell) and is also why many portable appliances that use NiMH cells use a relay inside the battery pack to switch from a high voltage discharge connection to a paralleled groups for charge. For example, sitting on my desk is an Icom portable radio. It has a 12V nominal, 10 cell NiMH pack. Because charging 10 cells in series is potentially dodgy, it has a tiny relay inside the battery pack that changes the pack to two 6V 5 cell packs when the charge plug is inserted.

There are a lot of technical notes on charging NiMH and most will say the same thing - charging a string longer than about 8 to 10 cells is very likely to result in cell reversal at some point, which is why the generally accepted ideal seems to be around 6 cells in series per sub-pack for charging (for discharge you can have pretty big series strings without too many problems).

No amount of monitoring the terminal voltage of a high cell count series connected NiMH pack will let you know about a cell reversal, all you can hope for is that the cells stay in balance well enough for this not to happen. You could also adopt the strategy that the NiMH packs in early ebikes tended to use, monitor the delta T inside the pack at several points using a few thermistors. This will help prevent a cell reversal, by switching the charger to a very low trickle charge current (ideally less than 1/20C, as I found out a couple of years ago (there are pictures here somewhere) a NiMH pack will explode at 1/10 C over charge!) when there is a sudden step rise in pack temperature, indicating that one or more cells has reached full charge.

Jeremy
 
fechter said:
It should be easy enough to use an op-amp as a voltage comparator, I'm just not sure if you'd run into problems with false triggering. The sensitivity could be adjusted though.

If the premise is that only one cell at a time will go flat, then measuring V1-V3 should be unnecessary, and it will be more difficult due to the voltage differential.

You could get better resolution by dividing the pack into more segments. 3 might barely work. 4 would be better. More importantly, I think the op amps would need to be powered by the segments being monitored and there aren't many that can handle over 32v.
For the 102s battery the options are 102/2=51, 102/3=34,102/6=17, 102/17=6 and 102/34=3.
I think the 34 cell option is best, because it would allow installation of the IDeA without taking the batteries out of the VX-1! All that is needed is installation of two tab wires between cell 34/35 and cells 68/69. These Inter-Cell-Connectors (ICLs) are accessible in the top layer of the front battery. An added advantage is that 7 out of the 8 cells on top of each side of the front battery are included into one of the three segments. These 7 cells are the cells most exposed to heating from the sun and most likely going to end up self-discharged ahead of the rest of the pack.
But 6 segments of 17 cells each would also be relatively manageable - and that brings the peak voltage per segment down to 27V. An LM324 Op-amp could be powered with that.
Would it be possible to reduce the voltage of 34-cell segments by half with a voltage splitter, then adjust the op-amp circuit to sense a 0.5V difference?
It will have to sense when the voltage difference is greater than some threshold in both directions, so it might take pairs of them. Whatever is detecting the voltage difference can trigger an opto coupler so that all the segments can be ground referenced at the control circuit, alarm, or whatever it's supposed to do when it triggers.
I just cannot figure out on my own how to use the op-amps for this. I have only used an LM324 for one project so far - it's all very new to me! Can you give me a few more ints and I'll try to start a schematic?
 
so basically a more complex version of this?
http://www.evdl.org/pages/battbridge.html
 
amberwolf said:
so basically a more complex version of this?
http://www.evdl.org/pages/battbridge.html
Yes! Thank you!

That's how easy I like it....

Two of these would do - but they cause a fair bit of current draw. It would need to be combined with an automatic battery disconnect and inrush current limiter - but these are on my wish-list anyway! Or just a relay that turns it all on and off.

Mikemitbike has come up with a great idea, too: See http://visforvoltage.org/forum/9675-how-improve-nimh-vectrix-battery-it-becomes-damaged#comment-54426

IDeA_2-2.jpg


You can see how it works by pasting the below sourcecode into this applet: http://www.falstad.com/circuit/

Click "File>>Import" and then paste the code below into the text window. Then you can change the specs of the circuit parts and see what happens!

I will have a go at putting the "Batterybridge" into that applet and to see if I can get it going.....

$ 1 5.0E-6 0.02528395958047465 58 5.0 50
v 800 384 800 288 0 0 40.0 48.0 0.0 0.0 0.5
v 800 480 800 384 0 0 40.0 48.0 0.0 0.0 0.5
w 304 288 224 288 0
t 160 240 224 240 0 1 -0.0 0.0 250.0
t 48 288 112 288 0 1 0.0 0.0 100.0
t 160 336 224 336 0 -1 -0.0 0.0 250.0
w 160 240 112 240 0
w 112 272 112 240 0
w 160 336 112 336 0
w 112 336 112 304 0
r 112 240 112 192 0 35000.0
r 112 336 112 384 0 35000.0
r 48 288 48 240 0 2000.0
r 48 288 48 336 0 4700.0
w 112 240 48 240 0
w 112 336 48 336 0
r 224 224 224 176 0 2500.0
r 224 352 224 400 0 2500.0
162 224 128 224 176 1 2.1024259 1.0 0.0 0.0
162 224 400 224 448 1 2.1024259 1.0 0.0 0.0
w 304 448 224 448 0
w 304 128 224 128 0
w 112 192 112 128 0
w 112 128 224 128 0
w 112 384 112 448 0
w 112 448 224 448 0
w 224 256 224 288 0
w 224 320 224 288 0
w 304 288 384 288 0
w 384 288 496 288 0
w 496 288 496 320 0
162 384 288 384 352 1 2.1024259 1.0 0.0 0.0
r 384 352 384 400 0 2500.0
t 432 416 384 416 0 1 -0.0 -0.0 250.0
v 800 576 800 480 0 0 40.0 48.0 0.0 0.0 0.5
w 384 432 384 448 0
w 304 448 384 448 0
r 496 320 496 384 0 35000.0
w 496 384 496 416 0
w 432 416 496 416 0
t 432 496 384 496 0 -1 0.0 0.0 250.0
w 384 480 384 448 0
r 384 512 384 560 0 2500.0
t 528 464 496 464 0 1 0.0 0.0 100.0
w 496 416 496 448 0
w 496 480 496 496 0
w 496 496 432 496 0
162 384 560 384 608 1 2.1024259 1.0 0.0 0.0
w 384 608 304 608 0
w 384 608 496 608 0
w 496 608 496 592 0
r 496 592 496 528 0 35000.0
w 496 528 496 496 0
w 496 384 560 384 0
w 496 528 560 528 0
r 560 528 560 464 0 4700.0
r 560 384 560 464 0 2000.0
w 528 464 560 464 0
w 384 288 384 240 0
w 304 128 384 128 0
w 384 128 384 176 0
w 800 288 800 224 0
w 800 576 800 640 0
w 304 608 224 608 0
w 224 608 224 576 0
w 224 448 224 512 0
r 384 176 384 240 0 35000.0
r 224 512 224 576 0 35000.0
x 881 449 951 455 0 24 To MC
w 800 288 736 288 0
s 688 480 736 480 0 1 false
s 688 384 736 384 0 1 false
s 688 288 736 288 0 1 false
w 800 384 736 384 0
w 800 480 736 480 0
s 688 576 736 576 0 1 false
w 800 576 736 576 0
w 800 224 912 224 0
w 912 224 912 416 0
w 800 640 912 640 0
w 912 640 912 464 0
w 496 608 640 608 0
w 640 608 688 576 0
w 496 288 576 288 0
w 112 448 112 640 0
w 528 640 688 480 0
w 112 640 528 640 0
w 576 288 688 384 0
w 640 288 688 288 0
w 640 288 464 128 0
w 384 128 464 128 0
x 798 201 952 207 0 24 Vectrix Battery
x 677 632 774 638 0 24 Relais 4x
o 0 64 0 35 80.0 9.765625E-5 0 -1
o 1 64 0 35 80.0 9.765625E-5 1 -1
o 34 64 0 35 80.0 9.765625E-5 2 -1
 
Here is an adaptation of Lee Hart's BattBridge:

BattBridge21.jpg


Paste this into the applet at: http://www.falstad.com/circuit/


$ 1 5.0E-6 0.02528395958047465 58 5.0 50
v 768 240 768 144 0 0 40.0 37.0 0.0 0.0 0.5
v 768 336 768 240 0 0 40.0 37.0 0.0 0.0 0.5
v 768 432 768 336 0 0 40.0 37.0 0.0 0.0 0.5
w 768 144 768 80 0
w 768 432 768 496 0
x 849 305 919 311 0 24 To MC
w 768 144 704 144 0
s 656 336 704 336 0 0 false
s 656 240 704 240 0 0 false
s 656 144 704 144 0 0 false
w 768 240 704 240 0
w 768 336 704 336 0
s 656 432 704 432 0 0 false
w 768 432 704 432 0
w 768 80 880 80 0
w 880 80 880 272 0
w 768 496 880 496 0
w 880 496 880 320 0
x 766 57 920 63 0 24 Vectrix Battery
x 645 488 742 494 0 24 Relais 4x
w 560 432 656 432 0
w 560 240 656 240 0
w 560 144 656 144 0
r 448 432 560 432 0 1000.0
r 560 240 448 240 0 1000.0
w 448 432 384 432 0
w 448 240 384 240 0
w 608 336 656 336 0
w 608 336 608 288 0
w 608 336 608 384 0
162 608 384 384 384 1 1.4 1.0 0.0 0.0
162 384 288 384 384 1 2.4 1.0 0.0 0.0
162 384 288 608 288 1 1.4 1.0 0.0 0.0
w 384 240 384 288 0
w 384 432 384 384 0
w 640 272 336 272 0
w 624 208 336 208 0
r 560 144 448 144 0 1000.0
w 448 144 256 144 0
w 336 272 336 336 0
w 256 144 160 144 0
162 320 288 160 288 1 1.4 1.0 0.0 0.0
r 336 336 160 336 0 1000.0
w 624 208 656 208 0
w 656 208 656 240 0
w 640 272 656 272 0
w 656 272 656 336 0
162 160 192 160 288 1 2.4 1.0 0.0 0.0
w 160 144 160 192 0
w 160 288 160 336 0
w 320 208 320 192 0
w 336 208 320 208 0
w 320 208 320 288 0
162 160 192 320 192 1 1.4 1.0 0.0 0.0
o 0 64 0 35 80.0 0.05 0 -1
o 1 64 0 35 640.0 3.2 1 -1
o 16 64 0 35 80.0 0.1 2 -1
o 53 64 0 35 5.0 0.1 3 -1
 
The MK1 insight has the 120 NIMH cells divided up into 10 segments of twelve cells each and seems to be able to detect cell reversal/empty etc.

It might be possible to use an old Honda insight BCM to monitor your battery pack. Especially if you could limit it to 100 cells or add some more to make it 120cells. or another number that divides down by 10. :)

A 10/1 potential divider on the current sensor input may also mean it could be conned into dealing with the Soc of a larger pack as well of say upto 40ah.

The serial data output from the BCM is now reasonably understood and a simple gauge is available to display it :wink:
 
peterperkins said:
The MK1 insight has the 120 NIMH cells divided up into 10 segments of twelve cells each and seems to be able to detect cell reversal/empty etc.

It might be possible to use an old Honda insight BCM to monitor your battery pack. Especially if you could limit it to 100 cells or add some more to make it 120cells. or another number that divides down by 10. :)

A 10/1 potential divider on the current sensor input may also mean it could be conned into dealing with the Soc of a larger pack as well of say upto 40ah.

The serial data output from the BCM is now reasonably understood and a simple gauge is available to display it :wink:

Thanks Peter, but I think this would be too complicated for me. I want a simple NiMH BMS....

Of course, the latest simulation of the circuit does not lok all that simple any more, but it really is, compared to the Prius or Insight BMS.

Paste the below code into the applet at http://www.falstad.com/circuit/ using Fle>Import and have a play:

Code:
$ 1 5.0E-6 0.27182818284590454 40 5.0 50
t 128 96 192 96 0 1 -0.319505237651029 -0.15880247033048533 50.0
t 16 144 80 144 0 1 -0.011337282634301005 0.013140941239498716 50.0
t 128 192 192 192 0 -1 0.3195044167650991 -0.18328069420428506 50.0
w 128 96 80 96 0
w 80 128 80 96 0
w 80 192 80 160 0
r 80 96 80 48 0 6200.0
r 80 224 80 272 0 6200.0
r 16 144 16 192 0 255.0
w 80 96 16 96 0
w 80 192 16 192 0
w 256 0 176 0 0
w 192 112 192 144 0
w 192 176 192 144 0
t 384 240 336 240 0 1 -0.31950441669404483 0.18328069427532512 50.0
w 336 256 336 272 0
r 464 144 464 208 0 6200.0
t 384 304 336 304 0 -1 0.31950523756155746 0.15880247040695394 50.0
r 336 320 336 368 0 5600.0
t 448 272 416 272 0 1 -0.011337282631771473 0.013140941236599701 50.0
r 480 400 480 336 0 6200.0
r 512 336 512 272 0 255.0
w 256 0 336 0 0
r 352 64 352 128 0 6200.0
r 240 272 240 336 0 6200.0
x 773 224 849 230 0 24 Battery
178 624 128 688 128 0 1 0.2 -9.146553479071754E-9 0.05 1000000.0 0.0030 10.0
178 624 48 688 48 0 1 0.2 -9.146553479085262E-9 0.25 1000000.0 0.0030 10.0
v 752 272 752 240 0 0 40.0 52.0 0.0 0.0 0.5
v 752 192 752 160 0 0 40.0 51.73 0.0 0.0 0.5
v 752 112 752 80 0 0 40.0 52.0 0.0 0.0 0.5
w 688 144 752 144 0
w 752 128 752 112 0
w 752 192 752 224 0
w 688 224 752 224 0
w 752 224 752 240 0
178 624 288 688 288 0 1 0.2 -9.146553479071759E-9 0.05 1000000.0 0.0030 10.0
178 624 208 688 208 0 1 0.2 -9.14655347907176E-9 0.05 1000000.0 0.0030 10.0
w 752 160 752 144 0
w 752 128 752 144 0
w 752 304 752 272 0
w 752 304 688 304 0
w 752 80 752 64 0
w 752 64 688 64 0
r 608 400 608 352 0 3900.0
w 608 336 624 336 0
w 624 320 608 320 0
w 608 320 608 256 0
w 608 256 624 256 0
w 624 240 608 240 0
w 608 240 608 176 0
w 608 176 624 176 0
w 624 160 608 160 0
w 608 160 608 96 0
w 608 96 624 96 0
178 240 208 272 208 0 1 0.2 1.4973291388165054E-10 0.25 1000000.0 0.0030 10.0
178 240 32 272 32 0 1 0.2 9.998845085235075E-14 0.25 1000000.0 0.0030 10.0
178 384 160 416 160 0 1 0.2 1.4973413258317912E-10 0.25 1000000.0 0.0030 10.0
178 384 336 416 336 0 1 0.2 1.0099293346055245E-13 0.25 1000000.0 0.0030 10.0
w 80 0 176 0 0
r 192 80 240 80 0 5600.0
w 240 64 240 48 0
w 336 224 336 208 0
r 336 208 384 208 0 5600.0
178 688 432 736 432 0 1 0.2 1.0775475490297174E-10 0.25 1000000.0 0.02 500.0
w 672 480 688 480 0
w 0 32 0 208 0
x 668 454 709 457 0 12 Relay 1
178 544 496 480 496 0 1 0.2 -1.5557442557442557E-4 0.05 1000000.0 0.02 1000.0
w 608 336 608 352 0
w 672 464 688 464 0
w 736 448 736 464 0
r 736 464 784 464 0 1000.0
162 784 464 784 512 1 2.1024259 1.0 0.0 0.0
s 784 336 848 336 0 1 false
x 846 149 932 155 0 24 Traction
x 680 494 706 496 0 8 NC/NO
x 393 531 450 535 0 16 12V DC
x 938 479 1012 482 0 12 Key / Charger
x 934 392 1006 395 0 12 Stock 12VDC
x 799 350 843 353 0 10 ON / OFF
x 775 362 865 365 0 12 Deep Discharge
x 670 94 702 97 0 12 SSR8
x 266 77 298 80 0 12 SSR1
x 270 253 302 256 0 12 SSR2
x 415 207 447 210 0 12 SSR3
x 409 381 441 384 0 12 SSR4
x 671 333 703 336 0 12 SSR5
x 674 255 706 258 0 12 SSR6
x 672 173 704 176 0 12 SSR7
x 984 212 1046 215 0 12 Relay 2 NO
r 16 144 16 96 0 220.0
r 512 272 512 224 0 220.0
w 80 224 80 192 0
x 778 108 858 111 0 10 34 cells (30-52V)
x 777 268 857 271 0 10 34 cells (30-52V)
x 776 187 856 190 0 10 34 cells (30-52V)
w 240 48 80 48 0
w 240 32 0 32 0
w 80 0 80 48 0
w 128 192 80 192 0
w 240 256 240 272 0
w 240 272 336 272 0
w 336 272 336 288 0
w 384 192 384 176 0
w 384 176 352 176 0
w 352 176 352 160 0
w 272 48 288 48 0
w 416 320 432 320 0
w 416 256 416 240 0
w 416 240 384 240 0
w 416 288 416 304 0
w 416 304 384 304 0
w 432 320 448 320 0
w 288 48 304 48 0
w 432 464 304 464 0
w 384 368 336 368 0
w 240 336 240 384 0
w 240 384 240 400 0
w 240 400 384 400 0
w 384 384 384 400 0
w 384 400 480 400 0
w 416 240 416 224 0
w 416 224 464 224 0
w 464 224 464 208 0
w 464 144 464 128 0
w 464 128 352 128 0
w 352 128 240 128 0
w 240 128 240 144 0
w 240 144 192 144 0
w 416 304 480 304 0
w 480 304 480 336 0
w 480 336 512 336 0
w 512 272 448 272 0
w 512 224 464 224 0
w 336 0 352 0 0
w 352 64 352 0 0
w 624 48 608 48 0
w 624 128 464 128 0
w 624 208 560 208 0
w 624 288 592 288 0
w 544 400 480 400 0
w 304 224 272 224 0
w 304 224 304 48 0
w 352 160 352 128 0
w 384 160 240 160 0
w 240 160 240 208 0
w 0 208 0 224 0
w 304 224 304 464 0
w 432 464 448 464 0
w 0 224 0 496 0
w 448 352 448 464 0
w 240 208 224 208 0
w 224 208 224 496 0
w 368 496 224 496 0
r 192 208 192 240 0 5600.0
w 240 240 192 240 0
x 454 530 500 534 0 16 SMPS
178 1040 192 1072 192 0 1 0.2 5.389598656340838E-28 0.05 1000000.0 0.02 500.0
w 384 336 368 336 0
w 368 336 368 352 0
w 416 176 432 176 0
w 432 176 432 144 0
w 432 144 496 144 0
w 448 464 496 464 0
v 448 496 416 496 0 0 40.0 12.0 0.0 0.0 0.5
w 368 496 416 496 0
w 448 496 480 496 0
w 544 496 544 480 0
w 688 432 656 432 0
w 656 432 656 448 0
w 368 496 368 448 0
w 368 448 368 352 0
w 784 512 672 512 0
w 672 512 672 480 0
w 480 496 480 512 0
w 752 416 736 416 0
w 752 64 960 64 0
w 1040 64 1040 192 0
w 992 544 544 544 0
w 544 528 976 528 0
w 1056 528 1056 304 0
w 976 304 752 304 0
r 64 528 112 528 0 1.5
r 144 528 192 528 0 1.5
s 224 528 272 528 0 0 false
w 592 480 592 560 0
w 672 480 592 480 0
w 544 480 592 480 0
w 224 496 160 496 0
w 0 496 160 496 0
w 544 400 544 352 0
w 592 288 544 288 0
w 544 288 544 352 0
w 624 80 592 80 0
w 592 80 592 384 0
w 592 384 592 480 0
w 608 400 608 448 0
w 656 448 608 448 0
w 608 448 368 448 0
d 752 384 752 352 1 0.805904783
w 752 416 752 384 0
w 752 352 752 336 0
w 752 336 784 336 0
v 912 400 912 368 0 0 40.0 12.0 0.0 0.0 0.5
d 912 448 912 416 1 0.805904783
d 912 368 912 336 1 0.805904783
w 912 336 928 336 0
w 992 336 992 224 0
w 992 544 1072 544 0
w 960 64 1040 64 0
w 1072 544 1072 208 0
w 976 304 1056 304 0
w 976 528 1056 528 0
w 1040 224 992 224 0
w 992 336 928 336 0
w 912 416 912 400 0
w 1008 560 592 560 0
s 944 448 992 448 0 1 false
w 1008 560 1040 560 0
w 1040 560 1040 448 0
w 1040 448 1040 240 0
w 1040 448 992 448 0
w 912 448 944 448 0
w 912 336 848 336 0
x 778 95 849 98 0 12 IDeA segm 3
x 777 174 849 177 0 12 IDeA Segm 2
x 775 257 847 260 0 12 IDeA Segm 1
x 949 464 993 467 0 10 ON / OFF
w 592 560 384 560 0
w 384 560 336 560 0
w 336 560 336 528 0
w 336 528 304 528 0
w 304 528 272 528 0
w 192 528 224 528 0
w 144 528 112 528 0
w 64 528 0 528 0
w 0 528 0 512 0
w 0 512 0 496 0
x 57 559 277 563 0 18 Cooling Impellers ON / OFF
x 801 484 899 488 0 16 Warning LED 
x 812 501 867 505 0 16 on dash
x 374 545 500 548 0 10 (Relay represents isolation)
x 525 540 579 543 0 10 90-156VDC
x 777 149 835 155 0 24 NiMH
x 467 26 555 35 0 40 IDeA
x 412 41 592 44 0 12 (Imbalance Detection Apparatus)
x 857 224 954 227 0 12 (102 cells x 30Ah)
x 431 56 567 59 0 12 Vectrix version - untested
x 13 331 194 335 0 14 SSR 1-8 = ASSR-1228-302E
w 560 416 208 416 0
w 208 416 208 272 0
w 80 272 208 272 0
w 208 272 240 272 0
w 560 416 560 208 0
x 10 400 179 404 0 14 12V SMPS:  4A continuous
x 50 466 102 472 0 24 hello
x 12 356 171 360 0 14 PNP transistors:  BF 470 
x 12 379 167 383 0 14 NPN transistors: BF 469 
w 496 144 576 144 0
w 576 144 576 464 0
w 496 464 576 464 0
w 576 464 672 464 0
w 608 48 576 48 0
w 576 48 576 112 0
w 576 112 400 112 0
w 400 112 384 112 0
w 384 112 384 0 0
w 384 0 352 0 0
o 60 64 0 289 10.0 0.003125 0 -1
o 63 64 0 289 5.0 0.0015625 1 -1
o 18 64 0 33 10.0 0.003125 2 -1
 
The simulated circuit continues to slowly mature.... nothing has been built as prototype yet.

Below is the code for the latest version of the simulation. It is to be used in the applet at http://www.falstad.com/circuit/

The simulated measurements which I have performed to evaluate the various permutations of this circuit are the following (among others). They all relate to the sensitivity (in mV) to imbalance at various battery SOCs ( = voltages).

The questions to be answered were:

What current flows through the opto-relays when there is no imbalance?
What level of imbalance causes 0.8mA current through the opto-relays? (=> opto-relays should be opening again when current falls below 0.8mA);
What level of imbalance causes 3mA current to the opto-relays (=> closing and triggering the "imbalance detected" response)

Following are the answers to these questions for a number of different SOC's (for a 102s NiMH battery):

At 154V ( = 51.33V/segment 25.67Vx2/segment 1.51V/cell ): (Battery voltage does not normally get that high - it is just to test with a safety margin)
without imbalance: 46microA to opto-relays; just <800microA @ 180mV ; 3mA @ 370-390mV imbalance.

At 151V ( = 50.33V/segment 25.17Vx2/segment 1.48V/cell) :
without imbalance: 44microA to opto-relays; just <800microA @ 180mV ; 3mA @ 370mV imbalance.

At 145V ( = 48.33V/segment 24.17Vx2/segment 1.42V/cell): (This is about the final charge voltage for n EQ "Freddy" charge at 0.3A @ 32degC)
without imbalance: 41microA to opto-relays; just <800microA @ 190mV ; 3mA @ 370-390mV imbalance.

At 140V (46.67V/segment 23.33Vx2/segment 1.37V/cell) : (Voltage settles about here after a normal charge)
without imbalance: 38microA to opto-relays; just <800microA @ 190mV ; 3mA @ 380mV imbalance.

At 125V (41.67V/segment 20.83Vx2/segment 1.23V/cell) :
without imbalance: 32microA to opto-relays; just <800microA @ 190mV ; 3mA @ 390mV imbalance.

At 91.8V (30.6V/segment 15.3Vx2/segment 0.9V/cell) : (Most of the time it will not get that low)
without imbalance: 16-19microA to opto-relays; 745mA at 230mV imbalance ; 3mA at 400mV - 420mV imbalance.


Segment currents at 154V (mA): (causing imbalance if unequal)
Segment 1 : 175.27mA
Segment 2 : 175.24mA
Segment 3 : 175.27mA

Max power at balancing resistors at 154V : 263mW

Hope it makes some sense to you!

I would very much appreciate if someone could check if the chosen components are suitable for the voltages they will experience in the circuit!
Data sheets here:
http://www.nxp.com/documents/data_sheet/BC846_BC546_SER.pdf
http://www.nxp.com/documents/data_sheet/BC856_BC857_BC858.pdf
http://www.farnell.com/datasheets/358205.pdf


Here is the code:
Code:
$ 1 0.0010 0.021402409717744746 41 5.0 50
t 128 96 192 96 0 1 -13.963887387885059 0.602026590630747 192.0
t 48 144 112 144 0 1 -0.3491113110113497 0.6012752280631664 192.0
t 128 192 192 192 0 -1 29.84613570121747 -0.34835994844376905 186.0
w 128 96 80 96 0
r 80 96 80 48 0 10000.0
r 80 224 80 272 0 10000.0
w 80 96 16 96 0
w 256 0 176 0 0
w 192 112 192 144 0
w 192 176 192 144 0
t 384 240 336 240 0 1 -29.845758066691577 0.34872815206781027 192.0
w 336 256 336 272 0
r 464 144 464 208 0 10000.0
t 384 304 336 304 0 -1 14.203589699087768 -0.6016575659886847 186.0
r 336 320 336 368 0 5600.0
t 448 272 416 272 0 1 -0.3491108191604617 0.6012748988960332 192.0
r 480 400 480 336 0 10000.0
w 256 0 336 0 0
r 352 64 352 128 0 10000.0
r 240 272 240 336 0 10000.0
178 624 128 688 128 0 1 0.2 -0.0030392816674497023 0.05 1000000.0 0.0030 10.0
178 624 48 688 48 0 1 0.2 -0.0030392816674497027 0.25 1000000.0 0.0030 10.0
w 688 144 752 144 0
w 688 224 752 224 0
w 752 224 752 240 0
178 624 288 688 288 0 1 0.2 -0.003039281667449702 0.05 1000000.0 0.0030 10.0
178 624 208 688 208 0 1 0.2 -0.003039281667449702 0.05 1000000.0 0.0030 10.0
w 752 128 752 144 0
w 752 304 688 304 0
w 752 64 688 64 0
r 608 384 608 336 0 3900.0
w 608 336 624 336 0
w 624 320 608 320 0
w 608 320 608 256 0
w 608 256 624 256 0
w 624 240 608 240 0
w 608 240 608 176 0
w 608 176 624 176 0
w 624 160 608 160 0
w 608 160 608 96 0
w 608 96 624 96 0
178 240 208 272 208 0 1 0.2 1.1202203884576543E-7 0.25 1000000.0 0.0030 10.0
178 240 32 272 32 0 1 0.2 0.002857702208785501 0.25 1000000.0 0.0030 10.0
178 384 160 416 160 0 1 0.2 1.1370312651334653E-7 0.25 1000000.0 0.0030 10.0
178 384 336 416 336 0 1 0.2 0.002815358949103428 0.25 1000000.0 0.0030 10.0
w 80 0 176 0 0
r 192 80 240 80 0 5600.0
w 240 64 240 48 0
w 336 224 336 208 0
r 336 208 384 208 0 5600.0
178 672 432 720 432 0 1 0.2 4.78034721346221E-5 0.25 1000000.0 0.02 500.0
w 0 32 0 208 0
x 679 494 720 497 0 12 Relay 1
178 544 496 480 496 0 1 0.2 0.09139026192939563 0.05 1000000.0 0.02 1000.0
w 720 448 720 464 0
r 720 464 768 464 0 1000.0
162 768 464 768 512 1 2.1024259 1.0 0.0 0.0
s 736 336 800 336 0 0 false
x 683 504 709 506 0 8 NC/NO
x 393 531 450 535 0 16 12V DC
x 762 408 836 411 0 12 Key / Charger
x 893 409 965 412 0 12 Stock 12VDC
x 748 351 792 354 0 10 ON / OFF
x 746 366 806 369 0 12 Deep DCG
x 670 94 702 97 0 12 SSR8
x 266 77 298 80 0 12 SSR1
x 270 253 302 256 0 12 SSR2
x 415 207 447 210 0 12 SSR3
x 409 381 441 384 0 12 SSR4
x 671 333 703 336 0 12 SSR5
x 674 255 706 258 0 12 SSR6
x 672 173 704 176 0 12 SSR7
x 1014 370 1055 373 0 12 Relay 2
w 80 224 80 192 0
w 240 48 80 48 0
w 240 32 0 32 0
w 80 0 80 48 0
w 128 192 80 192 0
w 240 256 240 272 0
w 240 272 336 272 0
w 336 272 336 288 0
w 384 192 384 176 0
w 384 176 352 176 0
w 352 176 352 160 0
w 272 48 288 48 0
w 416 352 432 352 0
w 416 256 416 240 0
w 416 240 384 240 0
w 416 288 416 304 0
w 416 304 384 304 0
w 432 352 448 352 0
w 288 48 304 48 0
w 432 464 304 464 0
w 384 368 336 368 0
w 240 336 240 384 0
w 240 384 240 400 0
w 240 400 384 400 0
w 384 384 384 400 0
w 384 400 480 400 0
w 416 240 416 224 0
w 416 224 464 224 0
w 464 224 464 208 0
w 464 144 464 128 0
w 464 128 352 128 0
w 352 128 240 128 0
w 240 128 240 144 0
w 240 144 192 144 0
w 416 304 480 304 0
w 480 304 480 336 0
w 480 336 512 336 0
w 512 224 464 224 0
w 336 0 352 0 0
w 352 64 352 0 0
w 624 48 608 48 0
w 624 128 464 128 0
w 624 208 560 208 0
w 624 288 592 288 0
w 544 400 480 400 0
w 304 224 272 224 0
w 304 224 304 48 0
w 352 160 352 128 0
w 384 160 240 160 0
w 240 160 240 208 0
w 0 208 0 224 0
w 304 224 304 464 0
w 432 464 448 464 0
w 0 224 0 496 0
w 448 352 448 464 0
w 240 208 224 208 0
w 224 208 224 496 0
w 368 496 224 496 0
r 192 208 192 240 0 5600.0
w 240 240 192 240 0
x 454 530 500 534 0 16 SMPS
178 1040 352 1072 352 0 1 0.2 0.022516148101923306 0.05 1000000.0 0.02 500.0
w 384 336 368 336 0
w 368 336 368 352 0
w 416 176 432 176 0
w 432 176 432 144 0
w 432 144 496 144 0
w 448 464 496 464 0
v 448 496 416 496 0 0 40.0 12.0 0.0 0.0 0.5
w 368 496 416 496 0
w 448 496 480 496 0
w 544 496 544 480 0
w 656 432 656 448 0
w 368 496 368 448 0
w 368 448 368 352 0
w 480 496 480 512 0
w 736 416 720 416 0
w 992 544 544 544 0
w 544 528 976 528 0
r 64 528 112 528 0 1.5
r 144 528 192 528 0 1.5
s 224 528 272 528 0 1 false
w 544 480 592 480 0
w 224 496 160 496 0
w 0 496 160 496 0
w 544 400 544 352 0
w 592 288 544 288 0
w 544 288 544 352 0
w 624 80 592 80 0
w 592 80 592 384 0
w 592 384 592 480 0
w 608 400 608 448 0
w 656 448 608 448 0
w 608 448 368 448 0
d 736 416 736 384 1 0.805904783
w 736 352 736 336 0
w 912 336 928 336 0
w 992 544 1072 544 0
w 976 528 1056 528 0
w 992 336 928 336 0
s 752 384 800 384 0 0 false
w 1024 560 1024 448 0
w 912 416 944 416 0
w 912 336 848 336 0
x 763 396 807 399 0 10 ON / OFF
w 592 560 384 560 0
w 384 560 336 560 0
w 336 560 336 528 0
w 336 528 304 528 0
w 304 528 272 528 0
w 192 528 224 528 0
w 144 528 112 528 0
w 64 528 0 528 0
w 0 528 0 512 0
w 0 512 0 496 0
x 56 560 276 564 0 18 Cooling Impellers ON / OFF
x 784 494 878 498 0 16 Warning LED
x 786 511 841 515 0 16 on dash
x 374 545 500 548 0 10 (Relay represents isolation)
x 525 540 579 543 0 10 90-156VDC
x 432 35 520 44 0 40 IDeA
x 385 50 565 53 0 12 (Imbalance Detection Apparatus)
x 412 65 548 68 0 12 Vectrix version - untested
x 13 331 194 335 0 14 SSR 1-8 = ASSR-1228-302E
w 560 416 208 416 0
w 208 416 208 272 0
w 80 272 208 272 0
w 208 272 240 272 0
w 560 416 560 208 0
x 10 400 175 404 0 14 12V SMPS: 4A continuous
x 12 356 156 360 0 14 PNP : BC856 hFE=186
x 12 379 156 383 0 14 NPN : BC846 hFE=192
w 496 144 576 144 0
w 576 144 576 464 0
w 496 464 576 464 0
w 608 48 576 48 0
w 576 48 576 112 0
w 576 112 400 112 0
w 400 112 384 112 0
w 384 64 352 64 0
w 384 64 384 112 0
x 699 298 727 301 0 10 Tab 1
x 693 220 727 223 0 10 Tab 35
x 698 139 732 142 0 10 Tab 69
x 691 58 731 61 0 10 Tab 103
w 752 64 768 64 0
w 992 336 1008 336 0
w 1008 336 1008 384 0
w 1008 384 1040 384 0
w 1040 400 1024 400 0
w 1008 560 1024 560 0
w 1072 544 1072 368 0
w 1056 528 1088 528 0
w 1088 528 1088 288 0
w 976 304 1040 304 0
w 1040 304 1040 352 0
w 768 64 784 64 0
w 784 64 1088 64 0
w 848 336 816 336 0
w 736 352 736 384 0
x 629 397 724 399 0 9 Diode stops stock 12V
x 665 417 698 419 0 9 at start.
x 625 408 724 410 0 9 from powering impellers
x 1019 381 1037 384 0 12 NO
w 768 512 768 560 0
w 592 560 768 560 0
w 768 560 1008 560 0
w 944 416 992 416 0
w 912 416 880 416 0
w 880 416 816 416 0
w 752 384 752 416 0
w 816 336 800 336 0
d 832 384 864 384 1 0.805904783
d 944 384 976 384 1 0.805904783
v 912 384 944 384 0 0 40.0 12.0 0.0 0.0 0.5
w 816 416 768 416 0
w 976 384 1008 384 0
d 1008 416 1008 384 1 0.805904783
w 992 416 1008 416 0
w 1024 400 1024 416 0
w 1024 448 1024 416 0
w 1024 416 1008 416 0
w 672 480 672 496 0
w 672 496 656 496 0
w 656 496 592 496 0
w 592 480 592 496 0
d 656 496 656 464 1 0.805904783
w 672 464 656 464 0
w 656 464 576 464 0
w 608 400 608 384 0
w 656 432 672 432 0
w 768 416 752 416 0
178 896 112 864 112 0 1 0.02 -0.47899079079007295 0.05 1000000.0 0.2 25.0
w 896 208 896 176 0
r 896 176 848 176 0 10.0
w 896 112 896 80 0
w 592 496 592 512 0
w 592 512 592 560 0
w 592 512 992 512 0
w 992 512 992 144 0
w 992 144 896 144 0
w 608 384 720 384 0
w 720 384 720 320 0
w 720 320 976 320 0
w 976 320 976 160 0
w 976 160 896 160 0
w 896 208 896 224 0
x 902 134 1022 138 0 18 300A contactor
x 778 250 858 254 0 14 Hibernation /
x 794 238 832 241 0 10 ON/OFF
v 752 304 752 272 0 0 40.0 15.3 0.0 0.0 0.5
v 752 272 752 240 0 0 40.0 15.3 0.0 0.0 0.5
v 752 224 752 192 0 0 40.0 15.3 0.0 0.0 0.5
v 752 176 752 144 0 0 40.0 14.9 0.0 0.0 0.5
v 752 128 752 96 0 0 40.0 15.3 0.0 0.0 0.5
v 752 96 752 64 0 0 40.0 15.3 0.0 0.0 0.5
178 880 352 880 368 0 1 0.2 -0.006528202245892275 0.05 1000000.0 0.0050 14000.0
w 784 224 784 192 0
w 784 192 752 192 0
w 752 176 784 176 0
w 784 176 816 176 0
w 816 192 784 192 0
w 832 384 800 384 0
w 752 304 848 304 0
w 848 304 976 304 0
w 848 352 848 304 0
w 864 288 1088 288 0
w 1088 64 1088 288 0
w 912 384 912 352 0
w 912 352 896 352 0
w 864 384 864 368 0
w 896 352 880 352 0
w 864 288 832 288 0
w 832 288 832 352 0
x 863 283 930 286 0 10 7mA SDC rate
s 784 224 832 224 0 0 false
w 896 224 832 224 0
x 853 359 874 362 0 10 SDC
x 861 201 880 204 0 12 ICL
x 770 169 826 172 0 12 Fuse here
w 864 128 848 128 0
w 848 128 848 176 0
w 848 176 816 176 0
w 816 192 832 192 0
w 832 192 832 80 0
w 896 80 832 80 0
x 783 263 849 267 0 14 Hard reset
w 80 96 80 112 0
w 80 112 112 112 0
w 112 112 112 128 0
w 112 160 112 176 0
w 112 176 80 176 0
w 80 176 80 192 0
w 16 192 80 192 0
174 16 96 48 128 0 3300.0 0.5 Resistance
174 16 160 48 192 0 6100.0 0.5 Resistance
w 48 112 48 144 0
w 48 176 48 144 0
174 512 272 480 304 0 6100.0 0.5 Resistance
174 512 224 480 256 0 3300.0 0.5 Resistance
w 512 304 512 336 0
w 480 288 480 272 0
w 480 272 480 240 0
w 480 272 448 272 0
o 283 64 0 34 40.0 0.1 0 -1
o 284 64 0 34 40.0 0.1 0 -1
o 285 64 0 34 40.0 0.1 1 -1
o 286 64 0 34 40.0 0.1 1 -1
o 287 64 0 34 40.0 0.1 2 -1
o 288 64 0 34 40.0 0.1 2 -1
o 46 64 0 289 26.787715179656683 0.008371160993642716 3 -1
o 131 64 0 289 20.0 0.00625 3 -1
o 49 64 0 289 5.0 0.00625 4 -1
o 14 64 0 289 20.0 0.00625 4 -1
 
I read all your post quicky so I'm sorry if i'm off tracks but a very simple and effective way to balance Nimh (presuming you don't want to monitor each of them) is to put 2 diodes (1n400x) in serie to each cells. Since each cell top voltage is around 1.41v, when one cell reach is own voltage, the diode will diverse the current. The battery will stay at 1.4v

The flaw about this is the draining current below 1.4v that could exist. Some Nimh have a self discharge more prononced than this so it won't make a huge difference. Also, by selecting a good diode with a better threshold curve could lower the draining current.

One another flaw is the diode will change is bypass current in fonction of the current passing through them. This may permit a slightly increase of the voltage. But... if all the battery have the same diodes, all battery should still keep a balanced voltage but shifted a bit higher than 1.41v. When the charge goes off, the voltage will eventually lower to the intrinsic voltage of nimh technologie. But in long term, the battery will remain balanced.

But if the battery pack is constantly used and charged. This is a very efficient and cheap way to do it.
 
Why would you ever be in a situation where one of your cells is reversed?
In all my years building packs (lithium and nickle chemistry) backwards cells are always caught in build process.
Once pack is built thats that. Cells will never reverse on their own. :)
As far as balancing is concerned, NIMH packs self balance when applied with 1/10th charge rate (cells can sink 1/10th-C current when fully charged without harm). 1/10th-C rate is applied to pack AFTER NIMH full-charge peak is detected in charge circuit.
 
Cell reversal happens when one cell discharges before the others but the pack is still running the motor. This essentially charges the low cell in reverse which will damage it. If you don’t have cell level monitoring you might not know when this is happening.
 
Back
Top