Afterthoughts On Arduino Bouncing Ball on Plate Machine

Some years ago I started a Quest to get a machine to juggle. Some weeks ago, I yet again found myself working on a machine with the goal of getting a ball to bounce on a plate without falling down. And bouncing it does. But is the quest now finally finished? Is the holy grail of continuous ball-bouncing reached? The short answer is “No.” and I will probably not spend any more time on the current iteration of this DYI robotics nightmare.

“A nightmare?” you might find yourself asking. “What’s so nightmary about that thing?”. This project, as so many before, is like a stack of cards put together in such a way that the result is a house of cards. Fragile and ready to explode in your face. Or maybe just crumble down. Whichever you prefer to envision in your mind.

The Latest Results

Here are some interesting results though. The location-determination using the noise the ping pong ball makes isn’t that bad after all. And I finally got some better data to back it up! I projected the data points on the video footage in such a way that the ball and the data points are matching up. The arrows show the error-vector between where the machine thought the ball went down compared to where it actually hit the plate. Here’s a longer video without the ASCII arrows.

As you can see in the video, the errors are quite small. Though the ball tracking gets worse near the edges of the plate (not sure as to why). I think it has something to do with the audio getting diluted and a bit flattened down for the mic further away, whilst the mic very close might get a much louder and sharper signal.

Afterthoughts

What is keeping me from getting to the holy grail of continuous-ball-bouncing? (At this stage, the ball is still dropping down after 2 ~ 5 mins.) Since I was able to cobble together a simple proof that the data is quite good the problem has to be with how I am controlling the tilt. I am using a PID controller. But the PID controller’s output can only be applied on the next bounce of the ball. It is delayed by 1 full bounce. This is bad because data points are scarce. The ball might bounce from one side to the other in 3 bounces. Reacting fast is key, but with the ball-noise-position-determination used in this project a control loop without a 1-bounce delay is impossible. I think this is what ultimately is causing the machine to not being able to keep that ball bouncing for more than 5 mins.

Here’s a list of things I used for this project:
– Arduino Nano (doing the ball position determination)
– Arduino Uno (controller the stepper drivers and running a PID controller)
– Quimat Nema17 stepper motors (2A, 59Ncm)
– Quimat 4A stepper motor drivers
– 2 OP-Amp Chips 5532D (for the mic amplifiers)
– 74HC279 Quad SL-Latch

But Is It Able To Bounce Two Balls Simultaneously?

The question of what will happen if a second ball is added was raised a while ago by Reddit user CaptainRene. This video is for you, Captain.

Hitting The Nail On The Head

How hard can it be to get a machine to juggle a ping pong ball? Is this the farthest humanity got yet?! Not at all. Take a look at this superb ping-pong-ball-bouncer made by Paul Kulchenko and Emo Todorov.

This is how it’s done. Read more in this blog post written by Paul.

Some More Pics

I might take the thing apart to use its components in a future project. So I thought I put some more pics up as long as it is still assembled.

Published by

T-Kuhn

Author and Webmaster of this blog. Likes electronic things, programming, and languages.

5 thoughts on “Afterthoughts On Arduino Bouncing Ball on Plate Machine”

  1. Great job! You have made quite an accomplishment on this project. I’m sad to see it be repurposed but understand as well. I was wondering if you considered using both microphones and a set of cameras? If the you had markers on the ball to track angular momentum as the ball spins in the air, then could the unit counter all forces in the system? How long could it sustain?

    1. Hello Jerry,

      > How long could it sustain?
      The current build is able to juggle the ball for about 5 mins before it falls off the edge.

      I’ve never considered putting markers on the ball to be able to visually measure its angular momentum. That’s an interesting idea. As for the hybrid approach with cameras and mics; I am thinking about another camera only build at the moment. I might add mics if the data of the cameras alone isn’t good enough.

  2. Hi,
    Im trying to replicate the project and i semi-understand how it operates only problem is the circuit specifically the arduino nanos part is there any way you would share it it would be much appreciated if you could provide us with the circuit diagram if available. If not can you please brifly explain the circuit cause right now I’m stuck and cannot go futher in this project

Leave a Reply

Your email address will not be published. Required fields are marked *