diy solar

diy solar

DIY BMS design and reflection

So I chose the mux: DG408DY from Vishay and the ADC: LTC2452ITS8 from LT (backup choice: LTC2470CMS form LT) they are basically the least expensive components who fit what I need (and sorry but the ADC is only available in a 0.65 mm pin pitch package, the least expensive ADC in a SOIC package is around $10 so I'm not going that path...). Also, given the low price of the mux and high price of multi-channels ADCs I'll use one more mux to mutualize the single channel ADC between voltage, temp and current measurements.

I am using LTO cells max volts of 2.8 per cell or a total of 33.6 volts

Ah ok, this explain that :)

Again please excuse my ignorance of electrical engineering. What I have done is used 2 8 channel relay boards to measure the voltage of each cell starting from cell 1 and subtracting the previous cumulative voltages for cells 2 through 12 this gives me the voltage of each cell. It works quite fine but 2 8 channel relay boards are very large and I'm sure inefficient. I ran each measurement through a single voltage divider between my relays and the measuring device to overcome the high voltage of the upper cells in the series.

What I tried next was using mosfets to iterate through the cells but quickly found out that they don't exactly work that way.

Is there a way to use mosfets or BJT's to do this?

What you're trying to do is basically creating a mux (multiplexer) with relays/mosfet/bjt. You can do it but it'll be expensive, have a high parts count, be power hungry, use a lot of space, ... then for a few $ max you have an already made mux (and it takes binary as an input so only 3 wires for 8:1 or 4 wires for 16:1) who is better on all levels, so I highly recommend that path.
 
I see, now the question is "should the SCC handle this problem?", to me it's a problem internal to the battery and it's the BMS' job to handle these problems, the job of the SCC is to handle the charging profile and charging problems, unbalanced pack is not a charging problem.

The way I see things the BMS detect this problem, warn other devices that it'll disconnect the battery and then disconnect the battery; in the mean time the SCC has been warned and has disconnected the PV panels to not harm itself.

I think we are on the same page, and to an extent saying the same thing in different ways.
At the end of the day the BMS is only in charge of protecting/managing the battery, and capable of cutting charging/discharging, but also responsible for communicating battery conditions and alerts. I agree that the SCC should decide how to proceed given the info it receives from the BMS. This is what I was trying to articulate, but was maybe not as clear as I meant to be.

the job of the SCC is to handle the charging profile and charging problems, unbalanced pack is not a charging problem.

Unbalanced pack becomes a charging problem, once an individual cell exceeds over/under voltage limits. It could be left to the BMS to just cut charging/discharging at this point as a last resort, but you could just as easily communicate these conditions to the components and they could cutoff charging directly. Either could work, both would have upsides and downsides, and ultimately accomplish the same thing. And ideally, with a well balanced pack or a BMS capable of substantive balancing, this wouldn't be a problem that would be encountered.
 
I think we are on the same page, and to an extent saying the same thing in different ways.
At the end of the day the BMS is only in charge of protecting/managing the battery, and capable of cutting charging/discharging, but also responsible for communicating battery conditions and alerts. I agree that the SCC should decide how to proceed given the info it receives from the BMS. This is what I was trying to articulate, but was maybe not as clear as I meant to be.

Yes, exactly, sorry if I wasn't clear too.

Unbalanced pack becomes a charging problem, once an individual cell exceeds over/under voltage limits. It could be left to the BMS to just cut charging/discharging at this point as a last resort, but you could just as easily communicate these conditions to the components and they could cutoff charging directly. Either could work, both would have upsides and downsides, and ultimately accomplish the same thing. And ideally, with a well balanced pack or a BMS capable of substantive balancing, this wouldn't be a problem that would be encountered.

To me it's a problem more important than just a charging problem; the pack should be immediately taken offline because something is seriously wrong, not just stop the charging.

I think BMS should handle charging cut off in an unbalanced situation. Most SCC's do not have a "shut down by remote" feature.

