In 2009, my wife and I adopted an overweight cat named Nermal. The Humane Society was concerned that she didn’t know when to stop eating so instructed us to feed her 1/3 a cup of dry cat food twice a day. I tried feeding her when I woke up and got back from work. Nermal got so hungry that she’d wake us up in the middle of the night, hours before her regular feeding time. It was also hard to keep her on the diet when we were out of town. We’d end up overfeeding her in fear that she would eat everything in one sitting. I hoped technology could solve the problem in the form of an automatic cat food dispenser.
I looked around for a pre-built solution and found a few promising candidates.
Prices seemed reasonable but upon further investigation they didn’t meet my needs. None gave confirmation of dispense. If I was away from my home I’d like to know that food was successfully dispensed into the container. Many things can happen to prevent a successful dispense such as power failure, jammed mechanism, or the container being empty. The only way I would get exactly what I wanted was to build it myself.
Revision 1
At the time I built the first revision I had access to gear motors, motor power boards, and an FDM rapid prototype machine. I decided to use a horizontal auger to dispense the food. Volume dispensed would be controlled by auger speed, diameter, and duration of dispense. A smaller diameter auger gives finer control of the dispense volume but is more likely to be jammed. I chose a larger diameter auger and sized it to fit inside of a 2” PVC pipe. A DC Speed Board was used to control the motor and auger. The board was custom designed by my employer and intended to control the amount of time and speed at which a DC motor runs upon receiving a specific control signal. The DC Speed Board would only run for a couple of minutes before it powered down. I needed it to work all day. To solve this problem, I used a programmable outlet timer (the same ones used for Christmas tree lights) to energize the circuit twice a day.
The initial build was crude: mechanical interconnects were made with masking tape, the frame was a repurposed detergent dispenser supported by extruded aluminum, and cat food leaked through the auger. However, it was able to successfully dispense the correct amount of cat food twice a day.
I left the dispenser one weekend to see how it performed. My cat was so hungry that she knocked it over and tore off the tape to get to the food in the reservoir. Since the machine was unproven, I had someone check on Nermal and they reported to me that cat food was everywhere, the dispenser was in pieces, and Nermal seemed content.
In addition to being susceptible to cat attacks, I discovered that verification was needed. All the cat food was eaten when I got home or woke up so I had no way of knowing if it went off.
Revision 2
It turned out to be a good time to start the design of the second revision. Over the next few months I improved the design and phased in the changes.
Dispensing at scheduled times was primarily controlled by again using a programmable outlet timer. Each time the timer activated, power was provided to the system. The DC Power Board was replaced by an Arduino with built in WiFi. Upon receiving power,
the Arduino would run a start up procedure, connect to the wireless network in my house, and activate a motor. A 12VDC motor was attached to an auger which was actually an off the shelf garden implement purchased off Amazon. The motor ran at a constant voltage for 9 seconds. The cat food was moved by the auger from the hopper down the chute breaking an IR gate. The Arduino would then send a message to my Twitter account (CFDispenser) stating the amount of time the motor ran and for how long the IR beam was broken. The Twitter feed could then be checked by any device with access to the Internet.
This time the dispenser was built to be tamper proof. The primary construction was PVC tubing held together by screws and rigidly mounted to the wall. A visible hopper was added so that it would be evident if it needed to be refilled.
Field testing (i.e. testing the unit in my apartment) revealed several failures. One of the first problems I ran into was noise. I was encountering several random seeming events a day. Research showed that my power supply was particularly noisy. I updated the supply with a new one meant to be used with microcontrollers. I also had problems with the Arduino activating the motor. A colleague suggested that it was caused by back emf from the motor and advised adding capacitors on the voltage regulator output and across the motor terminals. These two changes solved my noise problems.
A second major problem was that the IR sensors didn’t work very well. The cat food came out dispersed enough that the IR sensor was rarely blocked. I eventually ended up deactivating the sensor and running it without the food sense option. Twitter verification that the device activated was sufficient.
The cat food dispenser worked well for two years until Nermal took ill and had to be fed wet food in order to keep hydrated. I still have a laundry list of upgrades but probably won’t get to them until we get another pet.