Gimbal Clock

by mosivers in Circuits > Clocks

13435 Views, 67 Favorites, 0 Comments

Gimbal Clock

IMG_0180.JPG_edited.JPG
MVI_0182-ezgif.com-video-to-gif-converter.gif
Gimbal Clock

As I was trying to come up with new ideas on how to display time, I came across these 3D printed illusions where numbers or letters appear different when viewed from different sides. You can find more examples when searching for "dual letter illusion". The effect is created by extruding different numbers/letters from a block after 90° rotation.

In my clock each block can be rotated along two axis hence the name gimbal clock. The project gave me a good excuse to use some of the many servo motors that I still have left over from my Servo Wordclock project.

Supplies

IMG_20241004_134252.jpg

The project uses very few parts as the electronics are rather simple you just need the servos, a driver board and a microcontroller. The mechanical parts were fully 3D printed from PLA.

  1. 13 pcs MG90s servos
  2. PCA9685 PWM driver board
  3. Wemos D1 mini
  4. 3D printer

CAD Design

One of the main challenges of this project was the design of the number blocks. At first, I searched for a "square font" where all digits have the same height and width which allowed to extrude them from a simple cube. I then figured out how to arrange the digits in order to have as many of them displayed by a single block. One of the constraints was that I wanted to rotate just around two axis and with a maximum rotation angle of 180° for a standard servo. In order to have the digits more closely together I even constrained the rotation angle of the vertical axis to 90°.

In the end I came up with a design whre I placed the digits from 0-5 for the ten-minutes on two blocks and the digits from 0-2 for the ten-hours on just one block. For the digits from 0-9 (hours and minutes) I needed three blocks. The blocks which are unused are rotated by 45° so that the digits are "unreadable".

3D Printing

IMG_20241003_202207.jpg

All parts where 3D printed from PLA. For the number blocks I changed between black and orange filament. The number blocks and servo holders where printed with supports. The housing was divided into two parts in order to fit on the print bed of my MK4. All stl files can be found on my github.

Assembly of the Housing

IMG_20241003_202238.jpg
IMG_20241004_153002.jpg

The two parts of the housing were joined with super glue. I then attached the Wemos board with hot glue and the servo driver board with M2x4 screws.

Assembly of the Gimbal Mounts

IMG_20241003_203314.jpg
IMG_20241003_203751.jpg
IMG_20241004_141001.jpg
IMG_20241004_143840.jpg
IMG_20241004_145215.jpg

Assembly of the gimbal mounts is rather straight forward

  1. attach servo motors to gimbal mounts
  2. attach number blocks to servo motors
  3. fix servo cables with zip ties
  4. attach servo motos and gimbal mounts to base plates

Wiring Electronics

IMG_20241004_153945.jpg

The electronics were wired in the following way.

Wemos D1 mini <-> PCA9685

D1 <-> SCL

D2 <-> SDA

5V <-> V+

3.3V <-> Vcc

GND <-> GND


horizontal axis servo motors (from bottom to top) <-> PCA9685

ten-hours <-> CH0

hours <-> CH1-CH3

ten-minutes <-> CH4-CH5

minutes <-> CH6-CH8


vertical axis servo motors <-> PCA9685

ten-hours <-> CH12

hours <-> CH13

ten-minutes <-> CH14

minutes <-> CH15

Code

The code was written with the Arduino IDE. After uploading the KeypadControl() function was used to manually move the servos to the desired position for each digit. The positions are then document in the servos.h file.

After commenting out the KeypadControl() function the clock can be run in normal mode where it creates an wifi access point that you can use to configure your wifi settings. It then restarts and connects to your local wifi and fetches the time from an NTP server.

The code can be found on my github.

Concluding Remarks

IMG_20241004_155702.jpg

I like the clock because the design and built was not too complicated but the working principle is still new and I believe has not been done before. There are a few things though which could be improved

  1. using LEDs to indicate which number block shows the current digit. Maybe illuminating them from the inside using transparent filament
  2. making everything less wobbly possibly by using larger servos and maybe adding a counter balance to the gimbal mounts
  3. improving the number block design especially for the digit "9" which is hard to recognize