Using MOSFET (or Relay) to tie Solar battery banks together

I am new to the World of Arduino, I am having a great time learning and building. I haven't programmed in 15 years but was surprised how quickly it came back to me!

My_Problem() {
I need to be able to connect and disconnect 48VDC battery strings from my Off-Grid Power System using the Arduino.

Background() {
I have an Off Grid Solar power system with 4 independent strings of 48V batteries. My PV Array will fully charge one string at a time, but not all four at once. I want to be able to fully charge the first string, then engage the second, third and fourth string as available power allows (only adding a single extra bank per day, disconnecting it at night). The system is out in the Woods and I am not on site to make the switches manually.

I have built the data-logging and voltage measuring shield, developed and tested the Sketch to check the voltage and decide which extra bank to add, and when to disconnect. Everything works great. The last step is to actually engage the 2nd, 3rd, 4th string.

I was originally going to use 3 relays controlled by the Arduino to pull bank 2 or 3 or 4 onto a bus containing bank 1. I could not find a suitable relay, rated for 100VDC and maybe 30A. The inrush current when connecting bank1 (@56V) and bank2 (maybe @ 48V) could be quite large.

I began researching NPN Transistors, which worked but would get too hot. On to MOSFETs. I thought I had it worked out with a N-channel MOSFET with suitable characteristics, but then realized the
DRAIN would be at 56V, the SOURCE at 48V and the GATE at 3V, and the problem is the Gate is not higher than the SOURCE.
Is my understanding correct? I'm looking at P-Channel MOSFETs now but I decided to ASK THE EXPERTS here as well.
Is there a better solution? I am not against spending some money (couple hundred $) on relays or components, I want reliability, efficiency is important too, there is not a lot of excess Watts around.

I know that for Solar, ideally you should have only 2 strings max, but I can get 12V 75AH Gel batteries literally for FREE! When I am on site, I can switch all banks on as I consume power to lessen the strain on the batteries.

What do you think? THANK YOU for your comments!

It does not matter if you use relays or MOSFETS or ... if you don't limit the current when you connect them together, you are going to let the magic smoke out of your switch. If you are planning on connecting a partially charged bank to a bank at full charge, you need to limit the current that flows between them until they come up to the same voltage, then you can connect them. Whatever you use to create the initial connection (when there is a significant difference in voltage) is going to need to be able to dissipate the voltage difference * current as heat.

Thank you for the reply. When I manually connect the fully charged bank (56V) to the partially discharged bank (48V), the banks equilibrate quickly, and do NOT pop the 56A DC breaker I have in line. Thus I surmise the amps crossing the 6AWG wire are less than 56A. I was looking for a relay in this safe range, which I could not readily find. Maybe the Solid State Relay (SSR)SS_Relay would work.

I also found an N-Channel MOSFET that has good specs but I am unsure of my wiring and understanding of how to connect. I thought I would just have Bank1(56V) on the DRAIN and the Bank2(48V) on the SOURCE, and drive the MOSFET with the Arduino, with appropriate pull-down and base resistors.

I've never used a MOSFET before, but I do not think my plan will work.
Maybe just use the SSR?

Most breakers like that I have seen are thermal breakers and can take a significant overload for a short period of time before they trip. With a relay, you run the risk of fusing the contacts together (especially if the one bank is down quite a ways) or at least burning the contacts. For a good, safe design, you need to limit the current when you first connect them. The old joke about the output transistor blowing to protect the fuse (or circuit breaker) applies here.

Thanks again.

I am not familiar with the old joke, please share it!

I will do some homework on the current limiting. I guess my experience thus far is that it was a minor enough issue that I had considered, but put on the back burner.

As I look at relays, especially Solid State, I see they need awfully large heatsinks. That means loss of Watts, something I want desperately to avoid.

So I am back to my question, Can I use an N-Channel MOSFET to connect the Positive of the 56V Bank (DRAIN) to the Positive of the 48V Bank (SOURCE)? Is my understanding of the GATE needing to be higher than the SOURCE a deathblow or is my poor MOSFET understanding evident?

Should I think of the Positive of the 48V Bank as being the Ground (Lower Potential) for the MOSFET wiring? The Negative of all the Battery Banks are tied together, as is the Ground of the Arduino.

Maybe something like this:

I have an Off Grid Solar power system with 4 independent strings of 48V batteries. My PV Array will fully charge one string at a time, but not all four at once. I want to be able to fully charge the first string, then engage the second, third and fourth string as available power allows (only adding a single extra bank per day, disconnecting it at night).

Don't understand why you want to do this.
Batteries is not like the fuel tank of a car.
AFAIK lead-acid batteries last longer when kept fully charged and discharged as less (%) as possible.
Efficiency also goes also up when discharge current (per bank) is lower.

What you are looking for are not called relays, although that is what they really are. Look for automotive starter solenoids. They can handle hundreds of amperes for a rather long time. Ask your local auto parts store. They will probably have only 12 volt units.

I just Googled for "starter solenoid" and see one priced at $13.00. May find some on Ebay, don't know.

My old 1982 Chevy Diesel had one to power the glow plugs, so that may also be a choice for you.


Leo, All true. I am trying to fully charge them as often as possible, thus the project.

Couple reasons why I do this:

  1. I get lots of free batteries. I have forty-eight 12V 75AH Gel Batteries. Four are connected in series to make a 48V Quad, then 3 Quad are paralleled to make a 225AH 48V Bank of 3 String. I have 4 such Banks. I have a long runtime and low drain (per string/bank) when all Banks are connected. I manually connect all Banks when I am on site, to reduce the per battery draw.
  2. I am on site only once a month or so. There is very little draw when I am not on site. The Banks should have plenty of time to fully recharge between my visits. They charge better when only 1 Bank is connected at a time.
  3. I can't afford to buy the number of panels that I would need to support the 4 battery Banks.
  4. Funny things happen when you have too many strings (as I do). Imbalance in the charge/discharge rates of individual batteries causes some batteries to overcharge and some batteries to undercharge.

Thus, I have broken my entire bank of 48 12V batteries into 4 Banks of 3 Strings each. I charge only 1 Bank of 3 Strings at a time, and that has been working. The project is to pull in the next Bank when the first string is fully charged. As I stated in the first post, I know I have too many strings for a conventional Off-Grid setup, and if this was a Solar Forum, they'd be kicking my butt!

So, my challenge is to try to pull in the next Bank.
Thanks for the reply!

Thanks Paul, my Solar system runs at 48V nominal, closer to 60V when fully charged. I assume I won't find many starter solenoid in that voltage range. I'll look though!

60V, how many amps?

I would use 2 relays, a heavy duty MAIN and a lighter duty AUXiliary with a power resistor in series and program them to operate in sequence, something like:

if(cuttin == true && digitalRead(AUX) == LOW && digitalRead(MAIN) == LOW)
  digitalWrite(AUX, HIGH);
  digitalWrite(MAIN, HIGH);
  digitalWrite(AUX, LOW);
else if(digitalRead(MAIN) == HIGH)
  digitalWrite(AUX, HIGH);
  digitalWrite(MAIN, LOW);
  digitalWrite(AUX, LOW);

Including safety interlocks, of course.


If you are wanting current to pass in both directions (charge and discharge), a single MOSFET cannot
do this(*). You need two back-to-back, ie a SSR designed for bipolar DC use. Two SSRs, one with a
current-limiting resistor in series, would allow two-stage switching to avoid high current spikes
(bad for your batteries).

A completely different approach might be to have a high current multi-position rotary switch driven by
a motor. Assuming that such a thing exists...

(*) power MOSFETs have what is called a "body diode", ie they have a diode between drain and source
that is an integral part of their structure. Power MOSFETs are different from their symmetric VLSI

I don't see this as a 5 component circuit. I thought of isolating the charge circuit and using the (+) of the low bank as ground reference, just to get manageable voltages for the mosfets. An opto isolator driving a PWM into a p-ch mosfet with a inductor to try and slow current. Of course there would have to be other components included for limiting and then discharging. There would also need to be something to disconnect when charged, or to connect another bank if it is to be a cascade type connection.

Ground referenced to the lowest battery bank but p-FETs?

A diagram might be needed

It is just what popped in my head, but I also realize it causes other issues.
Thanks for calling me on that. It forced me to go to my Photobucket acct in order to post a pic. I haven't logged in for a long time. I found a pic of my little buddy there. I'm 6'4", and he had 10lbs on me

Thanks everyone. I do NOT want to pass current back and forth. Bank1 is always connected to the PV Array so it will always be the highest potential. The other banks are to be pulled in once Bank1 is fully charged, around 56V. So the current should only pass to the added lower potential bank.

I do not completely understand how a MOSFET works, but if I think of the positive terminal of the lower potential battery (@48V) as the Ground/DRAIN in the P-ch MOSFET circuit, will this work? Do I tie the Ground of the Arduino to the Negative of the Battery (all banks have their Negative Terminals tied together), I'm sure I cannot tie to the the + of the 48V bank.

Here is a general pic of what I am thinking. I have not drawn the pull-up/downs, base resistors, etc. I am still trying to figure if this will work at all!

I got some ideas from gammon

"Switching higher voltages", 1/2 way down the page:
Things get more complicated again if we want to switch more than about 12 V, because we need to keep VGS within the specified range of VGS(max) for the MOSFET. Check the datasheet, but VGS(max) may be in the order of ± 15 V, possibly ± 25 V.

What a Hound!

Nice pooch, Bull Mastiff?

Nice pooch, Bull Mastiff?

English mastiff.
He was lean in general, but still weighed 180lbs. Smart too. Still have a female, but she's a tub at 220lbs and should be grateful breathing is involuntary or she'd be in trouble

If money is not an issue there is always the TE KILOVAC Series.

Seems silly to burn solar generated power in a non-latching power relay.

The ones from the link above consume ~320watt per day.
You need an extra solar panel and battery per relay to compensate for that.