Go Down

Topic: my first big project - BMS - is it possible? (Read 28529 times) previous topic - next topic


I think that really increases the design complexity, as now you need all these optoisolators (on DC voltage? So you need current inducing resistors as welll to have a voltage that can be measured) and more optos to drive the control pins.
I would build a small part of the design to start, just measure a couple of the batteries to prove out whatever muxing is used, prove out the code to control the muxing, desing/prove out the interface to the operator (3 7-segment LED display with (###, bAd) or something, prove out the power section to control that stuff.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


high timing performance

That gets around my previous comment about not being able to take meaningful readings while driving. Getting real-time readings would be good I think because you could see how each cell reacts under load.

Rob Gray aka the GRAYnomad www.robgray.com


Thanks again for all the interest.

Quote Crossroads:

"turok, what are you thinking in terms of other sensors, a display etc?"

there are some temperature sensors (I think 4) placed in the whole pack. I thought of using them as well, but not sure. Maybe I should add some.

I don't need much output while driving. It would be usefull to me to know what cell is lowest, and maybe the difference between it and perhaps the average.
I guess I could use the 4 digit display I pulled out of a broken decoder (got it to work too), telling me something like A4:XX
A4 being the cell, XX being the difference in voltage. (only if the difference is alarming enough I'd guess)
I also thought about logging the data on an SD card, and in that interest also measuring the Amps, but thats jumping too far ahead I think.

About the Opto-isolation: I understand the principle (not the complete circuit, I don't know what octocoplers are yet)
Would they tackle interference maybe? Or what other purpose would they serve?

Anyway this seems a lot more than I can chew (and than I anticipated), but I guess persistence is the key..
I think


Magician has some ideas on the optos, I don't see the need with the relay approach.
What they do is provide voltage isolation when you have a system that needs seperate grounds/
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


I don't need much output while driving. It would be usefull to me to know what cell is lowest, and maybe the difference between it and perhaps the average.

Voltage measuring of the unloaded battery is useless.

Open Circuit Voltage OCV

Measuring a battery's open circuit voltage is not a reliable measure of its ability to deliver current. As a battery ages, its internal resistance builds up. This will reduce the battery's ability to accept and to hold charge, but the open circuit voltage will still appear normal despite the reduced capacity of the battery. Comparing the actual internal resistance with the resistance of a new battery will provide an indication of any deterioration in battery performance.


In other words, if your project should provide results of health (good - bad) status of the cell,
battery must to be loaded. And the best way to do it in real driving environment,  if you are not building a car work-shop with lab equipment.

And when it's loaded, there is a time performance question, you should measure as fast as possible, so when you get results for cell #102 it's not discharged much more than cell #1, or you wouldn't be able to compare results.

The same time I agree with CrossRoad, design with MAX4800 too complex for one single vehicle.
Designing with relay, will have not good timing ( 2-3 msec time ON/OFF delay in relay ), but tolerable in steady driving conditions.
The preference for Solid State relay should be done considering reliability and time life span of the relay


of course I must measure while driving, I just need little output then.

That's when the datalogging would come in handy..


It's good you confirm it. Because for me it's not clear your intention and goal you'd like to achieve.
Passive measurements/monitoring and even log results to SD it's only one feature.
In your initial post #1:
I want to avoid that the cells get out of balance with each other.
My first thought was to connect all separate cells to an Arduino (with som I/O extenders?), measure the voltages, compare them and act upon differences. (ie. warn me or something)

Your thoughts were - act upon differences. That is another feature.

BMS can do both task, Passive monitoring and Active balance individual cell. How to do it described in details in data sheet linked to MAX11068. Have a look and make your decision if you gonna make balancing.

Design of system, we already discussed, it depends also on your decision if BMS has to do something else (temperature monitoring, control lighting/sound devices etc).
If you decided nothing else to do, you can build project as CrossRoad suggest. Disadvantage of such approach is than you have to packed arduino in the plastic box altogether with relay matrix and power source, and never touch it when it powered up, because it would be "floating"
with battery voltage +150V.

It's, again, up to you to decide, but I recommend split high - low voltage parts by using analog optocoupler. Arduino would be at ground level, safe to touch, connect other devices/computers.
Link to schematic how to build optocoupler is also posted, plus application notes how to design one.

There is one question, have you check on your battery, if you would be able to get access to individual cells? It's not in some insulated packaged? Would you be able to attach wiring?


"act upon it"
to be honest, I'm not sure I could do more than monitor the battery pack.
If my led display returns a significant difference, I can slow down and return home to recharge / balance the pack.
I don't see a solution to cut the cell out of the circuit (without shorting and thus destroying it)
Maybe "Battery Management System" is not the right term, "Battery MONITORING system" would be..
I'd be tremendously proud if I can achieve only that.

I will look into the MAX11068 data sheet again however.

I know I'm trying to re-invent existing stuff, but for a reason.
An commercial BMS would be expensive I guess, and I still wouldn't understand it or learn anything.
If I'd have to pay 1000 to 1500€ (just a guess) for a commercial BMS (if there is such a thing), I'd be better off keeping that money to change the pack to Lithium (2500-3000€).
this project is mainly meant to learn. If it protects my old Nimh battery, that's a bonus.

I also happen to have a Nimh battery pack from an electric bycicle consisting of 20 cells (one of them must be bad).
Before I'd build a definitive system for the Vectrix, I'd try on that one.

The cells of the vectrix look like this:


"Battery MONITORING system"

At least the thread title is still correct :)

We used that acronym 20 years ago, but it stood for Building Management System in our context.

Rob Gray aka the GRAYnomad www.robgray.com


Jul 26, 2011, 01:55 pm Last Edit: Jul 26, 2011, 02:11 pm by turok Reason: 1
@ Magician

Hope you fogive me for being this lazy :-)
I went over the MAX11068 specs, but it's way too much information, and since I don't understand most of it, I tried to filter the essence by skipping a lot of it:

As I understand it, this tiny chip does everything I hoped for, balancing included (when surrounded by the right components, right?).
It seems like it's cheap enough, but will it be applicable in my battery?

Will I be able to stack them together to work with 102 cells? (or stack them with the simpler MAX11080 IC's?)
I think so, but my technical english is sometimes too poor to be sure:
"This highly integrated solution employs a proprietary SMBus(TM)-laddered communication bus that allows multiple MAX11068s to be daisy chained together without expensive isolators."

edit: I found they can be chained together to monitor up to 372 cells. There I go:-)

And will this system then work as a standalone, or will I be able to (/should I) access the data with an arduino? (e.g. to read out on lcd while driving and/or move data to pc to examin later)
If the system works as a standalone, this might be unnecessary.

This information I would need to decide wich way to go.
I promess I will study the data sheet more deeply when I need to, but you may also just point me to the relevant bits of information :-)


I think others have got an Arduino to talk to SMBus devices.  It seems that it's pretty similar to I2C


I've only skim-read this thread, but it strikes me the best approach is to split the battery into several banks, use an identical Arduino-based manager for every bank, and have them report back to a central controller via opto-isolators.  That way each bank has sane/safe voltages and the system is modular and extensible.

Alternatively use an opto isolator for every cell (I presume 1.4V cell can drive an IR emitter) to measure its voltage in the analog domain and multiplex the output sides of all the opto isolators.  Since the silicon bandgap is about 1.1V I'd imagine you would have a system very sensitive to cells dropping below 1.2V or so.
[ I DO NOT respond to personal messages, I WILL delete them unread, use the forum please ]


This is the system I was discussing.
The MAX6921 might be used, or the other demux chips discussed above.
Note how each battery is connected to nothing until a relay is closed.
A change is needed in the the Gnd for the battery WOULD NOT the GND for the Arduino, demux, & relay coils.
The two would be isolated so that the measuring electronics only connect to the battery under measurement +/- terminals.

I've been learning/reading some more, and after rereading this, this is what I think I can make of it:
The MAX6921 could be used just to directly control up to 20 relays that each isolate 1 cell and feedback its voltage to the arduino.
both circuits are completely separated, so no common ground.
The way this circuit is drawn, it seems like there wouldn't even need to be transistors or resistances around the MAX chip to control the relays, is that right?
are the outputs of the MAX chips (I think 40ma) enough to close a relay?   



Oct 24, 2011, 09:33 am Last Edit: Oct 24, 2011, 09:44 am by Graynomad Reason: 1
40mA is plenty for a small relay, but that circuit does not isolate the batteries from what I can see.

EDIT: I take that back, it does I think, but you have to change the GND for the relays and the MAX chip to be the same as the AVR.

ANOTHER EDIT: You have to be 110% certain you don't activate two relays at the same time. Do you plan to use software at any time in this project  :smiley-eek:

Rob Gray aka the GRAYnomad www.robgray.com


I have no idea how to instruct the MAX chip through the arduino, but I bet I'll find out.
haven't done much thinking about the programming yet, but it seems pretty straightforward to me;
open relay one
read voltage one
close relay one
(probably) delay (very short, to stabilize)
next relay and so on
compare voltages
report somehow

Go Up