The Corona Clock

7,828

30

15

Introduction: The Corona Clock

About: 3D printing and programming robots made easy

As the Coronavirus spreads across the planet and more and more countries are confining their citizens to their own homes to slow down the virus many of us are left going through days without anything to do. Luckily Instructables is here to lend a hand and with a few ideas in mind the Instructables Clock contest seemed like the perfect pass time :)

If you too are struggling with boredom in the household due to Coronavirus confinement have no fear the Corona Clock is here for you, with a guaranteed 2 days of build time plus endless hours of watching time fly by with your new Corona Clock!

So, the idea behind the clock was to have steel balls on the face plate of the clock instead of hands guided with magnets so that the balls moved as if by magic around the Clock. The outer ball represents the minutes and the inner ball represents the hours.

I designed all the CAD files using Autodesk Fusion 360.

The whole thing is programmed using an Arduino.

I hope you enjoy this instructable and maybe you too will find it to be the perfect Print/Build challenge in your free time.

Without any further ado lets get Building!!!

Supplies

ELECTRONICS:

  • 2x Steel balls between 10 and 15 mm diameter
  • 2x 15mm diameter x 3 mm width Neodymium magnets (Link Here) I would buy more than 2 just in case you break them as I did :(

PLASTICS:

The parts can be printed in PLA or PETG or ABS.

You'll need 2 colour filaments to get the best results.

Please note a 500g spool of each is more than enough to print 1 Clock

3D PRINTER:

Minimum build platform required: L130mm x W130mm x H75mm

Any 3d printer will do. I personally printed the parts on the Creality Ender 3 which is a low cost 3D printer under 200$ The prints turned out perfectly.

Tools:

1x Small cross head screwdriver is all you need :)

Step 1: 3D Printing the Parts

All the Parts are available to download on Pinshape (Link Here)

I Meticulously designed all of the clocks parts to be 3D printed without any support materials ,rafts or brims required while printing.

All the parts were test printed on the Creality Ender 3

  • Print time: Approx 20 Hours
  • Material: PETG
  • Layer Height: 0.3mm
  • Infill: 15%
  • Nozzle diameter: 0.4mm

The parts list for the clock is as follows:

White:

  • 1x Base
  • 1x Lid
  • 1x Servo Holder
  • 1x Cog
  • 1x Servo Rack
  • 1x Inner circle
  • 1x Outer circle
  • 1x Arm Extension
  • 4x Pins
  • 2x Button Holder
  • 2x Feet clips

Red:

  • 2x Feet
  • 1x Plate

Post processing:

Unless you are very lucky or have a very expensive printer some of the parts will need sanding where the parts rotate and slide between each other

Step 2: Installing Arduino

The Corona Clock uses Arduino C++ programming in order to function. In order to upload programs to the clock we will be using Arduino IDE

  • Install Arduino IDE on to your computer

Arduino IDE (Link Here)

In order to make sure the code works in Arduino IDE follow the following steps

  • Download the desired Arduino Code below (Corona Clock.ino)
  • Open it in Arduino IDE
  • Select Tools:
  • Select Board:
  • Select Arduino Nano
  • Select Tools:
  • Select Processor:
  • Select ATmega328p (old bootloader)
  • Click the Verify button (Tick button) in the left upper corner of Arduino IDE

If all goes well you should get a message at the bottom that says Done compiling. And thats it you have now completed Step 2 !!!

Step 3: The Code

Heres a look at the code for those of you interested you will most probably have to tweak the servo arm mouvements to calibrate them perfectly as each servos precision varies.

#include

Servo myservoPUSHER; Servo myservoSLIDER;

const int buttonMinutes = 4; int buttonStateMinutes = 0;

int FiveMinuteCounter = 0; int OneHourCounter = 0;

unsigned long time_now = 0;

void setup() { Serial.begin(9600);

pinMode(buttonMinutes, INPUT); myservoPUSHER.attach(2); myservoSLIDER.attach(3); myservoPUSHER.write(90); myservoSLIDER.write(90); delay(5000); myservoPUSHER.detach(); myservoSLIDER.detach(); }

