Introduction: "Charlotte's Web" Style LED Filament Clock

About: Too old to be a 'maker'. I just do DIY and machining.

Ever since I first saw the LED filament light-bulbs I have been thinking that the filaments must be good for something, but it took until the closing-down sale of a local electronics part shop for me to buy some bulbs with the intention to smash them and see what I could do with the filaments.

It didn't take long to decide that they would make an interesting clock, and that it would be a lot of fun to float the segments in the air suspended only by their power wires.

Part way through building it I realised that it was oddly reminiscent of the cobwebs with writing in from the book "Charlotte's Web"

Bear in mind that this device has 80V on the bare metal frame. But using an isolating DC-to-DC converter and power supply means that it is possible to touch the frame and not get a shock. Or at least I haven't.

Step 1: Required Parts

My experiments showed that the LEDs need about 55 volts to light up, and glow with full power around 100V. In use they are arranged in series-pairs for 230V / 240V markets and pure parallel for 110V markets. There is some sort of controller in the lamp-cap but I decided not to try to re-use that as I wanted the filaments to glow a lot less brightly. A fully-bright LED clock would be painful to read. A 7-segment display clock needs 27 control lines and initially I intended to use an Arduino Mega. However when discussing the control of 100V (or so) current through the LEDs with a microcontroller on an unrelated IRC channel I was told of the existence of theDS8880 driver chips for vacuum fluorescent displays. These are perfect for the job at hand as they take 4 bits of BCD input data per digit and convert to 7 segment drive signals with built-in and variable current control up to 1.5mA. Testing showed that 1.5mA was ideal for this application. The drop from 7 bits to 4 bits per digit also meant that I could use an Arduino Nano or Uno for the control as only 13 control lines are needed. ( 2 x 4 bit 0-9 channels, 1 x 3-bit 0-7 channel and 1 x 2-bit 0-3 channel)

I decided to use the MSF 60kHz radio signal to get the Arduino to know the time of day. I have used this before with some success using off-the-shelf receiver modules, one of which I had to-hand. However these seem harder to find currently, so it might be easier to use a WiFi module if anyone feels like making their own version of this clock.

During testing I found that the Arduino Nanos I had all seemed to have a poor clock base, I spent hours waiting for them to synch, then in desperation tried plugging in an old Duemilanove, and that synched in the first minute, and got used.

To create the 80V needed to drive the filaments I used a DC to DC converter. There are many available that work from 12V. The Arduino can be powered by 12V and creates a handy 5V supply from the logic from that. But I forgot this fact and bought an expensive 5V input one. This might still be a good choice, it means that the clock will also run from USB during programming, and the expensive converter ha 5kV isolated outputs. (which means that the 80V frame floats, much reducing shock risk)

The LEDs are available on eBay, it is not necessary to smash bulbs to harvest them.

Shopping list:

Self-fluxing copper wire. 34 SWG (31 AWG / 0.22mm) works.

Arduino

4 x DS8880 VFD drivers

At least 28 LED filaments (but they break easily, so get 25% spares at least)

DC-to-DC converter

47µF 5V capacitor

4.7nF 100V capacitor

Frame material (I used 3mm x 3mm x 0.5 U-section brass)

A base of some sort

Cyanoacrylate adhesive

DC input socket (or panel-mounted USB)

60kHz (or similar) receiver module and antenna.

7-pin male header housings (and matching crimp terminals)

Step 2: Dril the Frame Material

The frame is made from a 1m length of 3mm brass U-section (wall thickness 0.5mm) and would not suggest anything lighter than that.

The LEDs are controlled by low-side switches. This means that each LED is connected to a conductive frame at 80V on the Anode and then an insulated wire leads through the frame to the control ICs.

The frame needs to be drilled for the wires. I decided to drill holes at a regular pitch of 10mm and made a small guide-jig to set the spacing. A groove in the bottom holds the frame channel and a pin (allen key in the photo) indexes on an existing hole and allows two more to be drilled at the chosen spacing.

The drilling jig also doubles as a bending jig. It has a groove to prevent the U-channel from spreading during bending.

I used 1mm holes, but smaller would probably have been better, making gluing easier.

Step 3: Bend the Frame

I printed a template for the outer frame and LED positioning. This was taped to the workbench and then I carefully hand-bent the brass frame to match.

Bends with the open side of the U to the outside were easy, but it was impossible to make the inside bends without breaking the channel until I annealed the material with a blowtorch. It needed a bit of straightening after annealing, so it is best to only anneal the bits that actually need it. Simply warm with the blow-torch until it glows dully and no hotter. Going too far and melting it would be unhelpful.

