A clock with 5 hands to show Time and Date

Similar projects worth following
I am lousy on mechanics, and certainly not a clockmaker. This project works around my non-skills, by using 3D printed parts, and just 1 gear per hand, plus two servo motors. The rest of the action is in the software, where I do have some competencies.

This has been worked on for 6 months now (on-off, like all hobby projects).

The 3D design is in OpenSCAD, all parts are printed, except for a few 10x10mm profiles for the sliding servo carriage. Well, the clockface is printed on paper, too. 

The mechnism should be obvious from the picture - one servo slides the other servo up/down to the right gear for a given clockhand. The servo then moves the hands' gear the required teeth.

Servos can only move 180 degrees, so the turning servo is lowered below the lowest gear when it needs to "rewind" before moving back to a handgear to advance it further.

Software/electronics is a simple small Arduino, and a standard clockchip. The software uses the VarSpeedServo library to move the servos slowly to avoid breaking plastic.

The clock face is supposed to be slightly enigmatic. The letters are calender-items, and makes it language dependent, but with seven and 12 letters in a circle, respectivly, should make it understandable anyhow. The ordering is by how many increments there are, not fastets to slowest. Lastly the hands will point exactly at a value (ie. the hour hands moves once an hour, never positioned between two hours at half past)  The large drawing of the face has the hands postioned to the closing date&time of the Tell Time contest.

The clock has been shown at Makerfaires (with some fudging as the mechanism was unreliable at that time). As 3 hands only move at midnight and the hour hand only moves (obviously) once an hour it is not an eyecatching exhibit. A set of mirrors will show the innards next time, and a colour-cycling RGB has been put in there, too. A demo-mode button will let the clock show some event in the future (like the next exhibition opening), or the current time. It takes it a minute or two to move all hands to an arbitrary date/time or back to current time.


This contains more debug code to adjust and test mechanics than actully run the clock :-) It start in full debug mode until you set it normal (programs the EEPROM)

ino - 15.45 kB - 01/24/2020 at 16:36




ino - 3.61 kB - 01/24/2020 at 16:36


The raw, work-in-progress OpenSCAD files. It is all parts of the current first version, but no guarantees, as some parts are handtweaked to give just the right output on my 3D printer.

x-zip-compressed - 13.60 kB - 01/21/2020 at 19:54



Clock face. (English abbreviations)