void loop() { FiveMinuteCounter = ((millis()/1000) % (300)); // FiveMinuteCounter = 0 every 5 minutes

buttonStateMinutes = digitalRead(buttonMinutes);

Serial.print(" FiveMinuteCounter: "); Serial.print(FiveMinuteCounter); Serial.print(" OneHourCounter: "); Serial.print(OneHourCounter); Serial.print(" buttonStateMinutes: "); Serial.println(buttonStateMinutes);

// if button pressed move minute ball 5 minutes forward

if (buttonStateMinutes == 1) { myservoPUSHER.attach(2); myservoSLIDER.attach(3); myservoPUSHER.write(30); wait5seconds(); myservoSLIDER.write(130); wait5seconds(); myservoPUSHER.write(140); wait5seconds(); myservoPUSHER.write(90); wait5seconds(); myservoSLIDER.write(90); wait5seconds(); myservoPUSHER.detach(); myservoSLIDER.detach(); OneHourCounter++; }

// if 5 minutes has passed move minute ball 5 minutes forward

if (FiveMinuteCounter == 0) { myservoPUSHER.attach(2); myservoSLIDER.attach(3); myservoPUSHER.write(30); wait5seconds(); myservoSLIDER.write(130); wait5seconds(); myservoPUSHER.write(140); wait5seconds(); myservoPUSHER.write(90); wait5seconds(); myservoSLIDER.write(90); wait5seconds(); myservoPUSHER.detach(); myservoSLIDER.detach(); OneHourCounter++; }

// if minute ball has moved 12 times move hour ball 1 hour forward if (OneHourCounter >= 12) { myservoPUSHER.attach(2); myservoSLIDER.attach(3);

myservoPUSHER.write(65); wait5seconds(); myservoSLIDER.write(50); wait5seconds(); myservoPUSHER.write(130); wait5seconds(); myservoSLIDER.write(90); wait5seconds(); myservoPUSHER.write(90); wait5seconds(); myservoPUSHER.detach(); myservoSLIDER.detach(); OneHourCounter = 0; } }

