Go Down

### Topic: Solar Battery Bank Balance (Discharge 1 bank) (Read 1 time)previous topic - next topic

#### toxsickcity

#15
##### Apr 19, 2018, 01:21 pm
I came for support to build a project.

looks like I will just trial and error this bastard into submission

thanks for all the concerns.. Im happy with my setup. it works for me.. well kind of..

#### Daz1712

#16
##### Apr 19, 2018, 02:44 pm
It does not end here as there are others out here.

Have been thinking about this (and watching an episode of Bull Tv series).

Claims on wireing and what the incorrect wire can do can be right but i would not be making statements unless i could see and do testing myself.

The comany a worked for ran a 12 volt 4400 Ah backup supply that would supply 500 amps continuous from a 3 phase power supply and 2 banks of 2 volt 2200 Ah cells and yes they were big!
Each cell measured half a meter square and stood almost a meter tall, there were of course 12 of them and they were wired  series parallel with the connections to the controller off one end as per instructions from the company.
It worked! The wires were almost 20mm of copper.

We all know that there are optimal ways of wireing but physical space does not always comply with the theory of optimal.

Enough of that.

In reguards to your question, i am currently working on a system to go in my car (much less nerve racking than the thought of shorting a system capable of delivering 1000 amps ar 13.8 volts for 30 minutes).
It will be set up to run my car fridge and other electronics off the main car battery and a jumpstart pack which it will switch the load to before the main battery gets to low.

Any how i have looked at how to monitor the voltage on both batteries as well as amperage in and out of both.
I wanted to use the Arduino to control and store data but how? when the batteries operate between 0 and 16 volts.
I want to display voltage to two decimal points but the 1024 steps of the a to d dont give that resolution.
Then i realised that anything below 10 volts is useless to me!
Yay the good old Zenar!  Working on a voltage swing of 10 to 18 volts and using an 8.2 volt zenar inline to drop my voltage followed by a voltage divider  of 2K7 and 2K2 ohms gave me a voltage swing of 0.8 to 4.4 volts, purfect for the Arduino 5 volt input.

So by using the above and setting up another to handle 24 volts you can now monitor the two banks and set off an alarm if an inbalance occurs.

And yes i know the above COULD have ways of going wrong (lets face it Adruinos are cheap) but i did say i was working on it and it does not involve op amps masive voltage dividers or optocouplers.

Using a cheap boost/buck converter from ebay to run the Arduino off the battery bank is not hard.

Once in place you can start looking at more data and narrow down the faulty units, it will at least cut the problem in half.

Please dont set up a system that discharges the higher bank that seems wasteful.
Look at the way they do lithium cells in a pack this could be used for your system as well.

Still if you have cells that are not at full capacity (a speculation not a fact at this time) then the string will only run at the lowest capacity.

Could you tell me what is the largest current draw and how long it would go for?

Hope this gives more to think on and wait for more questions.

Daz

#### TomGeorge

#17
##### Apr 19, 2018, 03:40 pmLast Edit: Apr 19, 2018, 03:41 pm by TomGeorge
Hi,
This will would be the easiest to measure your banks voltages, using some simple maths to get the top bank's voltage level.

It will identify which bank is lower, but not if it is only one battery in the bank.

Sealed batteries unfortunately do not make individual battery condition easy to establish.
Wet cells of course, all you need is a hydrometer.

You need to find the suspect batteries not try and discharge or charge a complete bank.

If you have a DC clamp meter you can check your link currents, with the banks completely unloaded and with no charging.

Checking the current in each link will tell you where your suspect batteries maybe, the current will be flowing into them and dragging the good ones down.

However if you have a battery with high series resistance, then an individual load test is probably another alternative.

Tom.....

Everything runs on smoke, let the smoke out, it stops running....

#### Daz1712

#18
##### Apr 19, 2018, 04:19 pmLast Edit: Apr 19, 2018, 04:20 pm by Daz1712
Hi,
This will would be the easiest to measure your banks voltages, using some simple maths to get the top bank's voltage level.

It will identify which bank is lower, but not if it is only one battery in the bank.

Sealed batteries unfortunately do not make individual battery condition easy to establish.
Wet cells of course, all you need is a hydrometer.

You need to find the suspect batteries not try and discharge or charge a complete bank.

If you have a DC clamp meter you can check your link currents, with the banks completely unloaded and with no charging.

Checking the current in each link will tell you where your suspect batteries maybe, the current will be flowing into them and dragging the good ones down.

However if you have a battery with high series resistance, then an individual load test is probably another alternative.

Tom.....

Um tom, is that an Arduino? Are you running 24v direct into A1?

Daz

#### Robin2

#19
##### Apr 19, 2018, 04:23 pm
thanks for all the concerns.. Im happy with my setup. it works for me.. well kind of..
Assuming that the problem has arisen because you have all the 12v batteries in a parallel row on each side and only joined in series at the ends, then it may be worth reversing the order of the 12v batteries in each row so that the ones at the tail are now at the front, so to speak. The batteries that are presently at the tail are likely to have been used a little less.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

