November 23, 2019

Dog Treat Thrower

How do you make a cheap dog treat thrower? Motorise a fertiliser spreader! Basically the motor turns the spreader. When the spreader is up to speed, the car door locking solenoid pulls the trigger to release a dog biscuit (or two!)

Dog Treat Thrower
Status Operational
Platform Arduino Uno
Budget $50
Date Completed September 2019

Summary of operation

Basically the motor turns the spreader. When the spreader is up to speed, the car door locking solenoid pulls the trigger to release a dog biscuit (or two!)

To activate, turn the LED sensor light to "on" or "auto". While the LED sensor light is lit, the system is in operation and throws a treat every x minutes. Therefore when set to auto, it waits for the dog to walk up. The delay of x minutes above also ensures the auto mode doesn't release treats too regularly.

Parts used

Some engineering detail

The hardware is wired up as follows:

  • Basically the motor and the solenoid only ever need to be driven in the one direction. So rather than use the motor driver as a full H-bridge, it can be split in two and wired as two half-bridges.
  • The first half-bridge is used to PWM drive the motor to reduce the speed. The DC motor was capable of driving the spreader to destruction at 100%!
  • The second half-bridge drives the central locking solenoid. Using the second half-bridge is handy to avoid any damage to the microcontroller from back-EMFs.
  • The LED sensor light did have a 3V battery. It's now wired to receive 3.3V power from the Arduino Uno, with the LED light signal wired back to an Arduino input to read it's status.

It's coded up in the Arduino IDE as follows:

  • When it's first switched on it does a 5 second pulse of running the motor, with a 1 second pulse in the middle of the solenoid to pull the trigger on the spreader allowing pellets to drop.
  • It then looks at the digital input from the LED sensor light as to when to operate. Therefore allowing the unit to be operated from the "On-Off-Auto" switch on the side of the LED motion sensor light.
  • There is a delay running in the code so it ignores the input for x minutes (e.g. 30 min) after last run to avoid having a fat dog.

Future improvements

I would love to add an ESP8266 for WiFi and use Blynk or MQTT to give remote/cloud-based control.