void wait5seconds() { time_now = millis(); while(millis() < time_now + 500) { //wait approx. 500 ms } }

Step 4: Assembling the Corona Clock

All the following Steps are depicted in the Assembley Video above

  1. Upload the code to the Arduino Nano
  2. Secure the Arduino Nano to the Nano Shield
  3. Screw one of the Servos on to the Servo rack as shown in video
  4. Place the Servo and Servo rack in the Servo holder and pass the cable through the slot as shown on the video
  5. Plug that Servo in to pin D2 of the Nano shield
  6. Plug the other Servo in to pin D3 of the Nano shield
  7. Screw the other Servo to the Base as shown in the video
  8. Plug the USB cable in to the mains power or laptop
  9. Plug the other end of the USB cable in to the Arduino Nano for 2 seconds until the Servos reach their 90 degree home position
  10. Unplug the USB Cable from the mains power or laptop and Nano shield
  11. Place a Servo arm in to the Servo extension
  12. Screw that Servo arm on to the Servo plugged in to pin D2 at a 90 degree angle to the servo body exactly as shown on the video
  13. Connect the Button to the GND, V+ and S pin to the D4 pin of the Nano Shield with 3 dupont cables
  14. Slot the 4 Pins into the Base of the Clock
  15. Place the Arduino Nano shield in to the Base
  16. Slot the button in to the base
  17. Secure the button in place with the button holder
  18. Slot the Feet in to their respective slots in the base
  19. Secure the feet in place with the feet clips
  20. Plug the USB cable in to the Arduino through the remaining hole in the base
  21. Slot the Servo Holder in to the Base over the 4 pins Make sure to install it the right way around (Video)
  22. Slot the Circle guide pin on to the Servo holder
  23. Place the remaining Servo arm in to the cog
  24. Screw that Servo arm on to the other Servo at a 90 degree angle to the servo body and with the servo rack positioned at the center of travel (video)
  25. Position the inner Circle in place magnet hole facing downwards (6) (cable exit hole)
  26. Position the outer Circle in place magnet hole facing upwards (12)
  27. Insert the magnets with caution (Neodymium magnets are strong and can cause dammage to themselves and others if put in contact with one another)
  28. Place the plate in to the lid the plate lining up with the lid holes
  29. Place the lid over the top with number 6 facing the cable exit hole
  30. Place the steel balls on the top where they magnetically stick in place

And thats it the clock should be fully assembled and ready to function!

Step 5: Setting the Corona Clock

In order to set the clock the outer minute circle must start in the upper 12 position.

fortunatly the inner hour circle can start in what ever position you want

You can then proceed to switching the Clock on by plugging it in and using the button to adjust the minutes

and manually rotating the Steel ball for adjusting the hours.

Step 6: Thoughts and Design Iterations

This was an awesome project and challenged my mechancal engineering abilities to the full !

I had had this idea in mind for a while now and to of actually brought this project to life is amazing. It was a struggle, especially figuring out the timing mechanism and a way of using cheap 180 degree SG90 servos to power it.

It has taken me just under a week full on to accomplish this project I went through at least 10 design iterations to accomplish this project some of which are in the photo above. It was all worth it, time well spent!

Clocks Contest

Participated in the
Clocks Contest

Be the First to Share

    Recommendations

    • Make it Fly Challenge

      Make it Fly Challenge
    • Backyard Contest

      Backyard Contest
    • Fruit and Veggies Speed Challenge

      Fruit and Veggies Speed Challenge

    15 Comments

    0
    peteb72
    peteb72

    1 year ago

    What a great little clock, nice job!!! Would be great to read a description of how the 180 servos work, can't really make it out from the video of you putting it together.

    Thanks!!

    0
    Sebastian Coddington
    Sebastian Coddington

    Reply 1 year ago

    Thanks! I would have loved to describe a bit more but I found it quite hard to describe in images how the mechanism worked heres an image where the inner and outer circles are transparant and you can see how each servo moves inside the casing both inner and outer circles have 12 paddles on them one of the servos pushes the paddles forward 1 increment the other switches that servo between the inner circle outer circle and neutrel

    descriptive image.jpg
    0
    peteb72
    peteb72

    Reply 1 year ago

    Thanks Sebastian, much appreciated

    Pete

    0
    pierresmit
    pierresmit

    Question 1 year ago

    I tried to purchase the files but was refused even though I have an account with them. Is there another way I can purchase the file from you?

    0
    ChrisWx
    ChrisWx

    1 year ago

    Will you ever post the 3d files to print the parts? Some pics of the backs of the rings would be nice, too.

    0
    GuyN15
    GuyN15

    1 year ago

    It looks like a cool project and I appreciate the effort. Your assembly video was nicely done with one criticism, it never shows how it works. I would really like to see the internals doing their thing.

    0
    Sebastian Coddington
    Sebastian Coddington

    Reply 1 year ago

    Thanks it looks like I'll have to add them your not the only one that asked!
    heres an image where the inner and outer circles are transparant and you can see how each servo moves inside the casing both inner and outer circles have 12 paddles on them one of the servos pushes the paddles forward 1 increment the other switches that servo between the inner circle outer circle and neutrel

    descriptive image.jpg
    0
    Diez66
    Diez66

    1 year ago on Introduction

    Love it, most likely I will not make it, sorry, it looks great.
    I just wanted to add, during this time we must keep our hands off stuff, touch nothing so; a clock with no hands, awesome.

    0
    tomatoskins
    tomatoskins

    1 year ago

    This is brilliant! I appreciate the mechanism you designed so both hour and minute hands can rotate! Very nice!

    0
    Sebastian Coddington
    Sebastian Coddington

    Reply 1 year ago

    Thanks!
    The only one I had ever seen in production before only used one ball and another cool looking one used magnetic levitation which was beyond my reach.
    I wish I could have had the hours and minutes rotate in a more traditional fashion like yours! Mine moves in 5 minute intervals which was the best I could do with only 2 SG90 servos. I need to experiment with stepper motors which allow more precise mouvements it's just that I'm so used to using 180 degree servos in projects!

    0
    zakbobdop
    zakbobdop

    1 year ago

    Glad to see that you're doing something productive in your spare time!

    0
    Alex in NZ
    Alex in NZ

    1 year ago

    Brilliant! (and wonderful to watch). Thank you for sharing your work :-)