In this blog post, I will show how to drive a water valve from a Gardena water timer/computer using Arduino Uno.
The controller I used in this example is — or better say was — a T14E model, but any other controller with the same water valve will work.
The idea came when my dog decided to take one of the water timers as his toy, and chewed it beyond recognition. The electronics and the case were completely damaged, but I was able to recover the water valve. So, why not try to control it with an Arduino? The are vast possibilities to explore: using a real-time clock to control it as the original electronics worked, or control it via wi-fi, etc.
As you can see in the above picture, the water valve uses a RCA connector for the control signals. I used the original electronics from another sprinkler to determine how it works, and the waveforms look like this, without the water valve connected:
With teh water valve connectes, the signals look like this:
Initially, I thought this is simple: a 9V negative pulse should have opened the valve, while a 9V positive pulse should close it. I used an Ardumoto shield to replicate this, but when doing extensive tests I went into trouble: some old valves open correctly, but they don’t close. Back to measurements, this time with the original controller and the valve connected. The results show for opening that a 500ms negative pulse is applied, and the voltage across the valve is about 7V. Considering the internal resistance of the valve winding, it looks that for opening there’s a 10-ohm series resistor in circuit working as a current limiter. For closing the series resistor is 100 ohms.
After many tries, I ended up with the following schematic:
With respect to the RCA sleeve, to turn on the water a 9V negative pulse with a duration of 500ms is applied. To turn the water off a positive pulse of 150 ms is applied to the center pin. The simplest way to replicate this is to use an H-bridge, such as the Ardumoto shield, but with a twist: a circuit made from two resistors and a diode is inserted in series with the valve.
The circuit works as follows: for opening the valve, the diode D1 is open, so the current flows both through the R1 (10 ohm) resiohmsr and R2 (1oo ohm) resistor. The voltage drop across the valve is about -7V. When closing the valve, D1 is blocked, and current flows only through R2. Voltage across the valve is 2.5 V. A little higher than the original controller, but it works fine.
The following code demonstrates how to turn on and off the water:
If things are not working either reverse the pins for the valve, or change in the code the dir_a from HIGH to LOW and from LOW to HIGH.
Below is a comment from my old website, with a code example for Esp-12E with the L9110 H-bridge module
I managed to find a sequence that worked for me and is very different. I am using NodeMCU Esp-12E with the L9110 H-bridge module. I have followed the diode / resistor bridge as described in the article.
The pulses I produce go from -9v to +9v and vice versa (and not via 0v) and I noticed that after a few seconds after the pulse I can disengage the H-bridge but not immediately.
The sequence that opens the valve for me is:
and the close is slightly longer wait reverse pulse:
Originally published at https://electronza.com on February 25, 2015. Moved to Medium on May 1, 2020.