That will be my main problem as the SCC and inverter will not be DIY, I'll see what I can translate to TCP/IP with an arduino/RPi but my hopes aren't super high...


BTW I'm currently doing the schematic for the cells voltages measurement circuit on KiCad now that I've selected the main components for it. Not really fast as it's been more than a year I launched KiCad but I'm getting there :)
 
  • Like
Reactions: Dzl
I think BMS should handle charging cut off in an unbalanced situation. Most SCC's do not have a "shut down by remote" feature.

My thinking was that the BMS would both cutoff charging AND send a shutdown signal to SCC's that are capable of this input (I believe Victron products are capable of this, yeah?). Ideally sending the shutdown charging signal prior to reaching the absolute cutoff threshold, but always taking charge of cutoff if it reaches a dangerous threshold. My thinking is the BMS would be the failsafe and the method of last resort, but if it could communicate with the charge sources to cutoff charging more elegantly first, that would be better. But honestly, I know enough to know a little, but don't fully understand the itnricacies of what I'm talking about it here. Just trying to logically think through how the system should/could operate.
 
My thinking was that the BMS would both cutoff charging AND send a shutdown signal to SCC's that are capable of this input (I believe Victron products are capable of this, yeah?). Ideally sending the shutdown charging signal prior to reaching the absolute cutoff threshold, but always taking charge of cutoff if it reaches a dangerous threshold. My thinking is the BMS would be the failsafe and the method of last resort, but if it could communicate with the charge sources to cutoff charging more elegantly first, that would be better. But honestly, I know enough to know a little, but don't fully understand the itnricacies of what I'm talking about it here. Just trying to logically think through how the system should/could operate.
Yes having the shutdown to the scc controller is a great option. I do not know much about victron but all the other ones I know of do not have this option. But having it available would be a good thing
 
Yes having the shutdown to the scc controller is a great option. I do not know much about victron but all the other ones I know of do not have this option. But having it available would be a good thing

I'm pretty sure (but not certain) that Victron components can at least receive a shutdown signal from their BMS, not sure if it works with non-victon components though.
 
I attached a PDF of the actual schematic to this post. I didn't had time to add the ADC as it's not included in KiCad and the component symbol doesn't exists on Mouser so I'll need to create it from scratch and it's currently almost 3 am here and I really need to go to sleep... :p

Hope you love the hack of using the unused op-amp (U4D) of the first cell to level-shift the output of the high-side mux (IC11), I'm pretty happy to have found this trick :)

All the resistors on the left are 100 kOhm 0.1 % (I know that 0.1 % resistors are a lot more expensive than 5 % ones but that way we don't need to calibrate 16 values in software, well worth a few $ IMHO...).

The third mux in lower right (IC13) is the final mux who select between high-side voltages, low-side voltages, temperature sensors (from a 4th mux) and current shunt. There's room for 4 more things to measure if needed.

The name comes from BiduleOhm's BMS 16s 300A, not really original but I can't find better for now, so...
 

Attachments

  • BOBMS1630.pdf
    68.5 KB · Views: 62
I'm in the middle of making the temp sensors circuit and I need to know what temperature (measured on the cell case surface) would you consider being an under temperature condition? same question for an over temp? (the software limits are user editable but the hardware limits will be set by the components values, that's why I ask)

Personally I would put 0 °C and 50 °C but i don't know if it's ok for everyone (in a warmer country for example).

Also I'll have the same question for under and over voltage? (ideally I need to know each for LiFePO4, NMC and LTO so I can provide values for everyone).

I'd say 2.2 V and 3.6 V for LiFePO4, and 3.0 and 4.0 for NMC, I have no idea for LTO.

NB: that's the super critical limits, software limits will be more conservative (for example 5 °C and 40 °C), the hardware limits are a backup to the software limits, they should never be reached (the only way they would is either a bug in the code, or a software freeze who can't be recovered by an hardware reset from the watchdog).