svg+xml - 91.36 kB - 12/22/2019 at 23:31


  • 1 × Arduino MiniPro used, any will do
  • 1 × DS1307 board with battery Clock chip, on board battery to keep time
  • 2 × Hobby Servo motor
  • 17 × 3D printed plastic parts
  • 4 × Makerbeam 10x10mm about 100mm in total

  • New electronics

    Michael Möller04/17/2020 at 06:00 0 comments

    I have now designed a PCB which is meant to cover all my clocks, past and future. 

    It has an ATMEL328P chip (internal clock) and a RTC chip with crystal and battery backup, a stepper driver,  5V regulator (optional, solderbridge to bypass).  and a 3way button on the edge for setting time. Last but not at least plenty of pin holes for connecting things, stepper, and/or 2 servo, 2 digital IO, one analog, Serial for programming or debugging and the standard ICSP.

    For this clock, the Stepperdriver part will not be populated, and the barrel connector will use 5V and no regulator either.

    Of course, I still have to solve the mechanical problems I have.

  • Completion attempt 2

    Michael Möller01/19/2020 at 18:07 0 comments

    "Attempt 2", because Attempt 1 was finished last summer, and being exhibited in two German Makerfaires. But it was unreliable, so a bit of fudging was needed so it worked with the minut and hour hand at least. 

    It tells the time

    Once one tediuosly has set the hands and time, it does work.

    Improvements done

    I have now tweaked and redesigned the mechanisms that holds the other gears in place, while one gear is being moved.

    The software can now set the clock chip, via the Serial interface. It can also set where the hands are now, (ie how much catchup there has to be after power loss) Incidentally, the Serial interface is already full of debugging commands, that allow advance by one tooth, move to next hour and such like. The position of the servos is defined in EEPROM tables, these are adjusted this way, too. These are all for rebuild/maintenance only.

    Still outstanding

    Basically get rid of the Serial hookup to "start" the clock. Two points:

    Some easy way to set the hand position. I have an idea or two how to do this with a single optical gate and some "encoder-like" addition in the gear wheels. 

    As an interim design a button or two will be added to manually position the hands at 12 o'clock after power outage (assuming the clock chip battery has kept time).

    The button(s) will also set the chip time at some point (design details outstanding - the challenge is the "feedback" on what time you are setting)

    Lastly, the weekday and day gears need to be exchanged for ones with integral toothcount to the step size to get all hands to be spot-on. (see earlier project notes)

  • Early notes

    Michael Möller01/10/2020 at 18:39 0 comments

    This is retroactive notes, based on memory of this project

    Here is an early test (april 2019) done with the gear changer. At that point I presumed a single axis could hold the gears, but there was too much play up/down so the later design holds the gears with a guide rail. (see Gallery)

    Gear calculations

    60 minutes, 24 hours, 12 months are all factors of 120. So all gears have 120 teeth, and for a minute 2 teeth is the increment,  5 teeth/hour, 10/month. For weekday it is 17.14 teeth and day is 3.75 teeth. The software works out the nearest tooth. All teeth have to be aligned for the gear shift to work, ie movement is by whole teeth steps. The 1.5° error in positioning a pointer is barely visible. 

    However by cheating with the gear module, I can make a gear with a few teeth more or less, and still have it mesh with the servo gear. This will be done RealSoonNow, using a 119 tooth gear on the weekday and 128 teeth n the day gear.

    The day scale has no tick mark at 0 as there is no day 0, but there is a 00:00 as time, so esthetically I wanted to avoid placing day 1 there. Otherwise a 124 tooth gear would be used on the day gear. The 28/29/30/31 problem for days in a month. is not a problem as the advancment is under software control it can easily skip from, say, 28 to 1.

View all 3 project logs

Enjoy this project?



Bret wrote 01/09/2020 at 01:06 point

Will you share your SCAD file?

  Are you sure? yes | no

Michael Möller wrote 01/10/2020 at 18:26 point

Yes. Now, should it be a messy, fudged, tweaked mess (which is the state now), or should it be an organized, structured version? I have done many versions, so I am not even sure ifthe current file is the current pieces, (tweaks to get fittings "just right")

  Are you sure? yes | no

Bret wrote 01/11/2020 at 00:50 point

I understand :)... hmm scad files work well in git, I'd recommend that so you can keep track..

  Are you sure? yes | no

Mike Szczys wrote 01/06/2020 at 22:24 point

This is brilliant! I'd love to see a clip of it in action.

The issue of multiple plates moving at once is an interesting one but your solution sounds like it'll work. A springy piece mounted above and below the drive gear would do the trick I think.

  Are you sure? yes | no

Michael Möller wrote 01/10/2020 at 18:28 point

I've tried a "ratchet/indent" spring mechanism but it was not reliable/strong enough.

Video of early test is being uploaded ... as I type. 

  Are you sure? yes | no

Dan Maloney wrote 12/23/2019 at 16:58 point

 My first question was how this deals with different number of days in a month. Then I saw the stack of gears and the moving servo, and I got the idea. I like it.

Any reason not to go with a continuous-rotation servo rather than having to raise and lower it to deal with the limited rotation range?

  Are you sure? yes | no

Michael Möller wrote 12/23/2019 at 17:28 point

Continuous servos you can only set a rough speed, not position - unless you're thinking of some industrial grade servo with full encoder. And I do not want one servo/hand. This design could be expanded to  more hands and still have only two motors.

  Are you sure? yes | no

Dan Maloney wrote 12/23/2019 at 17:35 point

Gotcha, makes sense. Nice job, BTW - I like it.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates