LTC6811 Implementation Thread

methods

1 GW
Joined
Aug 8, 2008
Messages
5,555
Location
Santa Cruz CA
Ok... I bounced around a few ideas and had to pivot.
For lack of time... and positive past experience... I will go with the LTC6811

Application: low complexity BMS suitable for 4S and 8S boating and lawn mower applications. Must scale to 28S for Zero battery module.


History:

TLC6811 is a drop in for the 6804
Read all about it here in the datasheet

The 6804 is an evolution from the 03 and 02
I developed around the 02 (4 BMS versions) in the addressable flavor.

Major pain was in parts count:
* Zener on every channel
* RC filter on every channel
* Mosfet and load resistor on every channel
* Addressing was a bit sloppy

For this run requirements have changed.
* We will be running no external zener protection
* We will forgo RC filters
* We will limit balance to 60mA thereby eliminating the mosfets
* We will go with the daisy chain flavor this time

So what will that buy us?
48 less parts on the board (for 1 chip) so 4 parts less per channel and almost 150 less parts for a design big enough for a Zero battery.
That makes a difference... let my tweezer hand tell you alllll about it.

I just started... so here is my implementation so far:


Balance Math:
Internal fet has a 25ohm inline
Max is 60mA, math tells me 45ohms is what we need outside
That's 162mW outside and 90mW inside
90mW * 12 = ~1W (So can not turn them all on... but manageable for a small tssop)

Onward ->

-methods
 
Actual balance math:

Based on these graphs
internal1.png

Graph one tells us that the actual resistance will be under 15 ohms even on a hot chip

internal2.png

Graph two tells us that even if we turn on EVERY switch at once (In the case of one low cell... which is probable...) we will only see a 40 degree C increase in temp.

SO - based on that math, the new math says:

Itarget = 60mA (even tho we could run 100 if we wanted to risk it...)
Rint = 15ohms max (when balancing at 4.2V or some other high voltage)
4.2/(X + 15) = 60mA, so X = 55 ohms

If Rext = 55 ohms back math says

55+15=70ohms Rt
4.2/rT= 60mA (confirmed)

Power internal = 60mA^2*55 = ~200mW
Power external = 60mA^2*15 = ~50mW
Power total = 4.2^2/70 = 1/4th watt per channel

Balancing power, per channel in wh

To balance a 1wh cell imbalance it should take 4 hours. Thats a big delta.... so call it worst case

-methods

EDIT: Reminder - when calculating current squares carry the unit for the correct answer. I embarrassed myself on the phone a few minutes ago...
 
The demo board... always the first place to look before diving in:

demo.jpg


Now... if you are on Google Funding you can afford to just duplicate the demo and be assured success.

When you are on Ghetto Funding you can afford the risk of scraping 90% of that shit off the board for a slightly less accurate but significantly easier and cheaper to build application.
Think of it like running a square wave into a subwoofer... you can get 90 watts of hi-fi or 900 watts of lo-fi.
Bass is bass most of the time... I would rather actually get something in hand that is affordable than squabble about 5% measurement error.

I dont want my BMS balancing under load anyhow... so when it is doing its business... things should be pretty quiet.
I always create a state machine that tells me if I am in Charge, Discharge, or Standby... by simply watching the dv/dt direction of the cells over an integration period.

No change... Standby
Dropping or going up and down... discharge/regen
only going up... charge mode

Soooo SimpO

-methods
 
So while I search for an Eagle Footprint... (and while wishing I had an Altium license) lets have a look at Software:

I wrote my original library from scratch for use with Arduino.
Looks like a good deal of the work has also been done by LInear here.

An example of someone who took a wack at using it was found here as discovered from here.

Not a state machine but clearly a resource for anyone having trouble getting their BMS up and running.

NOTE: If you are a student, intern, or otherwise behind schedule and under water... this is not a trivial bring-up... even with something to start from. If you think you are going to copy and paste your way to a deliverable you are high on crack cocaine.

I started from a blank page and it was gnarly to get all the bugs worked out. You have to have a solid understanding of hardware, firmware, software, timing, register level, ..... If you cant count to 27d in Hex you may be in trouble.

