Arduino BMS Shield using TI BQ76PL536A (Update 9/16)

Looks vary good, I pulled an Arduino mega (atmega2560) out of my drawer and thought it would do nicely.
Then found this thread, looks like it'll save me a lot of work :p
Edit: Though I em looking at the Atmel ATA6870 as it's a cheaper chip and requires less external components.
 
methods said:
I know a guy who knows a guy at Linear who swears that the new design kicks ass. I saw an implementation and it looked pretty damn simple. If it is as good as it looks I will spin an LTC BMS V5.

-methods

Good to know then than I am not wasting my time ;)
How bout that guy that knows a guy, gets a datasheet so we can start early ;)
 
matterrr did you get anywhere with this ?

I'd love an Arduino bike computer... and I can make/program all the toher stuff I want (throttle control etc..) but I'm stuck with the bms... and no idea how to do it
 
knighty said:
matterrr did you get anywhere with this ?

I'd love an Arduino bike computer... and I can make/program all the toher stuff I want (throttle control etc..) but I'm stuck with the bms... and no idea how to do it
I'm working on an open source BQ76PL536A arduino shield, eventually to become a full arduino compatible BMS. PM me if you want one to play around with, the PCBs should be here in the next week or two and I can build one up for you. Check out my other threads, matterr shared some of his code on one of them.
 
David,

You realize within a day or two of getting at minimum a pair of functional stacks I'll have an example sketch and connection diagramming? Just need to get the boards in brother :)

-Mike

PS: To be clear, I'll write it that quick... test it and release it as alpha but very likely fully functional. What do you say, stage #1 HVC/LVC programmable and Stage #2 balancing?
 
David,

Received the BMS boards today and they look quite FINE! Very nice assembly job man!

I will begin later testing a 6S implementation but I've realized we will not only need the main MCU for this but a desktop app for both the novice and experts to adjust all the parameters and options I've come up with for the primary controller MCU board.

Things are tight on time right now, moving van is here and I'm loading it (had hoped to get these before the weekend) but I'll get v 0.1.0 done as fast as possible and post the codebase.

A few more days we should have a working, extensible and most important Open Source BMS :)

-Mike
 
Glad to see progress has been made in your project. Unfortunately progress on my end will be slow because I'm moving within a month and starting a new job. I don't have the ability to work on hardware right now, but if anyone needs coding advice just let me know. I posted my code in dmwahls thread a whole ago. Another thing I noticed is that there isn't a great way ATM to connect the batteries to the Arduino shield on recently posted board... You should be able to get right angle through hole JST-XH through digikey. Maybe I just didn't see te connection on the board.
 
picked mine up from the post office today (got stung with tax (vat) on the import... no biggie... but label them as a gift when you post so no tax ;) )


they look great, I'll make a start on connecting them up when I get home tonight, but it's going to be a long week so it might be the weekend before I can get anything running :-(
 
Hello All,

I'm making good progress with a first beta release of firmware for the Arduino BMS Shield (title should be updated, remove Mega... different pin out) but it's taking a little longer to code up than I had anticipated - the codebase as of now is comprised of an Arduino Library for the TI bq76PL536 which handles all the device stack communication and other processing of data (ie: cell voltages, alerts and faults) and a Sketch which provides the actual BMS functionality such as balancing, etc.

This seemed to be the most logical manor to code support for the Shield (and stacked upper bus shields used for expanding beyond 6S).

As of now the first version released should be Wednesday / Thursday to allow sufficient time to test and it will not implement cell balancing yet (it's coded but will not be enabled in the first beta releases).

By the weekend I should also have an open source and as yet unnamed "Parameter Designer" with beginner (set chemistry type) and advanced (set HVC/LVC/Balance Voltage/Balance Timer, etc.) - this is coded in .net 2.0 framework so it will compile for Windows, Mac OSX and Linux (using Mono Support on OSX and Linux). The first version of the software will only use the USB port or TTL serial IO of the MCU of an Arduino Uno (or compatible) to communicate but future releases will implement use of the SparkFun SPI shortcut and probably I will code up a dedicated Arduino Firmware to act as an ISP/SPI interface to the PC.

Shield Firmware Progress / Features so far and Status:
1.) Automatic Detection and Addressing of up to 62 stacks (bq76PL536 chips attached in series to the North Bus) - Done
2.) Automatic Detection of connected cells (this will allow less than 6S to be connected to each module enabling packs to be configured of any cell count) - Done
3.) Minimizing current draw when active (when ADC conversion is done, only attached cells are measured and frequency of cell voltage polling on ADC is adjustable) - In Progress
4.) PC based configuration software - In progress
5.) Interrupt driven response to Faults and Alarms ensuring FAST actions by the Arduino MCU to disconnect throttle signal (send to GND) or operate a FET bank disconnect circuit I shamelessly stole from Methods.
6.) Logging of cell data to FAT/Fat32 SD Card - works but needs tuning and refining.
7.) Crude balancing - needs work, currently only enables when charging and cell voltages are above .1v above nominal for the chemistry, so for LiPo > 3.8v is when balancing takes place. Hoping this will prevent long taper / low current balance at end of charge cycle by keeping the cells in balance to the CV point at 4.15v per cell (default coded for LiPo chemistry).

