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:
- A drum with an outer gear along one rim,
- A pinion wheel with a gear supporting a smaller gear,
- 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.