-methods
 
Now... I could be reading in here... but have a look at page 68 of 88

CellBalance.png

Rdischarge goes away and Rfilter gets tuned to 50ohms and >>200mW

"Note that the anti-aliasing filter resistor is part of the discharge
path, so it should be removed or reduced. Use of
an RC for added cell voltage measurement filtering is OK
but the filter resistor must remain small, typically around
10Ω, to reduce the effect on the balance current."

So... what I read there is that if one wants to leverage internal balancing then it is totally fine to drop the RC filter (which drops parts count significantly). That said... I have been BURNED HARD by doing this in very noisy systems. A compromise is clearly in order. Have a look at this pic:

switchingDischarge.png

In that high level you can see that the internal mosfet shorts the cell (as expected). What is not shown is the resistance of the Fet and the inline filter resistance.

WHAT MAKES FAR MORE SENSE>........

Is to go ahead and use ~50ohm resistors as the filter resistors (right in the sweet spot between 10 ohms and 100 ohms)
Drop the resistor that was added specifically for balancing
Then populate the board with cap-pads between the cells (as opposed to linking to ground - or maybe we ground link)

IF one were to appropriately size the 50 ohm resistor one could have their cake and eat it too....
Single pole filter AND heat dumping load.
The system could then be tested with and without caps without any need to short out the missing resistor.

Double Win...

[youtube]OQSNhk5ICTI[/youtube]

Winning

-methods
 
I find this very interesting......this would be one of the greatest things to come out of ES me thinks.

Tom
 
When sorting out a lab (or garage or work space) I prefer to categorize by TOOLS and MATERIALS.
These are a very different sort of thing... and can be thought of as Permanent and Consumable.
A third category is a Kit, or working area... and this is an amalgamation of tools and consumables that are required for a task.
(Lab Setup 101 :D All three are required for a happy crew)

Part of the reason many people can not get comfortable in a work space is because these three distinct boundaries are not clearly set, or overly defined.
The same is true with folks inability to grasp programming.
Programming is intimidating... because at first one does not know the difference between a tool, material, and mix of the two.
Comments, operands, variables, constants, hardware port... once one can clearly identify these the problem dissolves.
This is why color coding is so important... and indenting for that matter.

But - on to this subject:

When creating library parts we have Symbols, Footprints, and the amalgamation - the device.
A Device is a mapping of Symbol pins to actual physical footprint pins.
Footprints are "standard" and must conform to reality (more on that later)
We will start with building a Symbol, in this case using Eagle PCB.



A Symbol consists of some lines (strictly for the eye to follow). They are in red.
The pins are the area of interest... and they have three attributes which are important:

Name
Direction
Swap Level

The Name is the name... it should match the name in the data sheet and describe the function.
I like to include the pin name in the name... like... 1,VCC or 7,GND... this is important for error checking

Getting back to our two earlier analogies the biggest hurtle to laying out PCB's is understanding what is important and what is not.
Ok... well... the most important thing is that YOUR PCB ACTUALLY WORKS AND EVERYTHING IS MAPPED CORRECTLY.
If you fail at this... you will learn about "haywire"... which will make your mind go haywire if you duplicate the mistake by 10X or 100X
(I have actually seen this in production many times)

So - Name your pins.

The Direction attribute may not seem so important... until you get really busy and make a mistake. Direction is used during error checking to make sure you have not made a silly mistake. If you mark a pin as IN and wire it to another pin named IN well.... the compiler will throw a warning. Important point - tho second order.

Swap level has to do with Auto Routing and it tells the Compiler how much flexibility it has in the knapsack solution.
0 means... do not fool with this
1 means... you can possibly swap this (or something like that)

For a resistor... we may want the Auto Router to swap leads if it is beneficial for routing
On a Ceramic Cap we may wish to do the same
On a polarized cap... we would set to 0

Got it?

Now... here is the Symbol that I built for the LTC6811. I was unable to find one.

When building symbols (and Schematics for that matter) there are two primary approaches:

OLD SCHOOL
NEW SCHOOL