#### Daz1712

#20
##### Apr 19, 2018, 05:27 pm
The question was,
I want to build a battery monitor as im having problems with the two strings balancing.

Change the batteries that are faulty.
Your wireing is wrong.
Rewire this way.

Good advice but not an answer to the question folks, especially based on the small amount of info available about the battery problem.

If we were working on the actual battery problem then here are some questions that should be asked.
######################################
Which string of batteries is it that are low the 0 to 12v or the 12 to 24v?
Is it the same string that goes low all the time?
Is anything else hooked on the batteries at any point?
Have you disconnected the posatives from all the batteries, waited several hours and checked the 'At Rest' voltage of each? How many were low?
Are you able to check the cells with a hydrometer? Are they all the same?
Have you followed the charging instructions on the batteries?
######################################

The only way to really know what is going on with the batteries is to treat each battery individualy, running a charge and discharge on each to find its capacity then checking all your connections for good conductivity if you find all batteries are OK.

Daz

#### Robin2

#21
##### Apr 19, 2018, 06:52 pm
Good advice but not an answer to the question folks,
You have not attempted to answer the question either - for very good reasons IMHO.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

#### Wawa

#22
##### Apr 19, 2018, 11:18 pmLast Edit: Apr 19, 2018, 11:21 pm by Wawa
If batteries of a bank are wired as two in series, then voltage between the two could give some info about which one of the two is in a worse state.
Example: If the whole bank drops to 24volt, and all the mid-voltages are ~12volt, then there is no ballancing problem.
If one mid-voltage of the bank shows 11.5volt or 12.5volt, then there is something wrong with that set.
This is basically the same as measuring individual cells in a pack, only now with batteries of a bank.
INA219 breakout boards could be used to measure all those mid-voltages,
AND the charge/discharge currents of the sets across shunts between the two batteries.
Leo..

#### INTP

#23
##### Apr 19, 2018, 11:24 pm
Answer is, don't. Just buy a premade battery monitor. Your use should have been monitored this whole time. How far were the batteries discharged? Even 'deep cycle' batteries should stick to about 50% discharge, even though they can withstand 80%, depending on battery and system. I can't even make sense of how you have your batteries hooked up. It sounds like you have series pairs of batteries that are then paralleled. What's your charging voltage? Is your system 24V?

Please explain what it is you want the Arduino to do. Because if the bank is discharging unevenly and they're connected in parallel, then there is nothing for you to do short of disconnecting the faulty bank when it gets lower than the other, and basically just run on half of your batteries and making them last half as long. And if that was your intention, you need a relay that can handle that wattage. 'Pull a load on the blah blah blah' You're going to need to spell that out because I have no idea what that bit means.

The short of it is, you are trying to fix something before you have even bothered to understand the problem. That often leads to unnecessary effort and money, which I don't think you're too eager to spend much of either.

All it may take, as a sensible first step, is to stop by an AutoZone or some such shop that offers free battery health checks. Since you have so many, tip the poor guy. Find out which battery isn't up to snuff. Then come back here and stop ignoring the advice given.

#### TomGeorge

#24
##### Apr 20, 2018, 12:04 am
Um tom, is that an Arduino? Are you running 24v direct into A1?

Daz
Not my diagram, and the OP has mentioned he/she will be using potential dividers on each of the analog inputs.
Tom...
Everything runs on smoke, let the smoke out, it stops running....

#### Daz1712

#25
##### Apr 20, 2018, 12:51 am
You have not attempted to answer the question either - for very good reasons IMHO.

...R
Have a look at #16

Daz

#### Daz1712

#26
##### Apr 20, 2018, 01:03 am
Answer is, don't. Just buy a premade battery monitor. Your use should have been monitored this whole time. How far were the batteries discharged? Even 'deep cycle' batteries should stick to about 50% discharge, even though they can withstand 80%, depending on battery and system. I can't even make sense of how you have your batteries hooked up. It sounds like you have series pairs of batteries that are then paralleled. What's your charging voltage? Is your system 24V?

Please explain what it is you want the Arduino to do. Because if the bank is discharging unevenly and they're connected in parallel, then there is nothing for you to do short of disconnecting the faulty bank when it gets lower than the other, and basically just run on half of your batteries and making them last half as long. And if that was your intention, you need a relay that can handle that wattage. 'Pull a load on the blah blah blah' You're going to need to spell that out because I have no idea what that bit means.

The short of it is, you are trying to fix something before you have even bothered to understand the problem. That often leads to unnecessary effort and money, which I don't think you're too eager to spend much of either.

All it may take, as a sensible first step, is to stop by an AutoZone or some such shop that offers free battery health checks. Since you have so many, tip the poor guy. Find out which battery isn't up to snuff. Then come back here and stop ignoring the advice given.
Why not peruse the whole post.  Say to #8 where the diagram is?
And #1 where he says what he wants the Arduino to do!

