Automatic Wet Food Can Dispenser for Cats

April 14, 2025
Description
Introduction
This project started as a joke from a family member, complaining that their cat would incessantly meow at 6 am sharp every day, rain or shine, to get a can of wet food: “Can you make me a machine to do it for me?”
Looking at the market offerings at the time, surprisingly nothing existed that can handle off-the-shelf cans of wet food (i.e. Fancy Feast) that doesn't involve pre-opening cans, putting them on ice/Peltier coolers, or use proprietary and expensive containers. And so the mission began to design a Rube Goldberg type contraption, and this is the result.
Functions
- Automatically opens and dispenses canned wet food
- Integrated trash bin for the can and lid
- Holds up to 9 cans in the hopper - Can be expanded with a longer hopper if desired
- Programmable feeding time with manual override
- Function for clearing out hopper in case the cans need to be swapped out
The simplified operation procedure goes as follows:
- Hopper dispenses can into waiting trolley
- Trolley grabs onto the can and advances it to the gantry
- Gantry lowers can opener and cuts lid
- Trolley advances to vacuum cup
- Vacuum cup grabs onto the lid and removes it
- Trolley advances can to outlet, then flips the can upside down onto waiting plate
- Lid and empty can are disposed into the trash bin
Hardware and Software Used
Hardware:
Full BOM is in the mechanical drawings in the attached PDF; it is too large to paste here.
Can opener holder is designed for a shell similar to this: https://www.amazon.com/dp/B083WL36T6
You will need to open the can opener and solder wires directly to the motor, bypassing the switch and battery compartment
Electronics:
Arduino Mega 2560
AdaFruit motor shield for the steppers
AdaFruit servo expansion shield for the servos
Custom IO Board (Gerber files attached)
The user interface is a regular 2x16 LCD, with an AdaFruit LCD backpack shield
SFX size computer PSU
BOM for IO Board:
QTY (2) G5LE-1 DC12 Relay or equivalent
QTY (2) G2RL-24 DC5 Relay or equivalent
QTY (4) 2N2222 NPN Transistor
QTY (8) 10K ohm Resistor
QTY (4) 560 ohm Resistor
QTY (4) 1N4001 Diode
QTY (8) Philmore Screw Terminal, 2 pin, 5mm pitch, or equivalent
QTY (1) Header strip, 8 pins
Wiring Diagram:
Full size wiring diagram included with the attached files. Some notes:
- Power comes from a computer SFX sized PSU. Will need to extract both the 5V and 12V outputs.
- The stepper pairs might need to be reversed depending on what direction they end up spinning. Simply swap one pair to reverse direction.
- Refer to the code initialization for the pin numbers as a second reference
- Shields are stacked with Mega on bottom, Motor driver in the middle, and servo shield up top. IO board can also be placed on the bottom of the stack for convenience.
- LCD module to be placed in the printed bezel, mounted to the top of the machine.
Code:
Arduino Code included with the attached files. Some parameters might need to be tuned (such as stepper direction, motor direction, etc.).
Code is split into functions for modularity and clarity:
- Main_Menu() - Runs the menu system on the LCD
- Set_Time() - Allows the user to set the current time
- extra_menu() - Allows the user to use auxiliary functions
- clear_cans() - Allows the user to clear out the hopper
- can_error() - checks for empty hopper
- Dispense_Can() - Runs the dispensing routine
- Open_Lid() - Runs the lid cutting routine
- Remove_Lid() - Runs the lid opening routine
- Home_Track() - Homes the track
- Home_Gantry() - Homes the lid cutter gantry
- track_error() - Checks for proper movement of track
- gantry_error() - Checks for proper movement of gantry
- Flip_Can() - Runs the flipping routine to dispense the food
- Drop_Can() - Runs the trash clearing routine
Printing Instructions:
Filament Material: PLA or PETG for everything except the Vacuum Gripper (use TPU)
Layer Height: 0.2 mm
Infill: 35%
Some parts will need minor supporting
Assembly Instructions
Assembly drawings in the attached PDF, with BOM and exploded views. some notes:
- Hopper is made out of acrylic or polycarbonate sheets, glued together
- Enclosure is made out of acrylic or polycarbonate sheets
- Base is made out of plywood
- Track is made out of UHMW
- Slider table is made out of UHMW
- Some screw holes are “drill in place” and thus are not marked on the drawings. Use appropriate pilot holes.
Demo and Usage Instructions
Usage is demonstrated in the video embedded in the introduction section. Make sure the hopper is loaded, and a plate is placed below the output chute. Feeding time can be programmed through the user interface.
After everything is set up, enjoy your newfound freedom!