Old School means that you make your symbol match your part as best you can. This is very helpful in manual error checking (as auto did not exist back in the day) but it makes for a messy looking schematic.

New School means you focus on how clean your schematic is and utilize the LEAP OF FAITH that you have everything right... and you trust your Compiler.

For overall style of a schematic...
Old School shows everything on a single page such that you can highlight traces and manually figure things out. Its a gnarly spaghetti mess.
New School means you break everything up onto different pages with layer after layer of abstraction.... more on that later.

I am more comfortable with Old School, and this is my project, so I will proceed as I desire
(tho if you pay me I will do whatever you like)

All of these things will be open source once verified.

-methods
 
After being frustrated with the lack of GOOD BMS options, I had resolved today to begin the design of my own. Low and behold, you're doing exactly what I set out to do. I'll be watching this closely and am very ready and willing to help as a motivated EE.

-Jim
 
Ok - you are hired.

I will send you a haywire unit as soon as I have one built. Test the crap out of it and find out where we can do better.

I will send you my PCB layout as soon as it is worth sending. Please nit-pick it a little.

thanks,
-methods



kingjamez said:
After being frustrated with the lack of GOOD BMS options, I had resolved today to begin the design of my own. Low and behold, you're doing exactly what I set out to do. I'll be watching this closely and am very ready and willing to help as a motivated EE.

-Jim
 
Alan B said:
Machinists view many tools as consumables. :)

True!
I speak of an EE lab or very well outfitted garage. I would be unfit to setup a machine shop (Tho I have two or three guys who I could recommend).

Of course ... the three categories break down into all sorts of subgroups... and contention arises around tools and materials that span different activities... and... yea.
I am sure you understand. Lab politics. Whats most important is that the Engineers have what they need and want to work in the space. Dont get me started on war stories of having to work in labs run by grouchy old guys...

My great weakness is in Mechanical Modeling and automated machining. Dont get me wrong... I can build stuff. I can use all tools. I can draw what I want and make it. I can middle-man the production of all sorts of stuff... but what I cant do... is sit down at a terminal, draw what I want to be cut away from aluminum, then load stock, press a button, and get what I want.

I could do it... just as soon as I can afford a 5 axis CNC for my desktop and the time to learn the software / break some bits.

-methods
 
methods said:
My great weakness is in Mechanical Modeling and automated machining. Dont get me wrong... I can build stuff. I can use all tools. I can draw what I want and make it. I can middle-man the production of all sorts of stuff... but what I cant do... is sit down at a terminal, draw what I want to be cut away from aluminum, then load stock, press a button, and get what I want.

I could do it... just as soon as I can afford a 5 axis CNC for my desktop and the time to learn the software / break some bits.

-methods

Well, if you ever need some help there I can help too. While I'm trained as an EE, I really love CAD/CAM. I've got a 3 axis CNC mill in the garage that I have a lot of fun with.

Looking forward to this!

-Jim
 
OK.
Good to know.

I am hoping to avoid any sort of requirement for aluminum heat sinking. I would like to experiment with the PCB's that are impregnated with aluminum for heat sinking... then lay a flat spot that can be mounted to anything folks have around.

I have some experience around flat flex and rigid flex, no experience with PCB's with integrated aluminum. Any idea on cost by the inch for those? Lead times.

FYI: Kingjamez is legit. He contacted me via email and made a push to do automated assembly.... which is a major design driver and limiting factor. We are going to go for it - which means this is going to be a serious offering. Glad he did it before I got to doing BOM... as it really changes the direction of design.

-methods
 
I will be off line till Thursday for the most part.

Job interviews, deferred maintenance on the house, and my parenting time with my son.

If you are thinking about this... shift gears to automated assembly
Disregard any attempts to drive down parts count
Shift focus to minimizing unique parts on the board

Everything will be 0805 and I will shoot for 10mil trace and space (tho with the fine pitch 8mil or 6 mill will be required)
I like heavy traces where they can be afforded... much easier to haywire and more copper to sink heat.

Shooting for 2 layers to keep costs in line... but 4 will probably be required for a compact PCB

