Introduction: Automatic Potato Masher

Once upon a time, I tried to boil and mash some potatoes. I didn't have proper utensils for the job, so I used a strainer instead.... it did not end well. So, I thought to myself, "what's the easiest way to mash potatoes without a proper masher?" Obviously, you grab your Arduino and a spare servo motor and rig up an epic-ly awesome (yet highly impracticle) automated potato mashing machine!



  • Arduino Uno (or similar)
  • DS3218 20kg digital servo (or similar)
  • 5V power supply
  • Dupont wires
  • USB cable

Misc. Hardware:

  • 4 x M2x6 screws
  • 4 x M2 nuts
  • 4 x M3x8 screws
  • 4 x M3 square nuts
  • 2 x 3x8x4mm bearings

3D Printed Parts:

  • Top Masher Jaw + Motor Mount
  • Bottom Masher Jaw
  • Bottom Masher Plate
  • 15 Tooth Spur Gear (Driver)
  • 10 Tooth Elongated Spur Gear (Driven)
  • Left Bracket
  • Right Bracket

Organic Parts:

  • 1 x Boiled Spud

Step 1: Initial Prototype

Using a rack and pinion design, we are able to easily convert rotational motion into linear motion. Or, put another way, convert the motor's torque output into a force directed perpendicular to the masher plate surface. 3D modelling was performed in Fusion 360, which allowed for some quick and dirty prototyping before I settled on a final "working" design.

However, as can be in the video above, the real world operation was not so ideal. As the components are all 3D printed, there exists a large amount of friction between the joints (specifically the two sliding joints designed to stabilise the jaws). Instead of sliding smoothly up and down within the channels, the two joints act as a pivot point. And, since we are applying a non-eccentric force, marked in pink (i.e. it is not applied through the centre of the body), we get a rotation of that top jaw about the two points of contact (marked as an orange dot, with the generated moment marked as an orange arrow).

Hence, a redesign was required. I still liked the rack and pinion idea as the most simple method of generating linear motion from rotational motion, but it was clear that we required forces to be applied at multiple points, so as to cancel out this rotation of the top jaw.

And so, version 2 of the potato masher was born...

Step 2: Version 2 - Second Time Lucky

Heading back to Fusion 360, the first step was to move the motor to a more central position, placing it in the middle of the top jaw. Next, an elongated spur gear was designed and meshed with the driving gear of the motor. This second spur gear would act as the pinion, and would now be driving a double rack setup. As can be seen in the above diagram, this would allow us to generate the necessary symmetric forces (depicted as pink straight arrows) to move the top masher jaw, without generating significant rotation of the top jaw overall.

Some other design implementations for this new version:

  • Bearings used to mount the elongated spur gear to each of the brackets that slide along the racks.
  • The bottom masher plate, depicted in red, was designed so that it could be easily removable for washing purposes.
  • Grated bottom masher plate to assist with piercing and crushing of the potato.

Step 3: 3D Printing, Assembling, and Programming

With the designs finalised, it was time to begin the building! Printing was done on an Artillery Genius 3D printer, with red and black PLA. Note: PLA filament is NOT considered foot-grade. If you DO intend to build and use this masher for preparing of a meal, please consider printing in PETG or other food-grade filament.

The servo was mounted to the top masher jaw using the M3 screws and nuts. The top masher plate was attached to the racks using the two brackets (left and right), and secured in place with the M2 screws and nuts. An external 5V supply was used to power the servo motor. Another note: You should not attempt to power the servo motor using the 5V pin on the Arduino. This pin cannot source enough current to satiate the relatively large power requirements of the servo. Doing so may result in the ejection of magic smoke from your Arduino (i.e. irreperable damage). Heed this warning!

The Arduino, servo, and supply were wired up according to the diagram above. The +ve and -ve terminals of the supply were connected to +ve and GND of the motor, whilst the signal wire of the motor was connected to Arduino pin 9. Yet another note: Don't forget to connect the GND of the motor to the GND of the Arduino as well. This connection will provide the necessary ground reference voltage for the signal wire (all components will now share a common ground reference). Without this, your motor will not likely move when commands are sent.

The Arduino code for this project utilises the servo.h open-source library, and is a modification of the sweep example code from said library. Due to my lack of access to pushbuttons at the time of writing, I was forced to use serial communication, and the Arduino serial terminal, as a means of conveying commands to the Arduino and servo motor. "Move motor up" and "move motor down" instructions can be sent to the servo by sending a "1" and a "2", respectively, in the serial terminal of a computer. In future versions, this commands can easily be replaced with pushbutton commands instead, removing the need for the computer to interface with the Arduino.

Step 4: Success!

Now, the most important bit - boiling the potato! Here are the steps to boil a schmick potato:

  1. Place a medium pot on the stove, on medium-high heat.
  2. Once boiling, add your potatoes into the pot.
  3. Boil until easily pierced with a fork, exacto-knife, or any other sharp object. 10-15 minutes will usually do it
  4. Once ready, strain the water and place your potatoes, one at a time, into the automatic potato masher and press play.
  5. Scrape the mashed potato onto your plate, and enjoy!

Et voila! We have some delightful mashed potato!!

Rome may not have been built in a day, but today we proved that potato mashers can be!

Step 5: Future Improvements

Whilst this version of the potato masher proved to be a great proof-of-concept, there are some refinements that could be valuable additions to the next version. They are as follows:

  • Pushbuttons for control of the motor direction. Obviously, there are glaring limitations to using the serial monitor for commuication
  • A housing - likely to be mounted onto the top masher jaw - could be devised. This would house the Arduino, and possibly a 5-7V battery, to make the entire design more portable.
  • PETG material, or similar food-grade filament, would be a must for any version of this product that would be used in a real world scenario.
  • Tighter meshing of the elongated spur gear with the driving spur gear. There was a bit of flex in the overall design, which was likely due to some flimsy 3D printed components. This meant that the gears may grind instead of mesh nicely, when the masher is presented with larger potatoes (and hence larger torques).
Potato Speed Challenge

Participated in the
Potato Speed Challenge