Like most websites, SGL uses cookies in order to deliver a secure, personalised service, to provide social media functions and to analyse our traffic. Continued use of SGL indicates your acceptance of our cookie policy.

• entries
4
292
• views
2,265

# Giant 3D Printed Skeleton Wall Clock

2,015 views

Based on some of my other clocks this will be a wall clock for my living room to go above the fireplace.  It will have a dial of around 3ft diameter with a sweep seconds hand as well as the usual minute and hour hands.  It will be driven by a stepper motor controlled by an Arduino Nano with Real Time Clock module to ensure excellent time keeping.  Unlike other clocks it will not have any extras such as moon dial or striking, nor a pendulum.  This will be of the simplest design using an epicyclic gearing principle with minimal number of parts.

• 1

Posted (edited)

As mentioned in the initial description, this clock uses epicyclic gearing to provide the 60:1 and 12:1 reduction ratios between seconds and minutes and between minutes and hours.  This is described in my DIY Skeleton Epicyclic Clock with 3D Printed Gears but I shall repeat it here.

The principle involved is that when a pinion is moved round two spur gears with just one tooth difference and one gear is fixed the moving gear rotates by one tooth for each revolution of the axis of the pinion.  So if the fixed gear has 59 teeth and the moving gear 60 teeth the gear ratio between the rotation of the pinion axle and the moving gear is 60:1.  This is the ratio required for seconds to minutes in a clock.

When the gears are different by two teeth the moving gear turns by two teeth for each revolution of the pinion axle thus if the gears have 22 and 24 teeth the gear ratio becomes 24:2 = 12:1.  This is the minutes to hours ratio.  However, it works out better to have more teeth and a lower modulus to make the motion smoother for 3D printed gears.  Using 44 and 48 teeth gives a gear ratio of 48:4 = 12:1.

Edited by Gina

CAD screenshot of clock with dial and some of the gears.

Minute wheel was oversize - now corrected.

For reference hour pinion centre is 87.625mm from axle.

Seconds and minute hand added.  Need to add another hour gear before the hour hand.

I think this is just about it for the overall design.  Some fine tuning to do and the parts have to be fitted to available ball bearings.

Here's just the drive chain.  This is just the gears and ratchet wheel without the main axle and bearings.

Explanation :-

1. Green wheel is seconds with red pinion attached
2. Red and blue gears form the seconds to minutes reduction with the pinion above
3. Yellow wheel driven by friction from blue gear - provides ability to set time.
4. Pink pinion on yellow wheel drives minutes to hours reduction
5. Orange and pastel pink gears plus pink pinion reduce minutes to hours.

Red and orange gears are fixed.  Green, blue yellow and pink rotate on ball bearings.  The ball bearings keep the wheels aligned.

A few changes.

Seconds wheel printed etc.

The whole gear train except for some of the bearings and axles.

This is how the clock will look on my wall which is primrose yellow.  I may yet reprint one or two parts in a different colour eg. the hour gear which is orange ATM may look better in red.

Real clock on floor.  The long threaded rod with the yellow sleeve will be replaced with a bolt when I get one.

Hour hand printed.

Minute Hand.

Shortened the hour hand and thickened the number 3 to match the others.

Part of clock hung on the wall.

Dial on wall.

Looking great Gina! Might have to tidy that wall up a bit now though

Here the latest build.  The dial looked overpowering so I've streamlined it.

Posted (edited)

Working on the drive unit now.  This is the layout of the stripboard and components.  The RTC (Real Time Clock) is accurate to a minute or two a year.  The stepper motor is a NEMA14.

And the Arduino sketch

```
// Filename :- Giant_Wall_Clock_v1_2018-11-12
// Software timing from RTC on pin 2 using polling
//
#include <DS3232RTC.h>    //http://github.com/JChristensen/DS3232RTC
#include <Time.h>         //http://www.arduino.cc/playground/Code/Time
#include <Wire.h>         //http://arduino.cc/en/Reference/Wire (included with Arduino IDE)
//
String VerString = " Giant_Wall_Clock_v1_2018-11-08";
boolean lastSqWave = 0;
boolean ledON = 0;
int count = 0;  // Used to flash LED
int sqwPin = A6;
int dirPin = 5;  // DIRECTION pin
int stepPin = 6; // STEP pin
int slpPin = 7;   // Sleep pin
int rstPin = 8;  // Reset pin
int ms3Pin = 9;  // Microstepping pin
int ms2Pin = 10;  // Microstepping pin
int ms1Pin = 11;  // Microstepping pin
int enPin = 12;  // Enable pin
int ledPin = 13;  // Internal LED pin
//
void setup() {
Serial.begin (9600);     // Enable Serial Monitor via USB
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(slpPin, OUTPUT);
pinMode(rstPin, OUTPUT);
pinMode(enPin, OUTPUT);
pinMode(ms1Pin, OUTPUT);
pinMode(ms2Pin, OUTPUT);
pinMode(ms3Pin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ms1Pin, 0);  //  full-step mode
digitalWrite(ms2Pin, 0);  //  full-step mode
digitalWrite(ms3Pin, 0);  //  full-step mode
digitalWrite(enPin, 0);   //  enable
digitalWrite(rstPin, 1);  //  not reset
digitalWrite(slpPin, 1);  //  not sleep
digitalWrite(dirPin, 1);  //  set on test
pinMode(sqwPin,INPUT_PULLUP);   //  RTC timing pin
Serial.println(VerString);
setSyncProvider(RTC.get);  // the function to get the time from the RTC
if(timeStatus() != timeSet)
Serial.println(" Unable to sync with the RTC");
else
Serial.println(" RTC has set the system time");
RTC.squareWave(SQWAVE_1_HZ);    // 1Hz square wave
}
//
void runClock(void){
for (int i = 199; i >= 0; i--) {
digitalWrite(stepPin, 1);
delayMicroseconds(10);     // Make STEP pulse 10μs long
digitalWrite(stepPin, 0);
delayMicroseconds(30); }     //
ledON = !ledON; digitalWrite(ledPin, ledON); }  //  flash LED 1s on 1s off

//
void loop(){
boolean sqUp = ((analogRead(sqwPin) > 500));  // read logic level of 1Hz square wave
if (sqUp != lastSqWave)  { lastSqWave = sqUp; if (sqUp); { runClock(); } }  //  Call runClock on rising edge of RTC square wave
}
// End```

Edited by Gina

22 hours ago, Gina said:

Working on the drive unit now.  This is the layout of the stripboard and components.  The RTC (Real Time Clock) is accurate to a minute or two a year.  The stepper motor is a NEMA14.

*Sketch*

Hi Gina,

What software is this?, I'm looking into using schematic software myself.

The layout diagram was done in LibreOffice Draw and the Arduino sketch (code) in the Arduino IDE.

Finished clock except for the motor drive unit - tested with a DC motor-gearbox.  Arduino Nano arriving tomorrow.  The one I had was faulty.

Posted (edited)

Got motor unit working but the motor is very noisy so I've ordered a couple of TMC2208 driver modules (one spare or for other clock) to replace the A4988 driver to stop the noise.

Edited by Gina

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.