Aller au contenu

Ping Pong Ball Thrower


This project is a smaller version of the following regular tennis ball thrower previously made at Eirlab.

Tennis ball thrower

Since my project throws table tennis balls, creating something that it easily transportable and that can fit onto a table is one of the objectives.

How ?

The mechanical throwing system consists of two 6V DC motors, with two rubber wheels. The ball has to be gently pushed between the spinning wheels to be thrown. Since the ball is very light, not much torque is needed, thus small motors can be used. These ones spin fast enough and are cheap. I also could have used brushless motors, which are much faster for the same size, but it would be too expensive for this project.

Motor and wheel

These motors are controlled using an Arduino Nano microcontroller, using PWM. The motors’ speeds are adjustable using two potentiometers. One controls the average speed of motors, the other controls the speed difference. I find this system more convenient, as you can increase the speed of the two motors using only one input. The other is used to give effect to the ball. To allow the user to monitor the motors’ speeds, each motor has an LED, the brighter the faster.

Electronic Circuit

Electronic circuit — schematic
Electronic circuit — breadboard
Electronic circuit — soldered

Arduino Program

The programming part is fairly straightforward. It consists in two analog reads on the potentiometers, and two writes on the PWM digital outputs. You can download the code archive here.


The ultimate part of this project is the case. I made it using wood and laser cutting.

Case — 3D model, rear
Case — 3D model, front

I chose the dimensions as small as possible, while ensuring that the motors, the wheels, and the table tennis ball fit inside. The first two cases I built had too much space between the wheels. The theoretical space needed between the wheels is 40 mm, namely the ball diameter. In practice this is too much, the ball passes through the thrower without touching the top wheel, so the space is only 38 mm wide to make sure the ball touches both wheels.

The case features are the following.

  • The ball entrance diameter is 2 mm superior to the ball diameter, in order not to struggle to put it inside. I made the exit larger to allow the ball direction not to be perfect, which will not be the case anyway.
  • The orange and (very) light blue part, number 1 on the image, are here to guide the ball. The former helps reaching the exit and the latter gently brings the ball onto the lower wheel.
  • The yellow and dark grey parts, number 2 on the image, are supports for the motors. The yellow one adapts to its body. The grey one has holes, it goes between the motor and the wheel, and two 5-mm M2 screws tighten the motor to it.
  • The front pane has holes in which the different components the user needs to access will fit, 2 LEDs, 2 potentiometers, and the power plug.

The case models and drawings are available here.

Motors and Wheels

Each one of the two motors has to spin a wheel, thus the wheel has to be tightly fixed to the shaft. Since the default shaft does not easily allow fixing a wheel, I decided to use regular epoxy glue. First, I had to file the shaft to make it fit inside the wheel hole. Then, in order to make the center of inertia as close to the axis of rotation as possible, I built a glue support. This temporary object helps keeping the axes of the motor and the wheel coincident, and also the wheel perpendicular to the axis of rotation.

Glue support — 3D model, view 1
Glue support — 3D model, view 2
Glue support — real object
Glue support — with motor and wheel

Since I had two wheels to glue, I had to use my support twice, hence I assembled the wooden pieces together without fixing them to allow dismounting. As you can see on the above pictures, I used a clamp to reinforce the support. The top of the support, number 1 on the first picture, keeps the axes coincident, the hole diameter is the axact same as the wheel diameter. The plates between the motor and the wheel, number 2 on the same picture, are 3 mm thick and maintain the wheel perpendicular to the axis of rotation. When gluing the pieces together, make sure to properly squeeze these plates using the wheel and the support of the motor.

The glue support models and drawings are available here.


The several wooden case components were assembled using wood glue. The only part that has not been glued is the one that holds all the electronic components, to allow re-using them (mainly the microcontroller). To make sure the soldering of electronic components does not get damaged due to vibrations generated by the motors, they have not to be in direct contact with the wooden pane they are fixed on. To achieve this, I made struts using 3D printing.

Struts — 3D model
Struts — usage
Electronic circuit fastened to wooden board

As you can see on the above pictures, the fragile soldering work is safe from the wooden board.


The struts models are available here.


ItemQuantity NeededLinkPrice (USD)
Ardunio Nano1Amazon25
Mosfet2Radio Spares<1
Table tennis balls1000Amazon73
100Ω resistors2Amazon10
200Ω resistors2Amazon10
Items needed
  1. These wheels are not so great, 20 mm diameter is small, and the edges are far from being smooth. Unfortunately, this is all I found. ↩︎