Magnetic ball clock

About a month ago, I saw an instructable for a cool clock.
The project features a bunch of 3-d printed parts and some jigsaw work. This is my attempt to convert it to a gforge based project. As a first version, I focused on function, so the overall design is a bit vanilla. The body of the clock is a box from with a sheet of veneer on the front.

It is also arduino based and uses the same motors, magnets, balls, and sensors as the linked project. Everything else is an entirely new design including the arduino code.

I had the motors, steel balls, hall-effect sensors, and magnets left over from prior projects, so this was a cheap project to try.

The result is:

The guts include 2 cheap stepper motors ( not visible in the photo ) driving wooden gears ( on the lower right of the photo, one of them under a yellow cap) to advance the larger gears that have magnets embedded within (one magnet in view at the top of the photo). One big ring for minutes and another for hours. The gears were downloaded from gear generator. Those magnets lay on the underside of the veneer face and move the balls around the clock face to mark the positions the minute and hour hand.

The arduino involved checks a real time clock and advances the hour and minute hands a tiny amount every few seconds. The distance being a prescribed number of steps from the stepper motors. The number of steps is calculated by dividing the total # of steps needed to advance the hand one complete lap by the amount of time between moves. In practice, the minute hand moves 17 steps every 3 seconds. The hour hand moves 17 steps every minute. Why 17? it just works out through the gear reduction in the steppers and the gear ratio between the driving gear and the big ring. I did not calculate this, I simply built it and then measured the number of steps in a lap and found the smallest increment for each. The hall effect sensors and magnets are refreshingly repeatable. 20400 clicks per hour on the minute hand. 12240 clicks per 12 hours on the hour hand.

This type of motor is cheap ( <$3 a pop with driver board) and prone to missing steps. There is no feedback when this happens. So, blindly driving this as described above will not make for a good clock. The solution is to keep the hands accurate by using a pair of hall effect sensors (i.e. a very simple switch that is triggered by the magnets as they pass). These are seen in the photo above as the tiny black objects with 3 silver legs in the bottom center of the image.
When the magnet gets close to the sensor, the sensor acts like a push button. The arduino calculates the difference between the location of the sensor and the actual time of day and adjusts the positions of the hands to be where they should be for that time of day. If no drift has happened, there is no need for adjustment. If there has been some drift, this fixes it. Thus far ( running on and off for a week or so), the minute hand has been off by no more than 3 minutes, the hour hand has not had any noticeable drift.

With that in place there is only the matter of getting the clock started in the first place. There it simply advances the drive until the magnet finds the switch and then advances the drive for each hand to show the correct time.

There are a lot of things i would do differently but I am happy that the first attempt worked with only a bit of hair pulling and a few dabs of grease. More photos and videos here. Note: many of the videos have the clock upside down and in some the rings are moving backwards. Thusly does one also document their early false steps.


Very cool!


Very cool! How do you adjust it for daylight savings time?


You rotate the entire clock by 30°!


There is an arduino library that handles that automatically .


I’m going to have to try this! Thanks for a great writeup.

1 Like

Great project! Love the mix of media for this. Terrific!

This is very clever in several different ways. Love the many and varied design choices

Oh, very cool indeed! Any plans to decorate it?

A different project that could use the same materials would be to have the balls navigate a maze—might be fun to watch.


Oh that is very neat! Reminds me of the sand table that rolls it’s own ball around to create patterns in the sand, but useful!


yep, similar technology but this version can only move the ball in a circle. it would make a very boring sand table. I built one of those a few years back, used the forge for most of the bits. Thanks for reminding me, I have a hankering to give it some attention.


I am not loving the looks of this but improvements or a new version are way down my list.

If I were to undertake, I would likely smash it, harvest all the good bits and build anew, better informed from the start. I think a round enclosure with a better clock face in cherry would make me happier. The maple was chosen because it would not make me sad to waste it. Not my favorite wood finish.

There is also a long list of internal improvements that would make the 2nd one go together better and this wish list of other improvements

  • Add a 2 button interface for setting/ adjusting the time or move to a better RTC that has less drift
  • Improve on the gear placements to remove some of the slop. ( slotted mounting holes for the motors would do the trick.
  • Add an access hatch to allow reprograming of arduino or replacement of RTC battery (every 8 years)
  • add some noise dampening material (at night when it is very quiet, you can hear the buzz from the motors)
  • change to better stepper motors.
  • bigger balls

:joy: If that is what would make the project better… :sunglasses:


Very nice, have you thought about using acrylic for the face?

1 Like

yes, will need to see if the magnets are strong enough first or find some really thin acrylic

This is great. I was just looking at men’s watches and saw ball watch. So I am really going to need to try this some time in the future.

1 Like

Check this site out, They have laser approved acrylic as thin as 1/16". It’s who I use for my acrylic, they have some as thin as 1/32"

1 Like

I have some 1/16" acrylic as well. That stuff was a bit trickier to find than I expected, but it’s handy. I think that the acrylic would get scratched over time and would look crummy. The wood would wear as well, but I don’t think it would look as bad.

1 Like

I thought about the ball possibly wearing a path on acrylic but someone mentioned making a path for the ball. Might consider scoring the path to cover the scratch issue.


So far, (and it is early) there is no sign of a grove in the PG veneer. I suspect a grove would be good insurance and might work to improve the aesthetic. The current one leaves me a bit underwhelmed.

I did test and the magnets are strong enough to work with 3 mm wood or acrylic so I could make a better face with a host of materials. I just might…

The other good news is that it has kept the time well. I am almost to the point where I no longer obsessively check the time on that clock vs. my phone every time I am in the room where it lives.

This obsession happens with every new clock design I build. I have gotten over it with the word clocks. That design has evolved to the point where there are enough trouble detectors built into the system that there is rarely an issue if it powers up successfully.