Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TI BQ769X0 Based Monitors - Project thread
It havet critical top voltage that you set. Aka set 4.1v and as soon you are above that it bleeds. its it balancing as such but high voltage bleed
The Ultimate DIY Solar and build place
YouTube / Forum system setup / My webpage  Diy Tech & Repairs

Current: 10kW Mpp Hybrid | 4kW PIP4048 | 2x PCM60x | 100kWh LiFePo4 | 20kWh 14s 18650 |  66*260W Poly | ABB S3 and S5 Trip breakers
Upcoming: 14S 18650~30kWh
Well that sucks... the BQ chip based cell balancing doesn't support balancing adjacent cells. And now that I think about it, I have no idea why I decided to use the BQ's built in balancing function. The current balance board setup is "dumb" - it'll balance whether or not the on-board microcontroller is functional. So that means for me to balance: I have to write i2c to the BQ chip and have tell it to balance a specific cell. Then I have to check to see whether adjacent cells are balancing or not and then adjust accordingly.

What I'm starting to think I should have done is to setup i2c to the balance board and let a microcontroller on the balance board enable and disable balancing - that way it doesn't matter if two adjacent cells are balancing at the same time or not... Darn

Top bleeding might not be the best way to do it though... if I start "balancing" at max voltage - i'll still have issues. If for example I have a pack much higher than the others, if it gets to 4.1v first (which I'm assuming is as high as any powerwall user would use), it will only be able to bleed at 4A max. But the issue is that most of us are charging at pretty high amperages, I'd hope much more than it can bleed off. So I'd need to start bleeding before I get to max voltage.
Ok so I've learned a lot - and most of it was painful.

What does work - the mosfets on the balance board are happy - and balancing works as intended.

1) I hooked up all of the balancing mosfets backwards.... (mega facepalm) I fixed it on a single board, but I'm gonna need new boards made. Ugh.
2) Most of these arduinos and esp chips have totally non-functional voltage regulators. They are rated for just barely enough current to run, and half the time not even that. Also, they are supposed to be rated for 12v but definitely don't do that. So I need to basically put a real voltage regulator on the board, and feed the 3.3v straight into the mcu. I was using a buck to get down to 5v and feeding that into the board - which is supposed to use it's own regulator. Somehow I managed to burn the LDO on the wemos d1 - which is odd because it was only connected to the wemos board itself and a max of 1ma current for pulling up the i2c lines
3) I found much cheaper connectors - so that'll save me some $$
4) I should use the i2c isolator from stuart's design on the balance board - as that'll allow me to i2c into the balance boards.
5)Don't drop the board after placing the components but before soldering......
6)I screwed up the RegSRC and REGOUT - I didn't use a voltage follower per the diagram (I just left it disconnected) which is an issue since well, it needs this to do all of its internal stuff. Since I have a 5v regulator, I should hook it into that, as a higher voltage causes issues (or I need to use a voltage follower as shown in the applications diagram)

6)The library is backwards for how the arduino ide compiler works. Basically it's been writing junk data to the registers - this is because I'm guessing the original ARM compiler does unions starting with the most significant digit, while the arduino compiler does it the opposite - so basically I need to swap around all of the unions used for saving values to the BQ register. Didn't notice this till now because only some parts of the code use the union/struct to setup bytes to save to registers. The other ones use bitwise operators - so they are agnostic and don't care how the compiler decides to use MSB/LSB for union/structs.

7)The duty cycle for balancing is only 75% - so that means it turns on and off every second - might need to check that the inductance of the system isn't creating issues.
Korishan likes this post
(03-02-2019, 04:34 AM)Mikethezipper Wrote:  ....... it will only be able to bleed at 4A max. But the issue is that most of us are charging at pretty high amperages, I'd hope much more than it can bleed off. So I'd need to start bleeding before I get to max voltage.

