Let's Print a Cat/Pet Feeding Device (Part 1)

published: January 2, 2021 — last modified: October 23, 2025

Do you own a 3D printer and would like to start a complex and challenging project? Then let’s print a fully functional, programmable cat or pet feeding device! 😄

In this multi-part series, I will guide you step by step through the printing and assembly process of all mechanical parts. I will also provide PCB layouts and examples for the required electronics, except for the controller. Here, the range of suitable controllers is too large to restrict you to a single solution.

I will provide all required files for free under an open source license.

About the Device

If you follow my blog, you may remember the original prototype of the cat feeder from 2017. After a few months in use, I started to develop an improved version of the device.

I went through several iterations using different technologies, but finally - as a result of the pandemic - the 3D printed version was the only feasible one. 😄

Composition

There is a turntable in the upper section of the device with five compartments. One of these compartments is aligned over the output funnel.

In the lower section is the gear box. It is a fully 3D printed worm drive, controlled using a NEMA 17 stepper motor.

Sensors

Under the platform, which has a transparent top layer, there are holes for sensors. Each compartment has a simple fill sensor using a IR LED and IR sensor. Also there is a position sensor, to align the turntable.

Interface Panel

On the front side is an input panel, with a four lines LCD display and a rotary button for inputs. Below this button are four LEDs to display various states.

Mode of Operation

The working principle is very simple. You fill dry food or treats into the compartments, at a specified time, the turntable rotates and the food falls through the output funnel into the bowl.

My design uses sensors in each compartment to program the device, just be putting food into them. Imagine this implementation:

  • The first compartment is defined for the food while you are at work. If you fill it, the food gets dispensed at 2 pm.
  • The second compartment is for food if you work late and gets dispensed at 8 pm.

Without the sensor, the device would just rotate the turntable at 2 pm and 8 pm. This could irritate your pet, because, if it hears the sound of the rotating turntable, it expects a treat or food. Using the sensors, filling the compartments will “program” the device. So if you fill just the second compartment, the turntable will only rotate at 8 pm, even if you fill it in the morning.

This is just an example how you could implement your controller. It is your choice, if you add all these sensors, or just the position sensor.

Requirements

Required Mechanical Parts

  • M3 screws with flat heads in various sizes (8mm, 12mm)
  • M3×5mm grub screws.
  • Rampa M3 × 8 × AD6mm insets or compatible. or compatible.
  • Long M3 screw (>40mm) to insert the insets.
  • 2 × ball bearing 6200 10×30×9 mm
  • 2 × ball bearing 16004 20×42×8 mm
  • NEMA 17 stepper motor with 5mm diameter D-shaft (almost any variant will work).

3D Printer Requirements

  • Largest parts are 180 × 196 mm, you need a printer bed matching this size.
  • 0.4mm nozzle.
  • You can print PETG and PLA.

I recommend printing most of the parts using PETG, except a few parts which need to be printed with PLA, because of the stiffness. If you following this guide, I assume you have enough 3D printing experience to replace the materials with matching ones if you like.

Electronic Component Examples

The following components are the ones I use in the shown images. The panels for the enclosure have holes which fit these components perfectly. Feel free to use your own components and design your custom input panel.

Filament Recommendations

  • Use a Prusa i3 MK3s printer..
  • Use Prusament PETG:
    • “Galaxy Black” or “Signal White” for the outer case.
    • “Urban Grey” for the gearbox.
  • Use Prusament PLA:
    • “Galaxy Black” for the axes and the platform.

The Base Plate and Gear Box

Let us start by printing all required parts for the base plate and the gear box. You will find all required files in the GitHub repository:

The Base Plate

  • File: LR2051-401A.stl
  • Material: PETG (Galaxy Black)
  • Layer height: 0.2 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Easy

