Learn about the process of assembling a large LED filament clock in this hands-on project video, covering both hardware and software aspects. Watch as the creator troubleshoots and implements improvements throughout the build, resulting in a functional and impressive timepiece!
[0:00] This is a public service announcement.
[0:02] There’s interesting content coming up.
[0:04] So don’t touch that dial!
[0:07] The boards arrived from PCBWay a week or so ago and they look great.
[0:12] I’ve been slowly assembling them in the evenings.
[0:14] There are a couple of videos to watch that lead up to this one - I’ve put the links in
[0:18] the description and they’ll also be at the end of this video.
[0:23] Let’s get on with the assembly.
[0:24] I knew the large digits would be quite big, but I wasn’t quite prepared for how large
[0:29] they actually are.
[0:31] Soldering them up is pretty easy, there is a front and a back to these LED filaments
[0:35] - it doesn’t really make much difference when running them at full brightness, you only
[0:39] really see a difference when running at low current, but for a completely consistent display,
[0:43] I’ve tried to get them all the same way round.
[0:46] I’ve taken the same approach as I would with SMD assembly.
[0:49] I’m adding some solder to one of the pads and then melting the solder while I slide
[0:54] the connector onto the pad.
[0:56] With one of the ends attached we just solder the other end without any problems.
[1:01] Adding a bit of flux to the LED filament connectors really helps with this.
[1:04] I’ve also cranked up the soldering iron temperature a bit as there’s quite a lot of metal to get
[1:10] The positive end of the filament is denoted by these small holes.
[1:14] Inevitably I managed to mess a couple of these up, but it’s quite easy to desolder and redo
[1:20] All the filaments work - it’s fairly easy to test this without any code by just connecting
[1:25] a wire to GND and then touching each resistor - I was slightly worried that there would
[1:29] be some factory rejects mixed in with my batch but they all seem fine.
[1:34] Somewhat counterintuitively the larger filaments run off 3v and the smaller filaments need
[1:39] around 46 volts to light up.
[1:42] I’ve run through the boost circuit in another video and much to my surprise it worked pretty
[1:46] much the first time.
[1:48] One important thing that I forgot when I first powered up the circuit is this pull-down resistor
[1:53] on the gate of the MOSFET - I almost cooked the MOSFET as it was turning itself on and
[1:59] shorting the power supply to GND.
[2:03] Always remember to include a pulldown resistor on the gate of your MOSFETs.
[2:08] I’ve got the oscilloscope wired up to the PWM signal coming from the ESP32 and as we
[2:13] turn the feedback resistor up and down our voltage goes up and down nicely.
[2:18] I’ve turned all the LEDs on and I can slowly ramp up the voltage until they light up nicely.
[2:24] Running the LEDs through a test pattern the voltage stays nice and consistent even as
[2:28] we turn LEDs on and off.
[2:30] It works just as designed.
[2:33] Unplugging the high voltage digits and replacing them with the low voltage large digits works
[2:37] just as well - it’s pretty bright!
[2:40] So let’s get onto the software
[2:42] For the software, I’m using the built-in library to get the time from an NTP server.
[2:48] Network Time Protocol servers are publicly accessible machines that you can use to get
[2:52] the current time.
[2:54] Fortunately, we don’t need to worry about how this works as the library takes care of
[2:58] all the details for us - but if you’re interested I’ll do a video on the subject.
[3:03] We connect to the WiFi network using the standard code and then configure our time source with the ntp server along
[3:09] with offsets for our timezone and daylight savings time.
[3:13] We can then get the current time and pull out the hours and minutes and the date.
[3:18] I’ve added a couple of modes to the clock - we can show the current time with hours
[3:22] and minutes, or we can show the month and day, and I’ve added a little stopwatch.
[3:27] I’ve set this up to show seconds and hundredths of a second.
[3:30] You can start, stop and clear it.
[3:32] And when you’re done you can switch back to the time.
[3:35] This UI is controlled by a very simple state machine.
[3:38] These are a great way to manage a user interface - I might do a video in the future on these
[3:42] as they are a very powerful concept.
[3:45] This is all controlled from the touchpads.
[3:47] I had to do some calibration of the thresholds for these and interestingly they don’t all
[3:51] need the same threshold.
[3:53] I assumed since they were the same shape and size they would behave in exactly the same
[3:57] way, turns out I was wrong.
[4:00] More investigation is required.
[4:02] I think we’re due a deep dive on something, maybe touch would be interesting.
[4:07] So, how well doe the project work?
[4:09] well, it works pretty well - but there’s definitely room for improvement.
[4:13] I covered a bunch of improvements in a previous video at the design stage
[4:17] but now I have the boards completed there are more things I’d like to do.
[4:21] With all the 3v LEDs running we need to supply about 4amps in total.
[4:26] This is too much current to really pull through the USB connector on the ESP32 board I’m using.
[4:32] The diode that prevents us from feeding voltage back into the USB supply is only rated for
[4:36] 600mA and my computer also gets pretty upset when you try and pull too much current through
[4:42] the USB port.
[4:44] I had thought about this in advance and added a barrel jack so I could connect a beefy 5v
[4:49] supply to the board.
[4:51] Unfortunately, if you forget to connect this external power supply the board tries to pull
[4:55] all its power through the USB connector.
[4:58] The addition of a cheap diode to the circuit would have prevented this problem.
[5:02] I’m quite tempted to do a bit of a hack and cut the track and solder one on.
[5:07] Another slightly annoying thing I’ve done is that I added these nice test pads to aid
[5:11] any debugging.
[5:13] They have proved very handy, but you have to hold the probes in place to actually measure anything,
[5:18] it would have been much better to do these as either pins or loops of wire that could be hooked on to.
[5:23] I’m also not too happy with these two indicator LEDs - the 5v indicator is fine - it tells
[5:29] us if the board is receiving power or not.
[5:32] The high voltage indicator is less useful - even when we don’t have the high voltage
[5:36] being generated there’s still 5 volts coming through the inductor.
[5:40] So the LED lights up anyway making it pretty useless.
[5:44] To be honest, I’m not sure how to indicate if the high voltage supply is working - any
[5:49] suggestions in the comments would be welcome.
[5:52] The last thing that has occurred to me is that I should have made the PCB a lot more
[5:57] Each digit could be its own PCB with the shift register and resistors on it.
[6:01] This would have made the board considerably cheaper to have manufactured as it would have
[6:04] been a lot smaller.
[6:05] t would also have given me a lot more flexibility to build a nice case and I could have easily
[6:10] added more digits.
[6:12] I think in hindsight we should also have just abandoned the high voltage filaments
[6:17] the large low voltage filaments are much more impressive and although the boost circuit
[6:21] is fun to play with it does add a bit of complexity.
[6:24] In terms of how it looks, I quite like it, but I think there needs to be more space between
[6:29] the digits.
[6:30] I’m starting to think there’s a follow-up video with version two coming soon.
[6:34] Let me know if this would be interesting.
[6:36] Apart from these minor niggles the project has come out really nicely.
[6:39] The schematic and board layouts are all on GitHub along with the software.
[6:43] Thanks for watching and I’ll see you in the next video.