Introduction: Word Clock Controlled by 114 Servos
What has 114 LEDs and is always running? As you may know the answer is a word clock. What has 114 LEDs + 114 servos and is always moving? The answer is this servo controlled word clock.
For this project I teamed up with a friend of mine which turned out to be a must because of the large effort of this build. In addition, my electronic and his mechanical skillset complemented each other quite well. The idea for this adaptation of the popular word clock came to us while we were making a regular one as christmas gift. There, we noticed that it is also possible to project the letters from the back onto a white sheet of paper. At the time this was only a workaround solution to hide our crappy craftsmanship since we ended up with a lof of bubbles while attaching a vinyl sticker with the letters to the back of a glass plate. We then noticed that one can achieve interesting effects when bending the sheet of paper since the letters change size and become blurred. This made us come up with the idea to make a word clock where the letters are projected from the back onto a screen and can be moved back and forth to change the size of the projected image. At first we were a bit reluctant to build this project because of the costs and effort it takes when you want to move each of the 114 letters individually. So we tossed with the idea to make a version where just every word that is used to display the time can be moved back and forth. However, after seeing that the Epilog contest was coming up on Instructables asking for epic projects, and also after finding relatively cheap servo motors, we decided to go all the way and make a proper version where each letter is individually controlled by a servo.
ATTENTION: This is not a one-day build!
To give you an idea about the effort that was involved in this project consider the following numbers. The finished clock contains
- 798 individual 3D printed models (total printing time ~ 200 hours)
- ~600 screws + ~250 nuts and washers
- ~500 wires (total length ~ 50 m). Not counting the wires which were already attached to the servos.
Step 1: Design
The clock was designed with Autodesk Fusion 360 and Inventor. As you can see the clock consists of 114 letterboxes which are moved by linear actuators that are in turn driven by servo motors. Each letterbox contains an LED that projects the letter onto the back of a screen made of white PVC foil. All components are housed in a wooden frame.
Step 2: Gathering Materials
- 114x SG90 micro servo motors (ebay.de)
Although the servos were labeled with the name of the popular brand "Tower Pro" they are most certainly cheaper knockoffs. However, as the price of the knockoff is about 1 EUR compared to 3 EUR for the original this makes the whole project way more affordable. Apparently, the knockoffs also draw less current (of course this also implies less torque) which made it more easy to find a suitable power supply for the whole project.
- 5 m WS2812B LED strip, 60 LEDs/m (ebay.de)
- 8x 16 Ch PWM servo driver PCA9685 (ebay.de)
- DS3231 RTC module (ebay.de)
- Arduino nano (ebay.de)
- VS1838B IR receiver + remote (ebay.de)
- 5 V, 10 A power supply (ebay.de)
- 20x 15 cm servo extension cable (ebay.de)
- cable DC socket to bare wire (conrad.de)
- 300-500 Ohm resistor
- 1000 µF capacitor (> 5 V)
Materials for frame
- wooden slats
- 2 pcs 40 x 10 x 497 mm
- 2 pcs 12 x 12 x 461 mm
- 2 pcs 12 x 12 x 20 mm
- 2 pcs 12 x 77 x 481 mm
- 2 pcs 12 x 84 x 489 mm
Screws, cables, etc.
- 228x M2 screws, 8 mm long + washers + hex nuts
- 228x self tapping screws M2.2, 6.5 mm long
- various wood screws
- 50 m, 0.22 mm2 (24 AWG) wire
In addition, this project required an extensive amount of 3D printing and soldering. The back plate was produced via laser cutting. The frame was build with a circular saw, jigsaw and drill. As for every decent project we also used a lot of hot glue, also some epoxy and plastic glue.
The total costs for this project came to about 350 EUR.
Step 3: 3D Printed Components
Each letter box consists of a 3D printed cover that acts as shadow mask and a base plate onto which an LED will be attached. The base plate includes four dowel pins to help alignment onto the actuator and six holes for feeding through the LED cables. In total this makes 228 models which were all printed from black PLA (Formfutura EasyFill PLA) with 0.4 mm layer height. Total printing time on my Anycubic Kossel Linear Plus was about 23 hours for the letter covers and 10 hours for the base plates. All stl files can be found in the attached zip file.
The actuator design was adapted from the Linear Servo Extender by Roger Rabbit which came in very helpful. Since the parts fit tightly together they should be printed on a decent 3D printer. Small layer height is not as important (0.2 mm is fine) as a small nozzle diameter (we recommend 0.4 mm). The parts should be printed in the shown orientation. Each actuator consists of 5 individual parts, since we needed 114 actuators this means 570 parts (!) in total. To print these we used the combined power of several professional 3D printers (Ultimaker S2+, Ultimaker S5, Lulzbot TAZ6, Sindoh 3D Wox DP200). Still we had a lot of failed prints on the parts and I included some pictures for your amusement. The total printing time was about 150 hours (!). Again the stl files can be found in the attached zip file.
Step 4: Constructing the Frame
The frame was contructed from wooden slats and multiplex board. The parts were cut using a circular saw and a jigsaw and then fixed together using wood glue and wood screws. The top and bottom cover was also stained to give it a nicer look. A detailed description of the parts including all the dimensions can be found in the attached drawings.
Step 5: Assembling the Letter Boxes
Assembling the letterboxes was a lot of work and took a very long time, especially the soldering. This is because every step you make has to be repeated 114 times.
- Cut 114 individual pieces from the LED strip
- Tin all LED pads
- Attach each LED to the 3D printed backplate of a letterbox. The LED should be centered. We also secured it with hot glue.
- Next we prepared 3x114 = 442 wires, i.e. cutting to length, stripping the ends and tinning them. The length of each wire was 10 cm each except for the wires connecting the last letter to the dots which has to be longer (~25 cm). Also the wires connected to the first letter that will be connected to the arduino and power supply should be longer.
- Diasy chain LEDs using wires. The wires are fed through the holes in the 3D printed backplate of each letterbox.
- The front cover of the letter box was attached with glue
- Parts of the linear rack for the actuator need to be glued together
- Linear rack gets attached to the back of the letterbox using glue
Step 6: Assembling the Actuators
Again assembling the actuators was a very tedious procedure that took a long long time.
- Attach servo to 3D printed housing using the included screws
- The round gear is attached to the servo using the included plastic cross but first the cross needs to be cut to shape and attached to the gear using epoxy.
- Attach gear to servo using the included screw
- Before inserting the linear rack each servo was zeroed to the same position
- Inserting the linear rack with the letterbox
- Inserting two M2 hexnuts in the 3D printed housing which will be used to attach it to the backplate later
- Close housing with 3D printed cover using the M2.2 self tapping screws
In the end we ended up with a big chunky mess of diasy chained actuators as shown in the picture above
Step 7: Making the Backplate
The back plate was laser cut from 3 mm thick HDF wood using a CO2 laser cutter from our local maker space. At first we tried plywood but it turned out to be much too flimsy to support the weigth of all the components. It would have been even better to use aluminum in this case but it is of course more expensive and cannot be cut with a CO2 laser. The dxf file for the backplate is attached.
Step 8: Attach Components to Backplate and Wiring
At first the PCA9685 boards should be attached to the backplate using PCB standoffs. Then the Arduino nano and RTC module can be placed as shown in the picture above. For the latter two we used 3D printed holders that were attached with hot glue. Components were connected as shown in the wiring diagram. Note that it is best to power every PCA9685 separately via the terminal block. At first we daisy chained also the V+ and GND connectors and connected only the terminal block of the first board (as suggested on the adafruit page), however, in this case all current is going through the first board and we ended up burning the MOSFET of the reverse protection circuit. There is also a spreadheet attached showing the cabling of the servos. Extension cables for the servos where used whenever needed. Note that you have to assign different I2C addresses to each PCA9685 as explained on the adafruit page.
The actuators were then attached to the backplate using 228x M2 screws. The work was again very monotonous but after it was finished the clock was already starting to take shape. We also tried to organize the servo cables as good as possible but in the end the cabling was still very messy.
Power was supplied by feeding the DC cable through the backplate and connecting it to a terminal block.
Step 9: Attaching Backplate to Frame
After all components were mounted and the cables organized, we attached the backplate to the frame using 6x M4 screws. Unfortunately, we left very little space for all the cables to fit so they had to be squeezed in a little.
Step 10: Calibrating the Servos
Since the height of all letterboxes was slightly different after mounting we used the attached code to calibrate all servos so that the letterboxes have the same minimum and maximum positions. For the maximum position we tried to place the letterbox as close as possible to the screen. The calibrated min/max positions for every servo are then later entered into the main code.
Step 11: Uploading the Code
Attached is the main code for the word clock. There are three type of effects for showing the time.
- Quickly move all letters to back (one after another) and light LEDs with equal random color. Then quickly move letters that display the time to the front one after another and light each word in a random color.
- Quickly move all letters to back (one after another) and light LEDs with equal random color. Slowly move each word that displays the time to the front (all letters simultaneuosly) and fade color from background color to a random value.
- Quickly move all letters to a random position (one after another) and light LEDs with different random color. Then slowly move all letters to back and fade the color. Continue with 1. or 2.
I also wanted to implement an effect where the dot that is showing the current minute is gradually moving forward and fading color so that it is at the front positon with the correct color when the minute is finished. Unfortunately, I did not get it working yet because it seems to make the IR receiver unresponsive.
Step 12: Attaching the Screen
At first we wanted to use white fabric as screen. The problem was that after attaching it to the frame the fabric bent down in the center and we ended up with a pincushion distortion. We then decided to instead use a thin white PVC foil for the screen. The foil is also advertised for making lamp shades so it has a reasonable transmission but it is not seethrough so the black letterboxes stay hidden. In our first trial we attached the foil using epoxy but it did not stick too well so we switched to hot glue. Be careful though that if the glue is too hot it can actually melt the foil. Excess foil was removed with an exacto knife.
Step 13: Attaching the Top and Bottom Cover
Finally the stained wood covers were attached to the top and bottom. The dark colour makes a nice contrast to the white screen. The IR receiver was fed through the hole in the backplate and fixed to the top cover with hot glue.
Step 14: Finished Clock and Summary
After two months of intensive the work the clock was finally finished and working. Overall we are very happy with the result. Moving the letters behind the screen paired with changing the colors of the LEDs produces very cool looking effects. In the end the letters did not line up perfectly and the screen was not 100% flat but this almost makes it look even nicer. There are certainly things which can be improved but I do not think that there will be a version 2.0 because of the monumental effort of this build, unless next time we outsource the production to China.
If you like this build and managed to scroll down all the way to the bottom please vote for us in the Epilog Contest.
First Prize in the
Epilog X Contest
1 Person Made This Project!
- rg373 made it!