The Gear Box

  • File: LR2051-101B.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.2 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Medium
  • Notes: Make sure there is no warping!
  • File: LR2051-102B.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.2 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Medium
  • Notes: Make sure there is no warping!
  • File: LR2051-103B.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.2 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Medium
  • Notes: Make sure there is no warping!
  • File: LR2051-104B.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.2 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Easy
  • Files:
    • LR2051-105B.stl (2x) (2x)
    • LR2051-121.stl
    • LR2051-122.stl
    • LR2051-123.stl
    • LR2051-124.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.2 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Easy
  • File: LR2051-107B.stl
  • Material: PLA (Galaxy Black)
  • Layer height: 0.2 mm
  • Print bed: Smooth
  • Supports: Minimum two raft layers
  • Difficulty: Hard
  • Notes:
    • Add a minimum of two raft layers.
    • Make sure the axis is oriented as shown.
    • Preheat the print bed and avoid a cold room temperature.
    • Carefully check for warping after print.
  • File: LR2051-108B.stl
  • Material: PLA (Galaxy Black)
  • Layer height: 0.1 mm
  • Print bed: Smooth
  • Supports: Minimum two raft layers
  • Difficulty: Hard
  • Notes:
    • Add a minimum of two raft layers.
    • Make sure the axis is oriented as shown.
    • Preheat the print bed and avoid a cold room temperature.
    • Carefully check for warping after print.
  • File: LR2051-111B.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.1 mm
  • Print bed: Powder coated
  • Supports: Add 10mm brim
  • Difficulty: Hard
  • Notes:
    • Add 10 mm brim.
    • Make sure the part is printed oriented as shown.
    • Preheat the print bed and avoid a cold room temperature.
    • Carefully check for warping after print.
  • File: LR2051-112B.stl
  • Material: PETG (Urban Grey)
  • Layer height: 0.1 mm
  • Print bed: Powder coated
  • Supports: No supports required
  • Difficulty: Medium
  • Notes:
    • Preheat the print bed and avoid a cold room temperature.
    • Carefully check for warping after print.

Bearing Mockups

Optionally, you can print the bearing mockups, the files LR2051-821.stl and LR2051-822.stl. You can use them temporarily as replacement for the ball bearings.

Conclusion

This is the end of the first part. In the next part of this series, I will talk about the assembly and how to properly insert the insets into the printed parts.

If you have any questions, missed information, or simply want to provide feedback, feel free to comment below or contact me on Twitter. 😄

More Posts

Fusion 360 Storage Boxes Insert Template

Posted on 2020-12-11— 3D Printing, Projects

I created a parametric Fusion 360 insert template for the flat storage box series and included a drill-insert example, STL files, and OpenSCAD scripts. Download the free files, tweak the parameters to fit your tools, and read the full post for setup tips and examples.

Read this post

Bottle Opener for Elderly People or with Disabilities

Posted on 2021-04-25— Projects

I designed a 3D-printable bottle opener to help seniors and people with limited grip turn 26–30mm plastic caps. The tapered 72-tooth socket adapts ±1mm and the handle has finger notches — print in PETG. Download the STL files and read the full post for print settings and tweaks.

Read this post

The Importance of Wall Profiles in 3D Printing

Posted on 2023-02-12— 3D Printing, Learn

I'm not a 3D‑printing expert, but I show how simple wall profiles — correct XY/Z thickness, chamfers, and internal recesses — make printed boxes stronger and lighter. I share CAD steps, simulations, and common mistakes in plain terms. Read the full post for practical tips to improve your prints.

Read this post

Write Less Code using the "auto" Keyword

Posted on 2019-07-12— C++, Improve your Code, Learn

I walk through practical ways I use C++11's auto keyword to reduce repetitive declarations, simplify range-based for loops, lambdas and register access, and make Arduino and embedded code easier to refactor. Read the full post for examples and tips you can apply to your projects.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 1)

Posted on 2017-02-08— How and Why

I walked through designing a cheap capacitive plant watering sensor, from goals and measurement options to component selection and early prototypes. I explain why I chose a CR2032‑powered op‑amp oscillator, ATtiny MCU and low‑power timer. If you’re curious, read the full post for details and test results.

Read this post

Tiny Particle Sensor Node with Decorative Case

Posted on 2019-02-23— Projects

I guide you through building a compact particle sensor node using a Raspberry Pi Zero W and a minimal custom shield, with published Gerbers, STL files and example code. I keep the design simple and extendable—if you'd like to build your own networked air-quality node, read the full post for parts, assembly and setup.

Read this post