This project rotates an entire analog wall clock so that one selected hand remains stationary with respect to the room.
The clock itself is a standard off-the-shelf wall clock. It is mounted inside a rigid outer ring with gear teeth. By rotating this ring at a carefully controlled speed (using a stepper motor and reduction gearing), the apparent motion of the second, minute, or hour hand can be canceled. An internal clock, based on the Arduino core function millis() is used to determine the frequency of the stepper motors, which is periodically synchronized with a real-time clock (DS3231) to make sure that the system keeps time correctly over longer periods of time, since millis() will tend to drift by multiple seconds per day on its own.
- The clock is mounted in a circular frame with an external ring gear.
- A stepper motor drives this ring through a reduction gear train.
- The motor speed is chosen such that the rotation of the clock body exactly matches the angular speed of one clock hand.
- A switch selects which hand (second, minute, or hour) should appear stationary.
The clock mechanism itself is not modified.
-
/src
Arduino code for driving the stepper motor and handling mode selection. -
/3mf
3MF files for all 3D-printed mechanical parts (ring gear, mounts, brackets, etc.).
- Standard analog wall clock
- Arduino Nano (ATmega328P)
- Bipolar stepper motor
- L298-based H-bridge motor driver
- DS3231 real-time clock module
- 3D-printed parts (see
3mffolder) - Large ring gear (printed, 216 teeth)
- Small drive gear (printed, 36 teeth)
- 16-tooth timing pulleys (motor and driven shaft)
- Timing belt (matching pulleys)
- 3-position switch
- Miscellaneous hardware (bearings, fasteners, wiring)
