Introduction: Triaxial Numechron Clock

About: I am interested in designing something curious but functional. Please take a look at my summary page, https://shiura.com/dfab/index-en.html

A mechanical digital clock with three digit wheels on different axes (X, Y and Z) from each other.

  • Visually crazy but practical
  • Driven by a single stepper motor
  • All parts are designed within 180 x 180mm
  • Easy time adjustment by manual (physical) operation
  • High visibility with large digit characters

Update history

  • Oct. 29, 2023 : modified models for 80% print are added
  • Nov. 4, 2023 : “motor-gear.stl” is modified to add a 1mm collar, for the case of loose fit to the motor axis
  • Nov. 4, 2023 : Honeycomb-pattern front panel is added
  • Nov. 6, 2023 : I noticed that I uploaded wrong .ino file (program) that does not match to the photo of circuitry. I uploaded correct version.
  • Nov. 10, 2023 : Full and partial opaque front panels are added
  • Nov. 18, 2023 : Code is improved to directly input the compensation value of clock speed in seconds.

Supplies

  • 28BYJ-48 geared stepper motor and driver board comes with
  • Any microcontroller (Arduino, ESP32, Raspberry Pi, etc.)
  • Assortment of 2mm tapping screws

Step 1: Print

  • Print all parts with supplied posture.
  • Support structure is not needed except "10min-rotor.stl".
  • Remove debris and blobs well, especially around the axes and sliding surfaces.
  • Use the material in different color for digit characters.
  • Digit parts are difficult to distinguish each other. Especially, "6" and "9" are confusing (but the shapes are not identical). Curvature of back surface of the digits are different for hour, 1s and 10s place of minutes.

Step 2: Attach Digits to the Rotors

You can attach digits to the rotors with glues (ex. superglue) or plastic welding.

  • I recommend the welding method because it is easy, fast and beautiful. Use temperature control soldering iron to set it to low temp (250 centigrade) to avoid the fume of the material.
  • Holes on the rotors are arranged to be hidden by each digit. Please confirm whether the position is correct or not before fix the digits.

Step 3: Assembly of the Right Frame Unit

  • Attach "int-gear.stl" and "hour-driver.stl" to the hole of the "frame-right.stl".
  • Attach the two adjustors to the frame.
  • Attach "1min-rotor.stl" to the frame using "1min-holder-1.stl" and "1min-holder-2.stl".
  • Please make sure that all parts rotate smoothly.

Step 4: Assembly of the 10s Place of Minutes

  • Assemble "10min-driver.stl" and "10min-rotor.stl". The direction of the parts are regulated by the trapezoidal shape of the keys between connecting parts.
  • Align two markers on the gears facing each other.
  • Please make sure that the 10min-adjustor is put on the 10min driver.

Step 5: Assembly of the Remaining Parts

  • Attach the stepper motor and "motor-gear.stl".
  • Assemble the hour rotor with left side frame.
  • Attach the remaining parts with screws.

Step 6: Circuitry

  • Use your favorite microcontroller to drive the stepper motor.
  • The program ("numechron.ino") below is a sample for Arduino. If you use other microcontrollers, drive the motor 1536 steps per minute.
  • Housing of the arduino nano and driver board can be found at https://www.thingiverse.com/thing:5145523

If the motor rotates to the opposite direction, change the source code,

from

int port[4] = {7, 6, 5, 4};

to

int port[4] = {4, 5, 6, 7};


Please download the program for Arduino ("numechron.ino") below.

Step 7: Time Adjustment

  • Hour and 10min rotors can be rotated by your hand. Forward rotation only .
  • The program for Arduino drives the motor immediately after reset. Therefore, You can proceed 1 minute by reset button .
  • Alignment of the 1min rotor can be also possible by the reset button. Press the reset button when the digit comes to the correct position.


Step 8: 80% Shrunk Version

Smaller version is now available.

  • Print all parts in 80% scale.
  • Use modified models for "frame-base.stl" and "motor-gear.stl" because the stepper motor is not shrank. These models should be also shrunk to 80% scale when printing.
  • If "1min-holder-1.stl" is too thin, use "1min-holder-1-thicker.stl" instead.

Step 9: Optional Parts

  • If you print the "right-frame.stl" in different color from the rotors, use "colon-base-optional.stl" behind colon ":" between hours and minutes.
  • Four types of front panel (combinations of full or partial, opaque or honeycomb) to hide the mechanism and unintended digits. (except partial-honeycomb, They are not tested yet but I believe they work)
  • Separate digit characters and front frame to give different color to each digit. (The shape of each digit is identical to the all-in-one data, "all-digits-and-front-frame.stl"

Since it is not allowed to upload Blender file, please find the source file at thingiverse.

Step 10: Tuning of the Clock Speed

The clock of Arduino is not as accurate as common clocks. Please tune the value to improve the accuracy of your clock.

  1. Measure the error of your clock. Adjust your clock correctly and wait for 24 hours, then Measure the error of your clock in seconds.
  2. Input the error value (in second) for the value named COMPENSATION_SECONDS at line #3 in the source code. If your clock gains (too fast), enter positive value, and vise versa.
  3. Compile and flash your program to your microcontroller.