EcoModder.com

EcoModder.com (https://ecomodder.com/forum/)
-   Open ReVolt: open source DC motor controller (https://ecomodder.com/forum/open-revolt-open-source-dc-motor-controller.html)
-   -   BMS for open revolt (https://ecomodder.com/forum/showthread.php/bms-open-revolt-12175.html)

MPaulHolmes 02-05-2010 11:20 AM

BMS for open revolt
 
I figured it's own thread would be better than occasional comments inside other threads. Let's define terms. The BMS can have any number of "nodes", where each node monitors anywhere from 1 to 10 batteries, and is controlled by 1 dsPIC30F4011. I plan on only using a node to monitor 8 batteries, since the sample pack to be monitored is 48 100amp*hr thundersky batteries.

Let's say a node consists of 8 "subnodes". haha. Each subnode has an ATTINY25 that communicates via morse code with it's master, the dsPIC30F4011.

I breadboarded 1 node of the bms, where that node only had 1 subnode, just for testing:
http://i419.photobucket.com/albums/p...S/DSCF4716.jpg

It measures the battery voltage indirectly by sampling a 1.25v reference voltage. The attiny25 was powered by a variable voltage supply. I varied the voltage from 2.0v up to 4.5v, and watched how the morse code on the oscilloscope changed. To figure out what the power supply voltage was, you do this...
You get the ADC_VALUE by converting the morse code to it. Then, the battery voltage is:
x = 1.25/ADC_VALUE * 1024.

I wrote down the da's and dits.... Not knowing if it was working or not, I went to finding x above... It said 2.07v, while the voltage reference said 2.0v. I was pretty sad. Then I figured I would measure the voltage of the power supply with my new fluke 117 volt meter. It said 2.072v! hahaha. oh heck ya... Now to test the receiving half.

MPaulHolmes 02-07-2010 02:12 AM

I worked on the software for the dsPIC30F4011 much of today. I've re-written it like 3-4 times, and it's getting better. I still haven't tested it though. The circuit is just sitting there in the garage, ready to go. Maybe in a couple days. I'm allowing so much slop in the transmission of the morse code from the attinys to the dspics that the transmissions should survive an EM pulse from a nuclear warhead. Speaking of nuclear war, one of my favorite movies is "The Day After". It's the bomb! hahaha.

Also, the CAN code is close to being ready. The 1000amp Sync. Rect. controller is going to use a dspic with CAN, so it will be easy to interface with the bms.

jyanof 02-07-2010 05:20 PM

i was curious...

seems that a major concern with bms modules is that they fail and drain the cell that they're monitoring. One failure mode is the mosfet failing on - then, the module can't turn it off and the thing drains the cell to destruction.

IIRC, you're planning on using PWM to control the shunt current. Could the shunt resistor and fuse be sized such that a low PWM duty is required? Then, if the fet fails on, it's like a PWM duty of 1, and the increase in current causes the fuse to blow. When the fuse blows, the module is not longer powered, the main system is not receiving a signal from it anymore, and shuts everything down.

Maybe you've already considered such a case and have come up with a better solution. BMS modules seem like a good thing, but (from what I've read) they have also caused cell failures. The function of a BMS is very simple, but I think benign failure modes will be the key to a successful unit.

I plan on upgrading to Li when my pack dies - maybe in a year or so, so I'll be following closely!

MPaulHolmes 02-07-2010 07:08 PM

Hey Joe! Excellent idea! I'm going to reorder a power resistor with smaller resistance, so that a shorted mosfet would draw an obscene amount of amps (well maybe only like 10 or something), and a fuse that would go off around 5, and the pwm would be such that the max shunt current would be 2 amps. That's a nice easy fix! I might need to add a small inductor to smooth it out, but maybe not.

jyanof 02-08-2010 10:15 AM

Quote:

Originally Posted by MPaulHolmes (Post 159805)
Hey Joe! Excellent idea! I'm going to reorder a power resistor with smaller resistance, so that a shorted mosfet would draw an obscene amount of amps (well maybe only like 10 or something), and a fuse that would go off around 5, and the pwm would be such that the max shunt current would be 2 amps. That's a nice easy fix! I might need to add a small inductor to smooth it out, but maybe not.


Cool, that's what I was thinking. Not sure about the inductor though. With no inductor, you'll be drawing pulses of 10A at whatever duty cycle. That might be ok, though. Maybe you just need a slow-blow fuse or something? May take some testing to see if the pulses trip the fuse, but less parts the better.

MPaulHolmes 02-08-2010 11:19 AM

Hey Joe! I was talking to Fran, and if I just keep the resistance to like 1 Ohm, then the max current draw would be 4 amps at 100% duty, so I could just keep the duty to 50%. I just didn't know that there were such precision fuses out there. I'm going to use some that last "forever" at 2amp, and last for like 10 seconds at 4 amps. Isn't that amazing that they can do that?

http://www.belfuse.com/Data/Datasheets/C1S.pdf

That way, a micro that fails full on, or a mosfet that fails shorted would be harmless.

Actually there are 2 mosfets. But I just thought of a way to check if the 2nd failed shorted too. The 2nd failure wouldn't run the battery down, it would just turn on the power to the attiny voltage monitoring circuit, which uses like 2mA. That would mean that the attiny was sending voltages. So, when the power is first applied, I could expect a particular startup sequence to be sent to the big micro from the attiny, and if it doesn't happen (if it only sends actual voltages of the battery), then you know there's a problem, like it has been running since the last time it was turned off. 2mA can be drawn from a 100amp*hr battery for a really really long time before it's a problem. If the correct sequence isn't obtained, the main charger and controller would know which naughty cell monitor was the culprit. ya!

MPaulHolmes 02-10-2010 01:29 PM

The CAN bus code is basically done! Holy cow what a pickle! It took forever for me to understand it, but now it makes a lot of sense. It's very nice. It's mostly the same code for the charger and the controller and the bms as far as CAN goes. I checked over Fran's motor controller code, and not much needs to be modified to work on a dsPIC. It's nice not to have to start from scratch with that.

apowers 02-10-2010 07:17 PM

" It's mostly the same code for the charger and the controller and the bms as far as CAN goes."


Hi Paul
What charger are you talking about?
Alvin

MPaulHolmes 02-10-2010 07:58 PM

Hey Alvin! It's the charger I'm making. The charger, controller, and bms will all talk to each other. The nice thing is, CAN doesn't care if one of the nodes suddenly disappears, so if it switches from charging to controller, there won't be really any disruption to the network. Actually, the charger is going to be active while driving. I'm making all three of them for a company in Oregon that's making a smaller version of the Chevy Volt. 3 wheeled.

MPaulHolmes 02-26-2010 03:14 AM

Bill of Materials:
(If a letter looks like a 1, but is really straight, it's an I)
http://i419.photobucket.com/albums/p...fMaterials.jpg

Grimm 09-19-2010 07:35 PM

DC-Bus
 
Thought I'd pass this along - Power line DC-BUS communication applications...
Look on the bottom left under "DC-BUS in Renewal Energy"

bennelson 09-19-2010 09:30 PM

It isn't a BMS, but lately, I have been using a simple battery monitor a friend designed.

http://gallery.me.com/benhdvideoguy/...12834872880001

It's an LED bar graph that shows the voltage of each of four batteries. (This one is a double, it will do up to eight 12V batteries.)

Using it, I was able to spot that one battery always started dropping voltage faster than the others. I replaced it and the car seems to be performing better since then.

sawickm 09-22-2010 12:40 PM

Quote:

Originally Posted by bennelson (Post 194910)
It isn't a BMS, but lately, I have been using a simple battery monitor a friend designed.

Ben,

Any more info or documentation that you can share on that battery monitor ?

-Mark

bennelson 09-22-2010 12:52 PM

I'll post some more info on that project soon.

I haven't actually been one to do the soldering on one of those yet, but I have some video about it that I need to edit and post.

The Toecutter 09-27-2010 07:38 AM

Any idea when this is going to be available for sale?

Is there anything I can do to help with its design to speed it along?

I'm currently planning a crude system that will use zener diodes and lightbulbs to bleed off excess charge current, but it will do nothing for discharge. No BMS will kill AGMs in a few thousand miles.

bennelson 09-27-2010 11:37 AM

I think we are in the testing stage right now for these battery monitors.

Next time I see Tom, I will ask how close he thinks we are to being able to sell a version of it.

He's an EE, so he knows what he's doing for making them. It's more a matter of features on it and getting some EV miles of testing on them.

1-ev.com 10-15-2010 04:35 PM

What do you guys think about this BMS:

minibms.mybigcommerceDOTcom/pages/Product-Support.html

Prices are here:

cleanpowerautoDOTcom/MiniBMS.html

minibms.mybigcommerceDOTcom

Tired2 10-25-2010 10:40 PM

Paul,

Just a thought on CAN... OBD-II is a CAN system if I remember correctly. I'm not sure what all information is there other than stuff related to the old engine, but if most converters of newer (OBD-II) cars keep the ECU, you can pull speed sensor value and probably 12v battery voltage from there at least, maybe more. Just something to think about.

isaac_alaska 03-18-2011 04:34 AM

those mini bms seem pretty expensive if you're planning a very big pack... i don't know a whole lot about bms yet but i would think that a scalable circuit could be designed for maybe a dollar or two per cell, rather than 12 dollars per cell plus master boards at 230 dollars per 16 cells. again, i might be wrong, or maybe i'm missing something.

sawickm 03-18-2011 08:56 AM

Quote:

Originally Posted by isaac_alaska (Post 226120)
those mini bms seem pretty expensive if you're planning a very big pack... i don't know a whole lot about bms yet but i would think that a scalable circuit could be designed for maybe a dollar or two per cell, rather than 12 dollars per cell plus master boards at 230 dollars per 16 cells. again, i might be wrong, or maybe i'm missing something.

The MiniBMS started as an open source project. This is the link to the development of MiniBMS: MiniBMS Project

Regards,

-Mark :D

isaac_alaska 03-18-2011 03:18 PM

thanks mark. i'm gonna research as much as i can about that open source minibms. it looks to be a LOT more along the lines of what i need. something where the entire bms can be built into a large pcb, and then have just a single wire running to each battery (since they'll all be connected in series) plus one additional wire to pick up the remaining cell at the end of the string.

right now we're using 60 conductor 300v rated ribbon cable, and it's pretty ideal for connecting things that need a lot of wires. the connectors are especially easy to install: you just squeeze the end on with a pair of pliers (or by hand if you have super gorilla hands) in maybe 3 minutes and you'r set

harlequin2 03-31-2011 04:27 PM

Quote:

Originally Posted by MPaulHolmes (Post 159645)
I worked on the software for the dsPIC30F4011 much of today. I've re-written it like 3-4 times, and it's getting better. I still haven't tested it though. The circuit is just sitting there in the garage, ready to go. Maybe in a couple days. I'm allowing so much slop in the transmission of the morse code from the attinys to the dspics that the transmissions should survive an EM pulse from a nuclear warhead. Speaking of nuclear war, one of my favorite movies is "The Day After". It's the bomb! hahaha.

Also, the CAN code is close to being ready. The 1000amp Sync. Rect. controller is going to use a dspic with CAN, so it will be easy to interface with the bms.

What's your "Morse Code" and how is it carried from one place to another?

MPaulHolmes 04-01-2011 11:32 AM

One unit of time high (call it 'dit') means send a zero. One unit of time low means ready for next 0 or 1. 3 units of time high means send 1.

The "unit of time" can be any amount you want. it's all good.

Simy 07-06-2011 02:05 AM

Quote:

Originally Posted by MPaulHolmes (Post 229238)
One unit of time high (call it 'dit') means send a zero. One unit of time low means ready for next 0 or 1. 3 units of time high means send 1.

The "unit of time" can be any amount you want. it's all good.

Am I to understand that your both rewriting morse code, and at the same time that you can code what kind of example you want? Why not just use binary at a set bit depth?

Say 8 bits that gives you a value range of 0-254. Since a single battery is unlikely to need a value range that high and we may want a single decimal place we can use the maximum value of 0.0 - 25.4.

Would this not be easier to code? I could fiddle with it if you would like.

Will your BMS control the charger or simply talk to it? I think it makes more sense regardless of battery type to have any on board charging system use the BMS to tell it when to do stuff. This is even best when the BMS also controls or influences the inverter/speed controller. It can detect shore power and disengage the traction drive. Even beep at you when you hit the gas or turn on the ignition.

The BMS if designed like this can also be used for solar/wind power as well.


While we are on the subject, is this design of your static yet... =)

harlequin2 07-06-2011 06:02 PM

I have had a look at Paul's design and its not for me. So I have designed yet another BMS (YABS?)
But rather than hijack Paul's thread, I'll go start a new one entirely and those interested can comment.

Low Cost BMS

harlequin2 07-06-2011 06:53 PM

Quote:

Originally Posted by Simy (Post 248611)
Am I to understand that your both rewriting morse code, and at the same time that you can code what kind of example you want? Why not just use binary at a set bit depth?

Say 8 bits that gives you a value range of 0-254. Since a single battery is unlikely to need a value range that high and we may want a single decimal place we can use the maximum value of 0.0 - 25.4.

Would this not be easier to code? I could fiddle with it if you would like.

Will your BMS control the charger or simply talk to it? I think it makes more sense regardless of battery type to have any on board charging system use the BMS to tell it when to do stuff. This is even best when the BMS also controls or influences the inverter/speed controller. It can detect shore power and disengage the traction drive. Even beep at you when you hit the gas or turn on the ignition.

The BMS if designed like this can also be used for solar/wind power as well.


While we are on the subject, is this design of your static yet... =)

See Low Cost BMS


All times are GMT -4. The time now is 07:56 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Content Relevant URLs by vBSEO 3.5.2
All content copyright EcoModder.com