Think about how to connectorize in a way that will achieve IP67 - be that with a potted board or a sealed enclosure
(Potted preferred) Current plan is to pack the connectors with dialectic

Focus on eliminating any feature which is advanced... displays, datalogging, BlueTooth, infinite expansion... Those can be on a next rev if we do it. I am experienced in bluetooth and Android programming so I can easily make a "really cool interface". Truth is that most people who really need one of these do not really nerd out on that sort of thing. They just want to plug it in once and never hear about it again.

Focus on the mosfet arrangement for direct drive of 100V to 150V @ a minimum of 30A continuous with 100A bursts.
Think about a contactor drive circuit, low cost compact contactor, and uses case differences.

Think about how we will need to wire to a 2013 - 2015 Zero pack... we will need to produce a PCB slot connector that mates to the existing balance tap. Its gnarly lame but with grease pack it will work.

Think about accommodations for paralleling many packs. Hobby City, Zero Modules, 18650... and minimizing wires / maximizing PCB's

Think about the qualification plan and production tester. We will need someone to really exercise this... and we will need a "checkout station" that quickly confirms that every part is on the board, every pin is soldered, no shorts, etc. Suggestions on that are:

* Leakage current test
* R2R ladder with a sequencer
* Automated or manual - but we need to see every channel blip LVC and HVC

Think about transient suppression and user miss-wiring

Think about the state machine we will use and whether we will drum up my old 6802 code or work from the supplied Linear code base provided in C

Consider how we will "flash" the onboard Arduino
How we will provide field updates
What flash tool we will use to burn chips... and just update settings

Think about software architecture that allows for only 1 burn and after that Flash memory updates via serial port

Start thinking about V2 CAN support, what protocol, and spoofing EV chargers.

Think about current measurement, hall sensors, large shunts, ... and the fact that we wont need that on V1

Think about temperature monitoring: Values of the RTD's if we want to go high impedance on 5 channels with an averaging LPF or 2 channels of low impedance that we blip when required

Think about detecting default case of open OC buss... and if we will need 2-way communication down the buss. We will need a self test to confirm that any LTC on the network can successfully drive the contactor or mosfet bank.

Consider physical layout of different packs from lunchbox size to truck bed size

Consider total parts BOM, cost of PCB, assembly, and test... and enough profit to cover failures (like a non-profit)

Ok... off to pack for another trip.

-methods
 
Lots of good thoughts there.

We also need a reliable way to know the BMS is actually alive and working - all the time - and if there are any problems with the cells. Like a smoke alarm, we must have some way of testing it, and it letting us know that attention is needed. The BMS cannot solve all the problems, if the cells are going south we need to know when to regard the battery as deranged equipment vs when things are nominal. The average user may not care what the cell voltages are, but he needs to know when to call the fire department.

For those of us who want more info, a connector to use for a battery medic or similar would be fantastic.
 
Thanks for the contribution.
I had not considered that.

We will work it in :)
 
+1
One of the major weaknesses of the typical Chinese BMS is no easy way to measure the individual cell voltages. With really fancy chips, you can send serial data to an external device (Bluetooth to a smart phone would be nice).

Cruder method is to provide a connector with cell connections. This is better in some ways as you can use it to manually balance the pack if needed. You don't need to constantly measure all the cell voltages. Just once in a while is good in most cases.

As you have figured out, some of the functions should be based on time as well as voltage. HVC and LVC should not be instantaneous. The limit should be exceeded for some period of time before triggering shutdown.

There should be some provision to prevent charging if any cell is too low. If any cell is below about 2v, the charge current needs to be drastically reduced to prevent overheating and possible fire.

There should be some provision to prevent excessive charging current (mostly from regen). Again, fires are generally bad.

Standby current drain should be equal on all cells. Under 50uA would be good. Fancy circuits can go to sleep and draw less most of the time.
 
ooooh... big one. Thanks for catching that Fecther.
We could have caught it in firmware... but I will design it in now.

IF any cell below 2V go ahead and lock out both LVC and HVC
Force manual user intervention
Sound a different alarm in this case? An alarm which states: "You are broken, not me... I am protecting you from fire"

-methods