NB²: the voltage per cell is limited from 1.25 V to 4.0 V (lower and the BMS isn't guaranted to work properly, higher and you start to endanger some components).
 
Last edited:
LTO upper limit is 2.9 for hardware I would say and 1.5 for lower they can be discharged to 0 but after 1.5 they might as well be zero.

Here is a datasheet
 

Attachments

  • LTO-40AH-CY_datasheet.pdf
    281.4 KB · Views: 9
Ok, so 2.9 is safe for the LTO then, thanks ;)

Edit: that's only voltage sensing for the voltage the battery should never go under/over whatever you're doing with it (charging, discharging, anchoring a boat...)
 
I'm in the middle of making the temp sensors circuit and I need to know what temperature (measured on the cell case surface) would you consider being an under temperature condition? same question for an over temp? (the software limits are user editable but the hardware limits will be set by the components values, that's why I ask)

Personally I would put 0 °C and 50 °C but i don't know if it's ok for everyone (in a warmer country for example).

Also I'll have the same question for under and over voltage? (ideally I need to know each for LiFePO4, NMC and LTO so I can provide values for everyone).

I'd say 2.2 V and 3.6 V for LiFePO4, and 3.0 and 4.0 for NMC, I have no idea for LTO.

NB: that's the super critical limits, software limits will be more conservative (for example 5 °C and 40 °C), the hardware limits are a backup to the software limits, they should never be reached (the only way they would is either a bug in the code, or a software freeze who can't be recovered by an hardware reset from the watchdog).

NB²: the voltage per cell is limited from 1.25 V to 4.0 V (lower and the BMS isn't guaranted to work properly, higher and you start to endanger some components).

Anyone else opinion?

Also I wonder what is the standard for the current reading sign as I've seen both; i.e. charging = positive reading, discharging = negative reading, or the opposite?

I err on the side of charging is positive and discharging is negative.
 
Thanks for your input ;)

Ok, so something a couple °C higher than 0 °C, the exact value will be determined by what's easier to do with the standard components values and what I've already used (I try to do a lot of BOM reuse mainly to limit the cost).

Actually the temp sensor used will be the TMP36 (lower cost than a LM35D and can go from -40 to 125 °C instead of 0 to 100 °C) and it has a guaranteed absolute accuracy of +/- 3 °C (but the typical value is twice better than that) so I'll probably choose something around 3 to 4 °C to be even safer.

BTW we are at the $50 mark for now but there's a lot missing (especially the disconnect which will have a relatively high cost because of the mosfets).

Also, ethernet is awesome aside from one thing: it's power hungry :p 150 to 180 mA @ 5 V (that's like 3 times the total current of everything else on the BMS) but I don't have the module in my hands yet so I don't know the precise value for now.
 
Last edited:
BTW we are at the $50 mark for now but there's a lot missing (especially the disconnect which will have a relatively high cost because of the mosfets).
Have you considered placing the mosfets on a “modular” daughter board, replaceable by a terminal strip for those of us wanting to use external shunts and high-amperage relays?
 
Have you considered placing the mosfets on a “modular” daughter board, replaceable by a terminal strip for those of us wanting to use external shunts and high-amperage relays?

Yes, that's exactly what I planned to do ;)

I'm even debating separating the main disconnect and the precharge circuit into 2 boards. I guess I'll see when I'll be at this part.

Low limit needs to be lower than 0degrees C for use with LTO cells

That's a very good point. I can do the same thing as for the voltages and have something selectable accordingly to the battery type. What do you think would be a good value for LTO?
 
Yes, that's exactly what I planned to do ;)

I'm even debating separating the main disconnect and the precharge circuit into 2 boards. I guess I'll see when I'll be at this part.



That's a very good point. I can do the same thing as for the voltages and have something selectable accordingly to the battery type. What do you think would be a good value for LTO?
-30 C
 
Back
Top