When any cell is in bypass, the BMS needs to signal to the charge system that a lower charge rate is required, the exact point that the signal is issued could be 1, immediately a cell goes into bypass 2, when bypass resistors reach a certain temperature 3, when bypass current reaches a certain rate.

The above obviously requires chargers that can be programatically controlled.

If you dont manage the charge current (when cells are in bypass) you'll need to thermally manage the bypass resistors, or risk thermal damage.

Also, in order to ensure each cell is fully charged, you need to monitor individual cell tail current, and signal when the rate has fallen below a determined level, remembering that fully charged is not determined by overall, or individual cell voltage.
Well, I've been thinking about it and I think what I'll do is set two voltages - one which'll be the absolute max voltage - at which the charge controller will be disconnected from the pack - and the other is the Target max voltage - which will get the median of the cell's voltages and stop charging once it gets to that.

So let's say my target voltage is 4.0V, and I set my absolute max at 4.1v.

The system will allow for charging until either A) the overall median cell voltage reaches 4.0v OR B) any one cell gets up to 4.1v

This way, if the system is balancing, it won't stop charging the whole battery at 3.9v because a single pack got to 4.0 before the others. And then I'll set it up to just do balancing at any point in which the cells are above 3.3v and the overall max-min cell variation is greater than .08v (or whatever).

So the system won't care whether it is charging or not, and won't adjust any current based on what's going on.
Adjusting the charge controller current output is just out of the scope of this project.
Korishan likes this post
I've been thinking even more - and I've decided that I'm going to completely separate out the balancing from the BQ board. Right now, the balancing is controlled by the BQ board. But this causes a couple huge issues:
I need to add 5 conductors to any cable connecting the two boards - which pushed me towards using thinner cables
I can only balance a max of 3 cells per each group of 5 cells at a time - with no adjacent cells being balanced.

I've decided to just use i2c isolators on the balance boards - and to have the nanos on the balance board control the balancing. This will mean that I can use much beefier and better suited molex 6-pin connectors which have a much higher current capacity , I can balance adjacent cells (any number), and I don't have to worry about the BQ chip's internal transistors or sending additional analog signals. Progress has been slow on this since I am making updates and debugging on 3 different boards and programs all at the same time.
(01-14-2019, 03:19 AM)Mikethezipper Wrote: Ok, I'm going to retract my "Won't share till it works" statement , I forgot I'm both not an EE, and not particularly smart.

I have shared the current existing diagram and board in EasyEDA - Note that I have immediately found issues with it - Primarily that the SDA and SCL should go to pins D1 and D2 - also, that I should hook up the Boot (aka T1 pin from the BQ chip) so that the MCU knows if the chip is even on (although I think Regout could do the same trick).

I also learned that the ESP8266 (or ESP8285) can't be powered by REGOUT from t he BQ chip - the datasheet says it should be able to do it, but it doesn't Sad Also, generally best NOT to use the voltage regulator on the BQ chip if you can use a separate chip that can handle more power.
Also, there are ~ 7 different BQ76930 chips  - different chips have different i2c addresses. I was unable to communicate with the chip until I did an i2c scan to figure out that the default 0x18 address is for every chip besides the one I got from LCSC.

When using the libresolar library, it would time-out the esp chip. I had to comment out the section for the bootcheck since it would just time-out the esp chip.
I will be updating the Github with the latest code:
Now I'm having trouble just generally communicating with the chip.

My test setup is an 8s holder hooked up, with the appropriate pins shorted for the BQ. The output is for some reason saying that the Overvoltage and Undervoltage are both tripped, even though that's not possible.

Hopefully I can figure it out on my own, but if anyone wants to help out, you can comment here or the Github.
How can we check the parameters of BMS, whether they are working as you planned or Not?
Such as, Over Voltage Protection, Over-Discharge Protection, etc. Did You create any simulation circuits for this purpose?

Forum Jump:

Users browsing this thread: 2 Guest(s)