Once to shape the frame was taped down to the template.

The template can be found as a PDF here. If printed at 1:1 scale (fits on A3 paper) then the perimiter is exactly 1m to suit the length of the material.

Step 4: Wire in the LEDs.

First work out which end of the LED is the Anode (connects to positive voltage). On my LEDs this was marked by a small hole just near the end of the plastic coating.

These ends all need soldering to wires that are soldered to the frame. I am not entirely happy with my wiring pattern, so I am going to refrain from making any suggestions. Poke the wires through your chosen hole, pull somewhat tight and solder in place. Then cut off the excess. I used my Veropen as a dispenser and holder for the wire, partly because it was the correct sort of insulation (the type that can be soldered-through without stripping, known as "self-fluxing")

You can then start to build up the digits, securing the switch (Cathode) wires with cyanoacrylate adhesive at the point that they pass through the holes in the frame. Make sure that you leave plenty of length, to loop all the way round the frame and into the base / control box.

You can support the wires from each other to get round corners and avoid wires passing in front of digits. Solder them if they are power wires, glue them if switch wires. The corners of the digits look like the wires must touch, but when necessary it is easy to keep them isolated from each other.

Step 5: Make the Base and Frame-feet

I made an oak base, and machined brass feet for the frame on my CNC lathe. But any sort of box would do, and 3D-printed feet for the frame would work fine, I am sure.

The feet are held down with M5 screws in tapped holes offset from the centre frame hole. The screws fit in to slots machined in the base. The wires pass through the same slots. The slots allow the spacing of the feet to be adjusted to set the tension in the wires (to some extent).

One of the screws additionally has an eyelet and wire to supply the +80V power to the brass frame.

The STL files for the antenna bracket and PCB mount are on my Github.

Step 6: Make and Test the Control PCB

The means of making the control PCB is covered in a previous Instructable.

I did not work from a schematic, I made it up as I went along. However I have made a schematic after the fact.

PDF Format or KiCAD

This schematic may lack some errors that the Arduino sketch has coded round, and might have extra errors that the real clock lacks.

The important points to bear in mind is that the DC-DC converter should be connected to the V-in pin of the Arduino and the logic power and radio receiver should be connected to the regulated 5V. This means that the Arduino and converter can run from any PSU up to 12V and the logic still only sees regulated 5V.

Step 7: Mount the Digits to the Base and Sort Out All the Wires.

With the wires temporarily held in to the channel with little bits of tape the many strands can be led through in to the base. I used an adjustable step-up converter to work out which wire was which. I first set it to a voltage which would just light a loose LED filament then poked the positive output through a frame hole. Then by touching the cut end of the enamelled copper wire end to the negative supply wire from the converter I could see which segment each led corresponded to. I then crimped the wire into a pin and and slotted in part-way in to a connector.

The terminals do not conduct after crimping, they need to be also soldered to break through the enamel insulation. After soldering the pins were pushed all the way home.

Step 8: Flash the Arduino

The Arduino sketch can be found here.

https://github.com/andypugh/LEDClock

There are two sketches, one for running the clock and one which simply runs through the numbers 0 to 9 on each channel.

This test sketch will allow you to work out which headers in the output pins need to be swapped, and if any of the BCD data lines need to be swapped. (If you look at the sketch you will see that I needed to swap a couple of channels due to wiring goofs, these were easier to fix in software).

Step 9: Wait in Frustration for the Radio Synch

The radio clock needs to get a full minute of data. The Arduino sketch flashes the centre bar of the tens-of-hours digit to echo the incoming radio data, and the minutes show how many unfaulted data bits have arrived. If it gets to 60 then there is good data and the time is displayed.

In a spirit of full disclosure, this is a simulation. I could only seem to get it to synch when powered from the USB of my Mac and when located somewhere un-photogenic. In the case of real data the one-second pulses are different lengths, to encode the binary.

There is also a lazy element (it glows, but dimmer than the others) The LED itself is good. I fear a problem with the driver chip but I will try re-wiring the enamelled copper first. (in fact I will probably just run an extra wire)

Step 10: Finishing Up.

The wires can be held in to the channel with a length of the stripped insulation from some 1.5mm2 wire. But be careful not to damage the thin wires.

Disclaimer: I do not claim to be the first to think up the idea of using these filaments for a clock, but I did come up with the idea independently. When researching for suitable drivers I found this post from 2015 which shows a clock made from the same filaments (though his seem to be flexible, which would have been a lot easier).

I may be the first to dangle them in space on their power wires, but I wouldn't care to bet on that either.