Jump to content

Stargazers Lounge Uses Cookies

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.

sgl_imaging_challenge_banner_supernovae_remnants.thumb.jpg.0a6deb4bf0886533629e2bdc08293bc9.jpg

  • entries
    4
  • comments
    214
  • views
    952

Giant 3D Printed Skeleton Wall Clock

Gina

262 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.

  • Like 1


21 Comments


Recommended Comments

Gina

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
  • Like 1

Share this comment


Link to comment

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

1893402465_Screenshotfrom2018-11-0118-39-20.png.fb5b7ef8c0009f27cf896a42792d709c.png

Share this comment


Link to comment

For reference hour pinion centre is 87.625mm from axle.

166771850_Screenshotfrom2018-11-0123-13-11.png.3bb495d2ca7628fde1b6efad4ccd2904.png

  • Like 1

Share this comment


Link to comment

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

1906511940_Screenshotfrom2018-11-0123-38-47.png.4fe903d18a2ecd1f913b1e4fb973897e.png

Share this comment


Link to comment

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.

1033413627_Screenshotfrom2018-11-0209-50-09.png.29d6ee19a1b5fd7bd58377a502290509.png

Share this comment


Link to comment

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

67522145_Screenshotfrom2018-11-0211-55-56.png.2b31dc812079c357ed04ba5b8f2624a5.png1699946039_Screenshotfrom2018-11-0211-38-36.png.08872db083bf89aa73e3429f37e9fe90.png

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.

Share this comment


Link to comment

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

128463701_GearTrain01.thumb.JPG.032679a2c1867cf6e23ac3da9703adc7.JPG

  • Like 2

Share this comment


Link to comment

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.

1599637916_Screenshotfrom2018-11-0616-30-26.png.5b547e36fbc0d0b87e47686a276a462d.png

  • Like 1

Share this comment


Link to comment

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

771862308_GearTrainplusDrivePawl01.JPG.074b0c1427d7e35a796c6aff1953aff9.JPG

  • Like 1

Share this comment


Link to comment

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

 

Share this comment


Link to comment

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

65971617_ClockonWall09.JPG.80e64a2c46dfa4cc393e22d67a3ae49d.JPG

Share this comment


Link to comment
Gina

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.

609231992_Screenshotfrom2018-11-1113-26-49.png.5dbc8ad84760e8507d0d2def51641ceb.png

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

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×

Important Information

By using this site, you agree to our Terms of Use.