Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!


Printable Clock, Parametric Proof of Concept

by syvwlch, published

Printable Clock, Parametric Proof of Concept by syvwlch Apr 19, 2011
1 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag


Thing Statistics

34933Views 3456Downloads


Another proof of concept along the way to a WORKING printable clock. A working clock would, for example, have a case. :-)

Aside from such petty concerns, this clock is complete, in that we have a power source (a drum to wind a string and weight), a whole gear train (5/3/2/2/5/3/2/2), a Graham escapement, a (token) pendulum and three hands mounted on concentric shafts to show the time.

It is fully parametric, animate-able, and about as modular as I could make it within the current constraints of OpenSCAD (recursion would be nice for the eight gears in the gear train!).

The code uses three different types of gear wheels, each able to support any level of nested concentric shafts if needed for support or to run clock hands:

  1. A drum with an outer gear along one rim,
  2. A pinion wheel with a gear supporting a smaller gear,
  3. An escapement wheel supporting a smaller gear.

It also automatically positions them relative to each other, ensures that they mesh properly and rotates them according to the correct gear ratios to support animation and to check the design.

It uses the involute gear script from the MCAD library, and my own escapement library. I intend to move as much of the script into another library at some later date, and like in some of my previous scripts, to provide both the current assembled() module and a handy laidOutToPrint() module.

Lastly, the modular nature of this PoC should allow for separate tweaking of the various components of the clock until they all work, without having to print an entire clock every time.

(EDIT: fixed a bug, kindly pointed out by DaveD, and uploaded a fixed version of the OpenSCAD script, along with an exploded version of the STL and a JPEG of same.)


Feel free to look at and play with the code, tweak parameters, etc.

The entire assembled clock renders quite fast in OpenCSG mode, so you will get fast feedback for your efforts, but in CGAL mode (necessary to export the STL file) it took 42 minutes (!) on my recentish laptop. Clearly this is about as complex as I should go in a single model for now.

Having said that, individual components render quite fast and generating the whole set of STL files for individual printing doesn't take nearly that long.

Have fun with it, and don't hesitate to ask questions... I promise the library version will be fully commented, but this script is not.

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App

Printed it - but at a smaller scale it is super delicate. Cleaning it and not damaging the parts (like the hour/second hands) was tough. Doesn't rotate as I have no way to get inside the micro clearances.... but I surely see the potential of this design.

Once you iron out all the mini bugs - I'd suggest having each part as it's own file. Also - maybe using a brass rod and mounting plate of some kind to hold the gears.

Thanks for posting your work and letting me try this !


I saw! It left me speechless to see it printed out like that. Can't wait to get it to where someone can print out a working version. :-)

I totally agree that printing each part separately is the way to go, it would be much too small and delicate otherwise, and at least for a first try, using 'vitamins' and including some metal shafts to hold the gears would definitely help... altho I live in hope of getting to a fully printable clo
ck at some point!

In any case, thanks for printing this out and sharing the pictures. :-)

I'm not sure if metal shafts are necessary. You sandwich all those parts between two plates with 3mm (or 1.75mm!) holes and hold it in place with filament.

Ah, a purist! ;-)

What is the outer diameter on filament, then?

This Thing is taking off, but this might help: I use the $ 26 Gear Template Generator by Matthias Wandel to export involute (spoked) gears DXF's and then laser cut these for my Automata classes. I found this little program better than the Inkscape extension. Go to http://woodgears.ca/gear/index.htmlhttp://woodgears.ca/gear/index... for a demo and link to buy.

I actually took a look at that template generator. It is a very nice piece of software, but I wanted to learn how to use OpenSCAD and its MCAD library has a good involute gear generator which you can rope in to do the dirty work for you... all parametric-like.

I don't think I ever want to go back to the old way of designing 3D models... what I really want is something with a stronger language than OpenSCAD. If only POVray exported STL files!

I'm with you, 100%. OpenSCAD is a great program but it's language features are lacking to say the least.

This is insanely cool, syvwlch - excellent job!!

The gear shafts seem like they might give people the most problems - the small one seems to have a 3mm OD and 0.9mm ID. Making these thicker should make them a lot easier to print on the types of machines most people have.

