Latching Solenoid Arduino

I'm trying to build an irrigation controller with the Arduino that runs off of a battery. I'm a software engineer, but an EE noob. I found the following latching solenoid valve that seems to be a good start.

I think I need a capacitor to provide enough power to latch/unlatch the solenoid, but I'm at a loss as to what else I would need to complete the circuit. Can anyone provide some guidance? I will be powering both the Arduino and valve via battery. Here are the specs for the solenoid valve.

GCS3051 two wire solenoid
6-18 VDC pulse (latch) depending on condenser.
Resistance: 3Ω.

Electrical data:
Required length of pulse: 20-100 milliseconds.

Electrical connections:
80 cm. PVC cable, 24 AWG

The 2-wire version is going to need 6-18V applied in both positive and negative directions. You need an H-bridge. Otherwise known as a brushed DC motor controller. There's a wide range of controllers with the 4A capacity you need. I would not bother with the capacitor if your battery can deliver that current.

For best efficiency on battery, I would choose a MOSFET based driver, not the older style LM293 motor drivers.

Which Arduino? Which battery?

Thanks for the response! I planned on using the a 9V battery along with the Adafruit Feather M0 board that includes WiFi; however, I've also considered a larger board (5V output), and possibly a 12V battery. I'll be running other sensors from this board.

I think based on your feedback the following motor controller would work with the 9V battery-

I looked at the technical sheet and it does use MOSFET drivers (

My biggest concern with the latching solenoids is that if the valve does not shut off, it will stay open indefinitely. I actually tested this with my Rainbird irrigation timer (I removed the batteries while it was running). I guess that's a tradeoff. Possible nasty water leak vs. power consumption.

I plan on creating a 4x4 garden bed with drip irrigation that would likely run no more than 1 hour a day. I assumed the capacitor would help under load to ensure there's enough power for the pulse, but I'm learning this stuff as I go along.

I've looked at the OSBee implementation, and it's an excellent place to start; however, the cost is a little high, and I don't think I need all of the features as long as I'm geared for a specific valve/battery.

A rectangular 9V battery cannot supply enough current. A capacitor may help in that case.

While most watering solenoids are designed to be used at 12-24V with mains power, a little searching should turn up low power ones which aren't latching.

That 9V battery may get the solenoid switch on and off with the help of a big capacitor - a few times, before it’s empty. And that’d be a massive capacitor: it would have to produce pretty much all the current, so you’re looking at supercaps. You need 6 mF to keep the voltage higher than 6V for 20 ms; 30 mF for a 100 ms pulse; based on the 3Ω resistance.

Well, your solenoid is an inductor so it takes a bit before that much current is actually flowing making it a bit better (it makes the calculation more complex - and you need to know the inductance as well).

You could try a 4700µF or 6800µF electrolytic first. Make sure you add a fast flyback diode on the solenoid to take care of the reverse current. A diode between cap and solenoid may also be useful, to prevent the solenoid from using the cap’s charge instead of the flyback diode. Add a suitable current limiting resistor between the cap and the battery, to protect your battery. 100Ω would do fine, keeping the instant current <90 mA.

in attachments there is a drawing on how I connected my latching dc valves.
I used 2 relay module as a H bridge, and a 8 reley module to control the valves. Arduino uses pin 4 to control the H bridge. It switches the hunter solenoid

But! There seems to be a short circuit when the solenoid is active(the solenoid is the source of the short circuit)…

Edit: I sent you a pm since, I am, as well, trying to make an irrigation system, and I think it would be nice if we could collaborate…

I can try to help, but it's the blind leading the blind. Once I get further along I can post my results as well. Right now I'm still trying to figure out my parts list and power requirements.

I have a quick question on how you're calculating the amount of power required for this solenoid (again I'm new to this stuff).

If I push 12V into the solenoid with 3ohm resistance, then the current draw is 4,000 mA. If I send a 100ms pulse, that's .00003 mA/hour current draw for each pulse (right?).

How is that going to drain a battery so quickly? I'm sure my math is wrong.

I get 0.111 mAh. There's 1000 ms in a second and 3600 seconds in an hour.

The rated capacity of a 9V battery might be something like 170mAh. That should get you 765 watering events (turn on + turn off) but that rating is only valid for very low currents. The best way to use the battery is to draw a low, constant current. At high current there's a lot of power lost in the internal resistance of the battery.

Open up a 9V battery and you'll see lots of very very skinny cells inside. They can't pass a lot of current without heating up. (Losing power.)

So at that kind of usage, you will get much less than half of the claimed capacity from the battery.

I don't know what type of latch valves the Holman units use as shown below, but we have used 2 of these for over 6 months now with 2 switching periods per 24 hour.

Thought if you could find the type they use maybe be of some help as they have the 216 type 9v alkaline.

in attachments there is a drawing on how I connected my latching dc valves.

  1. please don't hijack.
  2. the image you posted may do well in an art gallery, it gives no useful info on how things are connected.

A 3 Ohm resistance looks very much like a short circuit for many batteries - you get 3A at 9V, 4A at 12V. Definitely a short circuit for 9V block which can supply just a fraction of that.

To extend life maybe you should increase the value of that charging resistor further - 1k and your current is down to 9 mA. That way you should be able to trigger the solenoid once every 20-30 seconds (that's the time it takes to recharge a 6800 uF cap), and you can not trigger more than one solenoid every 20-30 seconds as you don't want more than one capacitor charging. Furthermore, if you have more than one solenoid (and more than one such cap) you need some electronic switches that allow you to charge them one by one upon startup.

Did you calculate the capacitance needed for 3Amp for 100-200ms with minimal volt drop during the pulse.
6800uF seems too small for that task.

I calculated using this calculator.

Doing it again I'm wondering what values I used...

3Ω load, instantaneous voltage 6V (that's the minimum the solenoid needs), 20 ms discharge time (minimum time required for the pulse), 9V supply, gives me just over 6 mF needed. So 6,800 µF should work.

100 ms time needs just over 30 mF. That's getting expensive. 33 mF, 16-25V electrolytic caps list at USD 4-4.2 a piece at Digikey. Charging that cap back up to 9V through a 1k resistor would take a few minutes...

Could be that it needs a minimum of 100ms@6volt, and only 20ms@18volt.

With that calculator I get ~220mF with an end-of life 9volt battery (7volt), 1volt drop (to 6volt), and 100ms.
That's 220000uF, or 0.22F.

One more recharge of such a cap and the battery will be truly dead... it'll also take ages for the voltage to be back up to 7V.

I think the conclusion should be "possible, but impractical".

small car battery????