Introduction: Hollow Clock 2

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

3D printed clock using Arduino and hobby stepper motor.

  • Easy operation : super-easy time adjustment
  • Easy print : printable without supports (except optional cover.stl)
  • Easy assembly : gears can be set by just sliding in
  • Cheap : used stepper motor is very popular and cheap (around 3USD with amp circuitry)

Supplies

  • 28BYJ-48 5V stepper motor with ULN2003 motor driver amp board (3USD per unit)
  • Arduino nano or its compatible board (5USD per unit)
  • 4 tapping screws (2 x 6mm)

Step 1: Print Parts

Print parts using your 3D printer.

  • Print parts with supplied posture.
  • Support is not necessary (except optional rear cover, cover.stl)
  • Largest part measures 160mm x 160mm.
  • Remove debris and blobs around the parts well.

Step 2: Soldering of Circuits

Solder Arduino Nano and driver board of the stepper motor.

  1. Connect D4 - D7 ports of Arduino to the stepper motor driver.
  2. Connect 5V and GND to the power source port of the stepper motor driver.

Step 3: Assembly

Please take a look at the movie at the top of this page.

Set gears to the body.

  • Reduction gear is set by just sliding in, using oblique axis guide.
  • Minute driving gear is held by the axis of stepper motor.
  • Hour driving gear is held by the minute gear axis.

Fix the motor with tapping screws.

  • Please use a spacer if your screw is longer than 6mm, or the screw will block the gears.
  • Check the smoothness of rotation using "stepper-test.ico".
  • Lubricate the gears and rotors if the clock does not work properly.

Step 4: Flash Code

Flash the code for the clock to the Arduino.

  • stepper-test.ino : test code that runs the clock very fast
  • arduino-code-for-hollow2-8phase.ino : clock code

Troubleshooting

If your motor runs to the wrong direction or generates noise with weak torque, please change the order of the numbers in code as

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

to

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

where the numbers are related to the pins of Arduino nano (D4 - D7).

Step 5: Put Rotors

Put rotors on the body.

  • From front to back, minute rotor, hour rotor and index disc.
  • Paint hands for better visibility.

To adjust current time, simply just remove and set the rotors again.

Step 6: (Optional) Rear Cover

A STL file for the rear cover is supplied. It needs support to print. Fix it to the body with glue or tapping screw.

Step 7: (Optional) Tuning

If your clock gains or loses (too fast or slow), please change the value below in the source code.

#define MILLIS_PER_MIN 59913 // milliseconcs per a minute

Larger value makes the clock slower.

Some useful info can be found in the comments to this thing in Thingiverse