When Bob Kojima announced his rolling
ball clock on Lugnet a few months ago, I knew I had to build
one someday... I bought a stock of balls on Bricklink, and here
is the result. The main modification was the use of a RCX to
obtain good long time stability - I finally obtained less than
1 minute drift over 24 hours.
A few reference links:
Side view of the clock, showing RCX control,
and ball detection tunnel placed at the output of
The ball elevator is equipped with 8 buckets,
allowing high throughput for the impatient people
(and to quickly debug and tune the clock). In normal
clock mode, exactly one ball is delivered each minute.
Sometimes, I got a ball jam in the return pipe
that was not enough sloping. I thus raised the whole
support structure by two studs - consequently, the
elevator was raised too.
Here is the ball detection tunnel. The first
design I made used only one light sensor. Unfortunately
sometimes a black dot of a soccer ball happens to
roll just in front of the sensor and the ball is
not detected. To avoid this, I used a second light
sensor, the probability that the ball is not detected
by either sensor seems almost null. Alternatively,
I could have used a lamp in front of one sensor,
the balls blocking lamp light.
The design of the buckets were simplified. The
two link treads on top form a flat surface, preventing
the lift of two balls at a time.
Several problems plague ball supply:
- Sometimes, no ball gets picked. I tried
hard to avoid that, but once in a while it still
happens (see the videos). Anyway, as balls are
detected when they arrive on top of the clock,
the elevator runs until a ball really arrives.
- When there are many balls, they tend to
block each other. The ball tank was enlarged
to avoid that. A stirring mechanism, lead by
elevator motor, prevent ball locking.
- the two wheels placed on side of the elevator
recenter the ball if it comes in equilibrium
on a liftarm instead of sitting between them.
One ball is maintained on the hour rail, so the
clock counts from 1 to 12, and when the 13th
ball arrives, all balls are drained and hour counter
resets to 1.
Of course, to get a good autonomy, I used a RCX
1.0 with external supply...
The problem should have been very simple: each minute, start
the elevator until a ball is detected by one sensor. Unfortunately,
my first try over a several hours period showed me that my clock
was fast, several seconds each hour! After eliminating all mechanical
possibilities (two balls at a time, or an undetected ball),
I concluded that my RCX itself was fast... To make sure, I finally
put a frequency meter probe on RCX crystal, and indeed it oscillates
at 16.03 MHz instead of 16.00 MHz. So I finally added some code
to wait for 6.92 seconds each hour.
Here is the rolling ball clock program.
And here is a small debug program
that feeds balls without 1 minute wait, and beeps each time
a ball is detected.
The rolling ball clock in action (AVI movies, Divx
Overall view (600kB).
Balancing mechanism (600kB).
Balancing mechanism, detail (500kB).
Ball picking (400kB).