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:
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.
[19 June 2015] I tried this code with two old Gardena valves, which have been used for about 4 years in an area with hard water. It opens the valves correctly, but they don’t close. Funny though, with the original electronics the valves work fine. I’m still investigating this issue and I hope to have a solution in a few days.
[14 July 2015] It seems that the valves close fine if they are placed in series with a 56 ohm/2W resistor. Also opening works fine if a 10 ohm / 2w resistor is placed in series with the valve. I’ve captured a few more waveforms with the original controller.
[17 July 2015] Finally found a solution that works, and it requires only 3 extra parts. I have edited some parts of this post and inserted a short explanation of how this works. No changes were made in the code.