Just thought I'd post an update to be sure everyone has reasonable expectations for the first version of firmware and some idea where I'm heading with the codebase.

-Mike
 
etriker said:
dmwahl said:
Are you using the temp sensor inputs? It looks like you're using some of them but I can't quite tell.

The Arduino needs to know the temp too.

It has been suggested to me that the temp sensor is the first one to get going.

Temp sensor is actually fairly low on our priority list, LVC/HVC and balancing are at the top.
 
sounds great :)


your coding sounds much faster/better than mine too... which I'm really glad about because I wasn't looking forward to that bit :)


when you talk about a custom firmware for the arduino, I'm guessing will that be optional ?


for me, the BMS is just the first step (probably the most important one too) the real fun starts when you can tie in everything else... colour touch screen, wifi, gps, speedo, throttle control, logging all the other data available (and then auto upload it via wifi) etc. etc. :)
 
dmwahl said:
etriker said:
dmwahl said:
Are you using the temp sensor inputs? It looks like you're using some of them but I can't quite tell.

The Arduino needs to know the temp too.

It has been suggested to me that the temp sensor is the first one to get going.

Temp sensor is actually fairly low on our priority list, LVC/HVC and balancing are at the top.

At least one sensor in the pack and one outside the pack.

I was wondering why my voltage readings were drifting a little and the NASA kids told me that is what happens at different temps and that the Arduino needs to know the temp so it can adjust the readings if you want to get a real close reading.
The only thing I have is a good Fluke meter to test against.

And data logging an ebike ride the cell log does ok but it will not show the different performance of batteries at different temps ?

The log is not complete without temps ?
 
Sorry, I should have been more clear. The BQ76 IC is internally compensated for temperature, so voltage readings should be within the specified accuracy. We're not using the Arduino directly to measure cell voltages, only to read the BQ76 output. I agree temperature is important to keep track of, when I said it was low priority it's only because it's relatively easy to add later. Initial priority is getting basic functions working. There will be 2 temperature sensors available, one on the control board and the other on the battery pack (or motor or wherever else you want it).
 
Agreed. Although ultimately up to the user. A large part of the goal with this is to allow people to set up the BMS as they please. The chip is intended for automotive use, so all the safety features required in that industry are now available to the DIY community.
 
Hello All,

Yes temperature readings are important but not As important as the rest of functionality which is why I've left that out / off, don't worry the final version of firmware will support temp monitor / alert also! :)

Usually temperature is important when charging at real high C rates and with chemistries like NiMh which can get really HOT charging / use.

Firmware will be optional, but I presume eventually David will incorporate the firmware and program these boards before shipping them out... users could also flash the firmware or modify / roll your own :)

I don't want to get weighted down with feature requests yet, there will obviously be many things users will want added and that can and likely will be addressed in short time, or you can always make your own firmware for the Arduino BMS shield :)

-Mike
 
Schematics for the 1.0 version of the dev shield (not the final BMS) are posted at https://github.com/dmwahl/BQ76PL536A-Arduino-Development-Shield for whoever is interested, working on cleaning up the BOMs and will post them when they're complete.

Let me know any feature requests for hardware, I've been keeping a list as Mike and I work on this. The github page has most of them listed.
 
ShreddinPB said:
...I did a design for a ltc6803 <> arduino board.. and I read now that they are about to come out with a ltc6804 which is much improved, specially in the daisy chain department

I am very interested in combining the LTC6803 with the new LTC3300. Controlling the two with some smart software should allow for pretty advanced balancing strategies - far beyond simple top balancing via cell bleeding. Has anyone followed this up? r
 
rolf_w said:
ShreddinPB said:
...I did a design for a ltc6803 <> arduino board.. and I read now that they are about to come out with a ltc6804 which is much improved, specially in the daisy chain department

I am very interested in combining the LTC6803 with the new LTC3300. Controlling the two with some smart software should allow for pretty advanced balancing strategies - far beyond simple top balancing via cell bleeding. Has anyone followed this up? r
Not that I know of, although it would certainly be a fun project. For now I'm focused on the TI BQ76PL536A chips, but doing an LTC version in the future is certainly an option.
 
the LTC3300 does sound pretty awesome - mostly because it would remove the need for all the balance resistors and heat etc...


too tired tonight, but I'll solder the headers on tomorrow and have a play with them / muck about with a bit of code... better if I know what's going on if I want to wire other stuff later on :)
 
I did a design with the LTC6804 and LTC6830 last year. For the LTC3300, I did only the schematic. If you need some help, I will be happy to help you! :D
 
Back
Top