3D Printed Holo Clock With Arduino

7,751

175

16

Introduction: 3D Printed Holo Clock With Arduino

About: I got a 3D printer and now i"m hooked.

Hello everyone! This is my first instructable.

This project is a 3D printed clock powered by a stepper motor and is controlled by an Arduino Uno. It was designed in OnShape over the course of a month. It keeps time very precisely and only needs to be plugged into a USB port once programmed.

Supplies

Arduino Uno

24BJY-48 stepper motor

ULN2003 stepper motor driver

6 male to female jumper wires

A 3D printer

2 different colors of filament (I used black and white PLA+)

2 M4 nuts

2 M4 screws 6mm long

4 M3 screws 10mm long

8 M3 washers

Masking tape

Super glue

M4 and M3 allen wrenches

3.18mm x .335mm brass tube (see below)

Link for the brass tube: https://www.amazon.com/PRECISION-METALS-8127-RND-Tube/dp/B000BQOPWM/ref=sr_1_4?dchild=1&keywords=precision+metals+1%2F8+x+.014+brass+tube&qid=1626543332&sr=8-4

Note: I only used such a strange tube because it was all I had on hand.

Step 1: Print the Parts

All parts should be printed at .2mm layer hight.

For the gears: All of them should be printed in black, and only 50t-10t needs support.

For the other parts: All of them should be printed in white, and only minutes ring and hours ring need support.

The images show where support is required on the parts.

Step 2: Cut the Brass Tubes

To cut the tubes, put the brass tube into the vise and cut it with a dremel.

The lengths of the tubes are:

45mm (make 3)

34mm (make 1)

25mm (make 2)

20mm (make 1)

Note: These are not the actual lengths of the tubes, but rather longer versions that will be sanded down later.

The video below shows how I cut the tubes using my Dremel 200.

Step 3: Sanding the Tubes

All of the tubes from the previous step should be sanded to the lengths below.

The 45mm tubes should be sanded to 41mm.

The 34mm tube should be sanded to 29.4mm.

The 25mm tubes should be sanded to 22.7mm.

The 20mm tube should be sanded to 17.7mm.

All of this should be done in a vise and with a dremel.

Step 4: Framework Assembly Pt. 1

Glue the roller and roller shaft together and place it in one of the 3 holes on frame A with an arrow pointing to it and glue it in the hole. Repeat this 2 more times. Repeat this on frame B.

Step 5: Framework Assembly Pt. 2

Using the pictures above as a guide, install the stepper motor into frame A using 2 M4 nuts and screws. After the motor is installed, take a small amount of masking tape and wrap it around the shaft of the stepper motor once. This will ensure that the shaft of the stepper motor will hold its gear tightly.

Step 6: Framework Assembly Pt. 3

Inner frames A, B, and C can all be glued to the framework using the method depicted in the first 2 pictures. To put the inner frames on, you should use one of the brass tubes to stabilize the frame when you glue it on to one of the main frames. The last picture shows where each of the inner frames should be once they are glued on. Frame A is on the right and frame B is on the left.

Step 7: Framework Assembly Pt. 4

Glue both of the frame C parts into the indents in frame A.

Step 8: Gears Assembly

The 2 two photos above show the tubes and the gears. Each gear is labeled. Directly above or below each shaft is its length. Next to each end of the shaft is the length of the amount of shaft protruding from the gear. Once you position the shaft, glue it in place. Repeat this for each gear.

Step 9: Adding the Gears

The pictures above show the order in which to add the gears. It also shows the assembly of 60t-10t with a roller and a large roller. Use the last pictures as a reference to see where the gears and washers should go.

IMPORTANT: Remember to put the minutes ring with frame A and the hours ring with frame B. Also remember to set the clock to 12:00 when you assemble it.

Step 10: Adding the Caps

On each side of the clock there are 5 exposed brass tube ends. Glue a cap to each of the exposed ends.

Step 11: Adding the Circuits

Screw the Adruino Uno in to its case using two screws. Do the same with the ULN2003 stepper motor driver.

There are several photos showing the positions of the wires on the board. Remember to connect the stepper motor to its driver.

Step 12: Arduino Code

Download the code below and and upload it to the board. Make sure the motor is rotating.

Step 13: Conclusion

