1 / 21
Cat food dispenser — image 1
1 / 21

Cat food dispenser

Order a print of this model

We calculate the final price from your selected file. You review and accept it before payment.

Saved on this device.

Automatic cat food dispenser done with 3D printer parts. Melzi board or MKS gen L motherboard Tronxy X1, Tevo Tarantula

Rating
5 / 5
Likes
18
Downloads
66
Makes
0
Views
1,012
Reviews
1

Updated at source:

Model information

Category
Pets
License
Creative Commons — Public Domain

This I a simple cat food dispenser. 
I was inspired from PEDRO from Manuel Maeder with its fully 3D printed dispenser. 
The kit to build a PERDO can be found here by the way. 

I really liked the idea of using a NEMA17 stepper, as it has a lot of torque and can be controlled easily with a 3D printer mainboard.

The goal for me was to use only already available parts. And I wanted to link the device with home assistant (not give my cat access to buttons). 
I only used parts I had laying around from older 3D printer. 

------------------------------------ 

I would highly incentivize you to print it in PETG, even if PLA would look better. 
And the dispensing screw should be printed in PETG because the design take advantage of the flexibility to prevent food grinding. 
It is press fitted to the motor. If it's too loose you can use some superglue to make it stick. Or print it by adjusting the dimensions. Reducing by 1% or 2% won't make a difference on the dispensing.

I provided two feet types. Only tested one. And I also didn't test the tank extension. 
The main tank can hold about 1.2kg of food so I didn't feel the need to expand it. 
The files should print without support. 

 

Main features : 

  • Uses mainly old 3D printer parts
  • Use about 600g of filament
  • Can connect to HomeAssistant through EspHome
  • Send notifications when the tank is empty
  • Can use any size of NEMA17 motor
  • Can increase the tank size with infinite extensions (hold about 1.2kg of food by default) 
  • Can accommodate multiple motherboard: 
    • Melzi v2.0 motherboard (I used it from an old Tronxy X1)
    • MKS genL 
    • SKR 1.3, 1.4, 1.4 turbo, etc.
    • Every board with the ‘standard’ 102mm by 76mm hole spacing

 

Pars needed :

  • 4x M3 treaded inserts
  • 6x M3 x 6mm screws for the feet and to hold the mainboard
  • 2x M3 x 8mm screws to hold the stepper motor 
  • 1x old compatible 3d printer motherboard
  • 1x NEMA17  
  • 1x ir sensor (for empty tank detection). You can block the holes if not used.
  • 1x 12v barrel jack to receive power,
  • 1x 12v power supply
  • 1x ESP32 or ESP8266 (I used ESP8266, it is sufficient)  

 

Notes on the main tank

  • Two files are provided. One simple object. The one with modifier, allow you to import in PrusaSlicer and use the outside part as modifier to make a fuzzy skin as I did on the pictures. 

 

HomeAssistant (ESPHome)

The config is very simple. The device exposes :

  • Button to dispense food. It should be used in an automation. 
  • Input number, the duration of the distribution 1-20sec..
  • An alert status if the tank is empty. 

The file is in the “other files" section. It should be straightforward. 
The ESP only communicate with the mainboard via GCode, it's not very optimized but it works great for a feeder. It doesn't require high speed movements

The GCode used is very simple. Depending on you mainboard you would want to use different pins arrangement. You should modify the YAML file to use X-Y-Z motor/endstop. 
If you wish to use the extruder motor, some indication are provided at the end of the file.

 

Motherboard preparation 

You may be required to flash an updated version of marlin to be able to start the mainboard with thermal protection disabled. Since we won't install the thermocouple. 

The uart should be set to 38400bauds or lower. The ESP8266 use softSerial and it can't handle higher baud rate.

Also depending on your motherboard you should define a uart on the accessible pins. By default the uart is used by the screen on the melzi. There is a lot of documentation about flashing marlin. It's quite easy to do. 

Those are the main lines to change in Configuration.h in Marlin 2.0

#define BAUDRATE 38400
#define SERIAL_PORT_2 1 // Enable secondary uart
#define TEMP_SENSOR_0 998 // Dummy Table that ALWAYS reads 25°C.

 

Assembly

  1. Fuse the treaded inserts on the Bottom of the tank. 
  2. Mount the screw on the motor
  3. Place the motor cover 
  4. Place the motor and screw it through the front hole using an long Allen Key
  5. Place the IR receiver and glue it with a glue gun (I didn't found a better solution). You could glue it later because depending on the plastic color it might be needed to fidget with its position.
  6. Place the motherboard 
  7. Wire everything :
    1. The ESP should be connected to an uart and to the 5V
    2. The IR sensor should have the signal and ground connected to the Z end top (any other end top can be used. Just adapt the code in the YAML). And the 5v to any 5v pin of the mainboard
    3. The motor is the X by default but you can changed it in the YAML.
    4. Put the 12v plug to the power supply input of the mainboard
  8. Flash the ESP and test the electronic
  9. Slide the back cover
  10. Power everything and set the IR sensor screw to trigger if something goes in front of it.
  11. Screw the feet
  12. and here you go

 

Tags