I think you've got a bug in part of the script. It looks like if a shaft
coming out from the center of a gear doesn't line up with the high point of an outside tooth, the end of that shaft can exend into the area between the teeth, which should be empty. You can see this on the gears to the right if you're looking at the front of the clock.

Thanks! :-)

I accidentally left the overall scaling parameter set to 0.5, so all these parts should be printable at twice the size before the largest ones extend outside of a 80mmx80mm area. After 42 minutes to generate the STL, I gave up on redoing it full-scale...

Still and all, I was thinking of using som
e ready-made shafts to slip all the sleeved gears onto, something with an OD of maybe 3mm. There is a limit to how much space you can take up with the shaft and sleeves at the hub of each wheel, before you run into the bottom of the teeth of the pinion... especially with high gear ratios. Some min/m
axing may be necessary to get something easily printable.

On your second point, I'm not sure I understand. I'm sorry to do this, but can I ask you to reformulate, or mark up a jpeg to show me what you mean?

In any case, thanks. Bugs are evil and must be squashed. :-)

"Spoke" would have been a better word than "shaft".

Does this picture help?

Nice catch! I'll go fix that.

In a fine display of two heads are better then one, I also noticed that my code has no provisions against setting the parameters such that the two conditions in the image below can occur.

I know the math to calculate how deep the teeth cut into the nominal pitch radius of the wheel, so making sure the spokes don't go to far is not hard. Should be an easy fix. :-)

...and, if I had to reword it, I'd say that it looks like the spokes are being added after the gear teeth are generated. If you can move the add-spoke code to before the cut-teeth code, the problem would likely go away. Dunno openscad though so I have zero clue if that's reasonable or even doable.

You have exceeded the my ability to compliment your work. Unreal.

Ad majorem thingiversi gloriam, I always say. ;-)

Gotta love parametric code-like designs. It's such a natural way to make a model, so easy to debug, and expand upon, that I wouldn't go back to doing it the old way.

You deserve some Flattr for your effort! Setup an account soon!

Just went over there and read up on it. It's basically a like-button system with real teeth, right?

Very cool idea!

And you sir, have been Flattred!

So I have! Thank you very much :-)

I find I quite like the feeling...

This is really amazing! Even before I had a 3D printed, I really wanted to try to make a clock in a single print. Take it off the build platform, hang it on the wall, and start ticking. Recently I found out that Peter Schmitt from MIT beat me to it, but it's good to know that it's possible!

So I am very happy to see that you've done most of the work already :). The way that you've been posting the parts as you go makes it seem much less intimidating than just a mess of gears.

I also found this link to a printed escapement: http://www.instructables.com/id/3D-Printed-Clock-and-Gears/http://www.instructables.com/i...
where he basically says the escapement was the hardest part. So I am looking forward to printing the escapement as the first experiment.

I do have one question, how do you size the weight? Is there just a threshold weight with no benefit if you go heavier? Also, I suppose you would need anothe
r mechanism to allow winding the clock while it's running, right?

Thanks for posting this!

You're welcome! I'm doing this to learn OpenSCAD and to understand clocks a little better, and as you point out, doing it step by step it's really not that complicated.

My main worry is the escapement, definitely, so I need to come up with a simple 2-gear version of the clock just to test various tweaks of the escapement... which is a simple, flat, thin part which should print out fast enough to make experimentation feasible!

The driving weight needs to be heavy
enough to overcome the friction in the gear train (with the 3600 reduction ratio between the drum and the escapement, it's not a trivial amount!) while not being too heavy. I saw some math in a book, but since I have no way to estimate the friction involved... can't really run the numbers. I doubt
it will be that huge a weight, to be honest.

The math for the string is a lot easier: diameterDrum*pi per day of operation.

Lastly, there are a number of ways the clock could be wound, but it only gets complicated if you want the clock to run under power while you are doing it. If not, you can sim
ply loop the string over the drum by hand. If you want to get fancy, build a ratchet into the drum (there's certainly enough room for one) so that when the drum turns clockwise, the hour hand and the gear train are entrained, but when it turns anti-clockwise, they are not.

The nice thing with a mod
ular design is, you could upgrade your clock's power system without changing the other parts. Not sure how to do that while the clock is running, however... ;-)

Wow, really getting there. Now someone just needs to print it and make it go!

Making progress :-)