I really hope you enjoyed this project as much as I did.

If you have a questions, comments, or tips, please let me know.

I look forward to making more instructables in the future.

Below is a time-lapse of the clock running for fifteen minutes.

Arduino Contest

Finalist in the
Arduino Contest

Be the First to Share

    Recommendations

    • Stone, Concrete, Cement Challenge

      Stone, Concrete, Cement Challenge
    • Pets Challenge

      Pets Challenge
    • Water Speed Challenge

      Water Speed Challenge

    16 Comments

    0
    IHawke
    IHawke

    23 hours ago

    Great project, and I have started the build.
    Question: I cannot find any stl files for the two enclosures - do you
    intend to include these?

    Ian Hawke

    0
    saulemmetquinn
    saulemmetquinn

    Reply 8 hours ago

    So sorry, updated to include the cases.

    0
    mikemary
    mikemary

    2 days ago

    Really nice project, just the thing to use with my new 3D printer. One question, without a RTC, what keeps the accuracy?

    0
    KISELIN
    KISELIN

    3 days ago

    Gee.. Nice. It took me a good 5minutes to "get" that there's NO HUB but instead them hands rotate from the outer rings Hahahaa. Good thinking.
    I guess you have a "bug" in the lines given here:
    void SetDirection(){
    if(Direction==1){ Steps++;}
    if(Direction==0){ Steps++; } !!! Shouldn't this rather be like: {Steps--;) ? Just asking
    if(Steps>7){Steps=0;}
    if(Steps<0){Steps=7; }

    0
    saulemmetquinn
    saulemmetquinn

    Reply 3 days ago

    I tried what you said and when I uploaded the sketch, it rotated forward then backward continuously rather than rotate in one direction. This part of the program tells it which way to rotate at the end of a cycle, so if both direction 1 and 0 are set to ++, the shaft of the motor will rotate in one direction.

    0
    KISELIN
    KISELIN

    Reply 2 days ago

    Ooh... I see now. I got a bit confused. If you instead wrote:
    if(Direction==1) || (Direction==0) { Steps++;}
    I would understand it.
    Cheers!

    0
    nils2u
    nils2u

    3 days ago

    Really well done Instructable and I love the design!
    I especially like the lack of the central hub - always thought about building something like it - simply really cool!
    As in the post below, you could probably save space and a little money using a smaller ESP and a RTC board, or time online from NTP, but it‘s basically moot - I usually take what I have lying around....
    Great job!

    0
    saulemmetquinn
    saulemmetquinn

    Reply 3 days ago

    You are correct about the boards, but I used what I had. I think i'll update it in the future.

    0
    nils2u
    nils2u

    Reply 2 days ago

    So many things to do.... :)
    With the cool design you have, you could easily do at least a couple more tutorials to teach people about how you created it, how to calculate gears, how to construct in CAD..........
    Thanks again :)

    0
    lacovara
    lacovara

    3 days ago

    A very nice design, and looks pretty good as well. I am thinking that I may need one...

    A minor suggestion: brass tubes are fine, but stainless steel shafts, precision ground, are not terribly expensive. A shaft 200 mm long, 3 mm diameter, with a tolerance of +0/-.005 mm is around $15 at McMaster Carr.

    0
    saulemmetquinn
    saulemmetquinn

    Reply 3 days ago

    You are absolutely correct. I only used brass tubes because it's what I had, and also it is very easy to cut. I found these tubes in a hobby store while and thought they would be useful in the future. I would have used a 3mm tube or shaft if I had one.

    1
    Vmtr
    Vmtr

    3 days ago

    Great design!

    0
    saint.sixtus
    saint.sixtus

    3 days ago

    Really nice design ... sculptural.

    Maybe you could try (not for the contest) to drive it with an ESP32 development board (I think the same code will work). Then you could get it to call up an NTP server and get it to set the time automatically every time you plug it in.

    Good luck in the contest.

    0
    saulemmetquinn
    saulemmetquinn

    Reply 3 days ago

    I am very new to using circuits, but I have been thinking of using a Arduino Nano. Though I will consider using that board once I learn more. Thank you.

    1
    jessyratfink
    jessyratfink

    4 days ago

    This is fantastic! Congrats on your first ible and good luck in the Arduino Contest :D