So in short, poster asks for how to hook up an Arduino to monitor the batteries at the mid and end point and how they go about programming it and you berate him for not reading (which you dont seem to have done) and not understanding the problem which was the reason this started.

Does not seem helpfull.

Daz

#### INTP

#27
##### Apr 20, 2018, 03:57 am
Read my post again. I ask for clarification of what he said. So, in short, I must've read it in order to be confused in the first place. Kthx move along.

#### Robin2

#28
##### Apr 20, 2018, 09:34 am
Have a look at #16
I did.

I could not follow it.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

#### munge83

#29
##### Feb 10, 2019, 11:00 amLast Edit: Feb 11, 2019, 07:27 pm by munge83
@toxsickcity

I'm understanding your struggle.
I'm hawing the same issue with my 24V solar sistem and looking for the solution. I found of the shelf devices that do exactly what I need but they are so expensive that you can build your one for the 1/10 of the price.
I'm also understand that my batteries are on the end of there life, but this is learning proces for me and I want to convince myself that I'm wrong.

So this is what I did:

List of parts
1x Arduino Nano V3.0 - https://goo.gl/NkqSv8
1x Step Down Buck Converter - https://goo.gl/J2JNVa
1x 2-Channel Relay Module Shield - https://goo.gl/oPUoL1
1x 0.96 inch 128X64 OLED Display Module - https://goo.gl/Hunx2E
4x Halogen G4 12V - https://goo.gl/qwpbem
-- I'm using pre made voltage sensors but you can build then with these resistors;
2x 30k ohm ressistor
1x 10k ohm ressistor
2x 7.5k ohm ressistor

I'm not going to post the schematics at the time because I don't have time to do them now.
This is the code and picture of my device.

Here is the schematics , and I updated the code.

Code: [Select]
`#include <Adafruit_SSD1306.h> // Display Libaryint Rl_1 = 5, Rl_2 = 6;float dif = 0.5; // The difference between voltages as a condition for switching on the loadfloat v_min = 10.2;int input_1 = A1, input_2 = A2;int n = 20; // How many times is the average voltage measured float v1 = 0.00, v2 = 0.00; // volts inputfloat R1_1 = 29900.0, R1_2 = 40700.0; // calibrate the sensors by changing this values float R2_1 = 7500.0, R2_2 = 7500.0;Adafruit_SSD1306 display(4); void setup(){   pinMode(input_1, INPUT);   pinMode(input_2, INPUT);   pinMode(Rl_1, OUTPUT);   pinMode(Rl_2, OUTPUT);   Serial.begin(9600);   Serial.print("DC VOLTMETER");  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  display.display();} void display_init (float vi1, float vi2){  // Display   display.clearDisplay();  display.setTextColor(WHITE);  display.setTextSize(2);  display.setCursor(0,0);  display.print("B1: ");  display.print(vi1);  display.print("V");  display.setCursor(0,17);  display.print("B2: ");  display.print(vi2);  display.print("V");  display.display();    Serial.print("INPUT 1 V= ");  Serial.println(vi1,2);  Serial.print("INPUT 2 V= ");  Serial.println(vi2,2);    }// read the value at analog inputsfloat volt_1(){  float vout_1 = 0.00, vin_1 = 0.00;  int average_1 = 0, value_1 = 0;  for (int i=0; i < n; i++) {  average_1 = average_1 + analogRead(input_1);  delay(50);  }  average_1 = average_1/n;  value_1 = average_1;  vout_1 = (value_1 * 5.0) / 1024.0; // see text  vin_1 = vout_1 / (R2_1/(R1_1+R2_1));  return vin_1;  }  float volt_2 (float in){  float vout_2 = 0.00, vin_2 = 0.00;  int average_2 = 0, value_2 = 0;  for (int i=0; i < n; i++) {  average_2 = average_2 + analogRead(input_2);   delay(50);  }  average_2 = average_2/n;  value_2 = average_2;  vout_2 = (value_2 * 5.00) / 1024.0; // see text  vin_2 = vout_2 / (R2_2/(R1_2+R2_2));  vin_2 = vin_2 - in;      return vin_2;  }void loop(){  v1 = volt_1();  v2 = volt_2(v1);     display_init(v1, v2);        // Load #1  if (v1 - v2  > 0 & abs(v1 - v2) > dif  & v1 > v_min ) {    while (v1 >= v2 & v1 > v_min){      v1 = volt_1();      v2 = volt_2(v1);      display_init(v1, v2);      digitalWrite(Rl_1, HIGH);      delay(1000);      }    digitalWrite(Rl_1, LOW);      }        // Load #2  if (v1 - v2  < 0 & abs(v1 - v2) > dif & v2 > v_min ) {    while (v1 <= v2 & v2 > v_min){      v1 = volt_1();      v2 = volt_2(v1);      display_init(v1, v2);      digitalWrite(Rl_2, HIGH);      delay(1000);      }    digitalWrite(Rl_2, LOW);    } delay(600);}`

The device draws 20mA of current when idelig and about 80mA when relay kick in.

Go Up