Hybrid Nautilus Clock
What's the whole point of a clock? Some would say "to tell time". Ask anyone who wears a multi-thousand dollar wristwatch, and if they say it's to tell time - they're lying. My conclusion is that these days, timepieces of any size are either kinetic art or jewelry.
I saw these nautilus gears on Thingaverse https://www.thingiverse.com/thing:27233 and just had to try them out on my cnc machine. I cut them out of acrylic and 3d printed the holder. As an "executive toy" this worked fine and held my interest for a minute or two. But then what? A clock of course, with nautilus gears cut from walnut.
The requirements were few:
- It had to showcase the motion of the nautilus gears.
- It had to tell time.
The clock I made does tell time; but you have to know how to read it. But mostly it shows off the gears nicely. The lower nautilus gear is the minute hand, the outer point indicating the minute. The upper gear goes along for the ride, strictly for looks.
Each second, the minute hand waggles back and forth. And each minute, the hand moves an entire "clockwise" rotation before advancing to the next minute. Not necessary, but this way you get to see the gears do their stuff every minute. The hours are indicated by a circle of 12 LEDs. The LED that's lit shows the hour. So the hour is digital and the minute is analog - hybrid, you might say.
The lower gear is moved by a small stepper motor. I used an Arduino to run the stepper and power the LEDs. And the whole thing is powered by a 5v USB cable.
Supplies
Electronics List
Stepper motor and driver Link to Steppers and Drivers
Arduino Teensy - it's small in size and has a lot of pins available
Amber LEDs (12)
Intermittent switches (2)
Hall effect sensor Link to magnetic sensor
​Clock Body and Gears
I glued together two pieces of 20mm maple for the body. The overall dimensions are 300mm x 185mm x 40mm. I used my CNC router to cut a deep (35mm) pocket for the stepper motor, another pocket (25mm) for the Arduino and 10mm deep slots for USB cable, LED wires, and time-set switch wires. I used the CNC to drill partial holes for the LEDs then the drill press to drill through.
The gears are a direct copy from https://www.thingiverse.com/thing:27233
To partially hide the mess of wires, I 3d printed a cover that screws into place.
Hour LEDs
This was the most difficult part of the build. I had to solder the 12 LEDs so there would be little or no slack wire between them. Each LED had to have its own positive wire. I insulated the positive solder connections with shrink tube. The negative sides could share a wire but this also had a lot of fussy soldering (but no insulating). But with upwards of 10 red wires plus the negative wire with all its solder joint it was a bit of a bundle jammed into the slot.
Setting and Sync
Setting Buttons
I installed two intermittent button switches at the side of the clock. One, when pressed, advances the hand one minute of movement per press. The other advances the internal hour and the corresponding LED.
Synchronization
After running the clock for a few days, I found that it would not keep time properly. I believe this was due to the stepper not moving the hand Exactly one minute in distance. A better stepper might have solved this problem. But my solution was to imbed a small magnet into the back of the lower nautilus gear (the hand), and a hall effect sensor in the clock face. In that way the processor would know when the clock hand had reached a certain position (36 after the hour it turned out) and make the appropriate adjustment forward or backward.
Software
Here's a synopsis of the Arduino code:
Setup - power on
- Leave the minute hand where it is, but assume the hour is zero.
- Light the 0 hour LED.
Loop
If minute button pushed
- adjust internal time by one min
- move hand forward by one min (34 steps)
- flash all LEDs to show something is happening
If hour button pushed
- add one to the internal hour number
- set the appropriate hour LED on
If we've just come to a sync point
- see how far off we are in minutes
- move the hand forward or backward that many minutes
If a minute has elapsed
- Move the hand around one rev plus one min
- If minute greater than 59
- reset to 0
- add to the hour
- If hour > 11,
- reset to 0
- set hour LED
For pin assignments please see the picture of a portion of the code.