Pages: [1] 2 3   Go Down
Author Topic: Battery Pack, individual cell voltage measurement  (Read 3623 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

I need to be able to monitor the individual cell voltages within a pack of 45 lithium cells. Each cell's voltage woud range between 2.5 and 4.0 VDC. I've read that I could use my Arduinio Mega to monitor voltage up to 5 VDC but that measurement depends on a connection to ground.

Obviously, to measure the voltage of one cell in the middle of the pack, I can't measure between a cell terminal and ground.

So are there any options that I can use with an arduino to measure individual cell voltage?

Ideally, I'll want monitor all 45 cells and stop charging the pack when any one of the cells hits a preset voltage.

Thanks,
Pete
Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17263
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Are they wired in series, 189 vdc?

Lefty
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yes, the pack is normally kept between 134 and 151 VDC. This is the traction pack on an Electric Vehicle.

I have an off-the-shelf battery management system installed but it is failing and I can't afford to replace it.

Thanks,
Pete
Logged

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8472
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

There are many ways involving relays, muxes etc but my preferred method would be to use 45 small processors each powered from the cell being measured and with an isolated serial link.

I stress that I haven't actually done this yet so there may be a gotcha, but I do have what I think is a workable idea I plan to build up soon.

_____
Rob
« Last Edit: November 30, 2012, 12:38:58 am by Graynomad » Logged

Rob Gray aka the GRAYnomad www.robgray.com

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Since I'm more of a software than hardware person, I'm unsure how to even get started with this idea. But currently have 46 wires running from each of the 45 cells, to a junction box full of terminal strips where the current Battery Managment System (BMS) is housed. I'm hoping that anything I can come up with, can be used with those existing wires because they were put in place during the build of my EV and it is not practical to run new wires at all.

The current BMS monitors individual cells and exchanges information between each of those 45 monitoring circuits and in theory, the first cell to reach 3.65 volts, should shut down the charging system. It seems to be starting to fail or feeling the effects of some other problem. So I'm hoping to use an Arduino to monitor all of the cell voltages and apply the appropriate logic to determine when a charge cycle must be terminated. I've got a LOT of money in the batteries and will do just about anything to make sure they last as long as possible. At the moment, I'm manually monitering each charge because I don't trust the BMS or the charger to cut off charging at the right time.

I'd LOVE to find something like the digital temperature sensors that I used with the Arduino. They all share the same +5 power source and they all share the same data line to the Arduino. They are individually addressed and are polled individually, ever few seconds. Based on that information, I'm switching on and off 6 solid state relays connected to heating elements in the boxes. It actually uses a product called FlexiWatt to provide the heat. That is a product used to warm reptiles in pet stores or at home.

Somehow, I don't think this is going to be easy.  smiley-eek

Peter
Logged

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8472
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
They all share the same +5 power source and they all share the same data line to the Arduino.
That would be nice, but in this case after the first cell the voltages are too high.

Quote
Somehow, I don't think this is going to be easy.
Not as easy as you would like I'm sure.

Quote
I'm hoping that anything I can come up with, can be used with those existing wires
My 45-processor idea is designed to reduce wiring and it could still use those wires, however in this case the wires are already in place so probably using relays would be better.

What you need to do is the automatic equivalent of the manual method you are currently employing. Using relays (or maybe MUXs) you "walk" two connections along the 45 batteries taking readings as you go. This means that, like your hand-held meter the Arduino has to be floating and not powered from the same source or connected to the same ground.

______
Rob
Logged

Rob Gray aka the GRAYnomad www.robgray.com

Offline Offline
Edison Member
*
Karma: 8
Posts: 1341
If you're not living on the Edge, you're taking up too much space!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Let's say you need to measure within 0.08v.  Then make 2 banks of 20.  Put Gnd at one end and measure the total voltage of each point along the way using a simple voltage divider.  20*4v/1024 is about 0.08v.  In this case you need 1k and 15k resistors x45, cheap.  With a Mega there are nearly 20 analog inputs, but darn only 16. 

Let's say you need to measure within 0.04v.  Then make 4 banks of 12.  Put Gnd at one end and measure the total voltage of each point along the way using a simple voltage divider.  12*4v/1024 is about 0.05v.  In this case you need 1k and 9k resistors x45, cheap.  With a Mega there are >12 analog inputs, so no switching is needed!
Logged

If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm afraid that in my case, I need to measure individual cell voltage to an accuracy of .01 volts. My goal is to keep any of the cells from exceeding 3.65 volts. I would also like to be able to adjust that cut off point downward in the future but that would be easy in the software.

I like the idea of examining each cell in turn and just keeping up that cycle of readings as the program watches for the voltage cutoff to be reached.

I suspect that I need to find a design for a small processor controlled board that is powered by the cell being monitored and can reply to a request from a central Arduino.

Of course, the communications line will also have to be isolated from the cells.

I need a circuit that can monitor a serial communciations line for a specific address, and then respond with voltage value and then go quiet until it is polled again.

I'm already out of my depth on this subject.... but that won't stop me from trying.  smiley

Pete
Logged

United Kingdom
Offline Offline
Tesla Member
***
Karma: 224
Posts: 6593
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I'd go with Graynomad's suggestion. One ATTiny or similar processor per cell, connecting to a shared bus (or several shared busses - 145 devices on one bus is probably too many) using 2 opto isolators each. Put the mcu in sleep mode when it isn't being used so that it doesn't drain the cell. You'll need to calibrate the internal voltage reference to get 0.01V accuracy - you can store the calibration data in the EEPROM.
Logged

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8472
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I suspect that I need to find a design for a small processor controlled board that is powered by the cell being monitored and can reply to a request from a central Arduino.
Like this you mean?



I resurrected my old design. It uses a mega328, bit of an overkill I guess but that's the smallest AVR that has both a UART and an ADC. A tiny84 might be better using soft serial but that doesn't save many $.

This is designed to work on any cell from 2-12v, the nodes are daisy-chained so as many as you like can be placed in series with no bus loading issues. Each node can also measure the temperature. Each node is isolated from the next and only a single UART input is required on the Arduino. No addressing required.

I just changed it to 3v3 today but haven't modified the voltage divider which was set for a 5v processor. I'm also not sure about the transistor "pre-regulator", that's getting a little too far into the analogue domain for me.

I designed this a year or so back but never did anything with it, however it actually fits well with my current project (a monitoring and control network) so as long as you don't need it next week I can bring this back to life.

Just a thought.

______
Rob
« Last Edit: December 01, 2012, 11:39:03 am by Graynomad » Logged

Rob Gray aka the GRAYnomad www.robgray.com

Offline Offline
Edison Member
*
Karma: 8
Posts: 1341
If you're not living on the Edge, you're taking up too much space!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

If your goal is to maintain the battery's health, I think 0.04 is enough precision.  Accuracy requires calibration.  You will be lucky to get 0.04 anyway even with 0.01 precision.  Do you understand my solution?  No switching is needed within each bank.
Logged

If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8472
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Do you understand my solution?
I confess that I don't.

I can see using 45 voltage dividers but I don't get the banks, as each "bank" has to have the same 0v reference what is the difference between that and just a MUX?

I do admit that say a 45:8 (or whatever) MUX would be much cheaper, but I think you'd probably want to customise each voltage divider to get full resolution.

______
Rob
Logged

Rob Gray aka the GRAYnomad www.robgray.com

the land of sun+snow
Offline Offline
Faraday Member
**
Karma: 158
Posts: 2890
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Offhand, I was wondering what was the original electric vehicle?

I've been thinking about this problem overnight. Measuring to 0.01 volt accuracy seems
a little unrealistic, but to mainly gauge health, that's probably overkill, as SB33 says.
I'm not sure about Li cells, but when a NiMH cell in a series pack goes bad, it's voltage
really goes haywire, compared to the other cells. Individual cell voltages can actually
"reverse" in polarity during the charging process.

I thought about the 45 voltage divider idea, but for the highest level cells, you would be
dividing down by 151:5, and this would give a very poor resolution with a 10-bit A/D.

However, I think you might get by with the banking idea, of using 45/6 => 8 separate
Arduino processors, powered at different points in the battery chain, and each reading
6 A/D channels, and with output signals optoisolated going to a central processor. Each
bank only needs to read over the range of 8*3.3V, or 18.9V. This way you should have
18.9V/1024, or 0.018V resolution.

The main processor could sample some thermistors to monitor a few cell temperatures
too.



Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17263
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Could you not use an op-amp that has a very high common mode voltage rejection rating? Check out the linked pdf doc. You could either have an op-amp dedicated to each of the cells or do front-end switching such that only one cells voltage at a time is routed to a single op-amp input. Check out this article to see if that might not be a very good method for measuring each cells individual terminal voltage.

http://cds.linear.com/docs/Design%20Note/dn25.pdf

Lefty
Logged

the land of sun+snow
Offline Offline
Faraday Member
**
Karma: 158
Posts: 2890
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
op-amp that has a very high common mode voltage rejection rating

I thought about something like that, but it requires much more circuitry [45 opAmps,
plus etc] than the other approaches. But would be very good for a few sample points
only.
Logged

Pages: [1] 2 3   Go Up
Jump to: