Automatic Dog Water DishMy dog gets a lot of exercise. As a result, he drinks an awful lot of water. Refilling his bowl manually is a time-consuming task and sometimes I forget. I've tried various "fountain"-type dog dishes with internal reservoirs, but I found that they get really nasty really quickly, even the ones with filters. I guess circulating the same water again and again with the dog spit and drool makes for a healthy breeding ground for bacteria.
Anyway, I decided it was time to build an automatic water dish that refills itself. I bought an icemaker water hookup (designed to attach the icemaker in a fridge to the water supply) and my friend Frysteev helped me plumb it in. The tiny 1/4-inch water line runs to the top of my kitchen cabinets, where it enters an irrigation valve ($22). This valve then runs to some clear tubing, down from the cabinets and into the water dish. Also in the water dish are two sensor wires, one at the bottom and one at the top of the dish.
There's two sets of copper wires in the dish, protected by plastic piping. One is near the bottom and one is near the top. The theory of operation is that the system waits for the dish to empty. It then makes sure that it really is empty. Then, it wait a certain amount of time (say, 30 minutes to an hour) for the water in the dish to evaporate. Next, it turns on the water supply and waits for the upper sensor to register water. When it does, the water flow is turned off.
Everything is run by an arduino hidden inside a cupboard. Thanks to my friend Andrew Kilpatric for helping me figure out the best way to sense the presence of water. As it stands, to prevent corrosion and electrolysis, the water is only sensed once every 10 seconds and for only less than one millesecond. This should minimize the buildup of copper around the terminals. I'm using a 1-megaohm pulldown resistor to sense the presence of water, which has a resistance of about 100 ohms.
A 24V AC irrigation valve (designed to be used for garden watering systems) was used to stop/start the flow of water because it is pretty cheap and very reliable. There are numerous fail-safe features to prevent water overflow:
- It won't fill more than once every so often.
- It won't fill unless both the upper and lower water sensor are showing "no water".
- If the "upper" sensor doesn't get triggered within 30 seconds of the fill operation starting, the water is shut off and the system enters an "error" state, requiring a manual reset. This protects if the dog knocks the dish over or something.
Here's a video of it in action on Youtube:
View the Arduino source code for the dish here.
Here's a simplified schematic I made of my circuit. Excuse the simplicity -- this is the first time I've ever made a schematic. The diode on the relay may be facing the incorrect direction -- it is there to pick up the bounce-back when the relay switches off and prevent it from reaching the Arduino. The transistor is a PN2222A and simply provides the power to switch the relay.