fechter said:
+1
...
There should be some provision to prevent charging if any cell is too low. If any cell is below about 2v, the charge current needs to be drastically reduced to prevent overheating and possible fire.
...
 
This is still on the radar.

Some big blips came through on a developed BMS which is modular 4S and up and I am trying to get samples in hand. Individual who has it is a serious operator so I would feel confident in the design. If there is something we can grab off the shelf at a good price lets start there and get some testing done. This will help us understand the noise involved, how many M&M's we need to sprinkle on the board, what wiring should look like, power consumption expectations, UI...

I suspect any offerings will be expensive, have features we dont need, be missing features we seek, so... most likely we will need to do this unless someone pulled a serious super-hero.

Chewing my fingernails trying to make money without a day job.
Just applied for a bunch of day jobs so I can relax and bust stuff like this out.

Spent 7 hours yesterday unpaid trying to get an Azure Dynamics Transport Connect running. Failed. It drives but still wont charge. Cleared Isolation Faults from the ESS but now it has Interlock errors. The guys over at AZD were lazy... it seems they would throw up whatever error was easy to throw in order to perform lockouts etc.... so... reading the DCT's can send you down the wrong path. I had a bad charge control module and my data was telling me it was a bad BMS board. What a waste of time that was dropping the battery and cooling system, removing the BMS's on a 350V pack... arg.

I was grinding away hard on it at home till I realized the "delivery van" only has 50 miles of range. wtf... man... bum me out.

-methods
 
Start with an existing design?
I'm looking into using raphael chang's design. https://github.com/raphaelchang/battman-hardware
He's a young MIT student with some great talent but not much knowledge on lithium ion batteries or BMS design ... so the design has a couple of major issues I emailed him about a month ago (no response).
It is also done in Altium designer and combined with the kid's talent I think the design has promise and some cool features.
 
Good find!

If only I could afford to say YES to the Altium sales reps who call me once a month. $10k is a chunk to put out... Perhaps I can just use the free viewer to look at the files. I had a demo ... but the timer expired. I explained to Altium ad nauseum that 10 days isn't even close to enough time to evaluate their product. They responded with "we can extend your trial another 10 days". I explained to them that PCB layout (for our company) is a bursty operation... so if they want to put a timer it should be on *actual hours* that the program is running... so that I can use it 4 hours here and 8 hours there. I dont know about you guys... but I cant drop everything and go full speed on Altium for 20 days straight. Other stuff to do.

But... kids on a salary probably can.

As far as reviewing others designs...
In the Startup World I have seen more stupid mistakes made simply for lack of investigation into competitors products than anything else. Its not about "copying" or "innovating"... its simply about leveraging work done to make something better and not repeat mistakes.

-methods
 
Yeah, I have little intention of using Altium designer. The price is just stupid.
Maybe reply to their weekly calls and try to negotiate. I read at one time the cost was closer to 3k.

I think the software may have an export tool to export the schematic and board to eagle/designspark/kicad or some other free format.
I am about to try the trial and see if I can export. Let me know if you have any luck.
I also asked Raphael when I emailed him...

I have not done a detail review of his design, but here are the issues from what I recall from a higher level

He added an external RTC, that he is powering from one cell for the purpose of wake up from events, etc. Obviously.... this is bad, EVERYTHING should be powered from all cells or nothing.
I suggested he move to an STML4 based chip that has built in RTC.
And overall power consumption during sleep - there was no measurements or indications of expectations for this.

Getting power consumption low for a standalone bms design is really hard while maintaining some off-line features. I suggested linear regulators or some really modern DC/DC power supplies that have ultra low quiescent current. I am sure ST have some design guidance on how to make this possible.
But powering a RTC that can wake up the MCU is a bad idea.. unless the RTC is like 1nA or less lol.

Things are a bit easier when the BMS is switched by a 12v system :)
 
Turns out I requested a trial late last year and never used it. And the key they give was good from the request date. Tried registering with another email but no response. (update: got email but they gave me same login... they track by IP at least)
Post up files if you can get a trial and figure out how to export in the meantime. I can try again next week with another IP or something.
 
Back
Top