Charlieplexed LED PCB with 0.1mm tracks

This is my second PCB ever: a two layer board for JLCPCB packing three blocks of 42 LEDs, each LED wired to a separate pair out of 7 pins. I dropped my track width from 0.2mm down to 0.1mm to fit everything without long detours, after using the 0.25mm default on my first board. Before the PCB I built a proof of concept with three VU style 10 LED bars driven from PIO, which confirmed that the LEDs were addressed correctly and that intensity control worked.

I had a quick chat with ChatGPT about track widths and whether 0.1mm tracks are OK for cheap JLCPCB boards. My board is two layers. On the first PCB I ordered I just used the default of 0.25mm and that was fine, but 0.2mm makes everything a bit crowded on this one. Going from 0.2mm to 0.1mm gave me just enough room to route everything without huge detours.

At this point I am making my life harder than it needs to be by cramming as many LEDs as possible per cm2. I have three blocks of 42 LEDs where each LED is connected to a separate pair out of 7 pins, so there are a lot of tracks crossing over. It is my second PCB ever, so I am mostly trying things out. The PCB is in a pico header format and I think it will look sick.

Before the board I put together a proof of concept, which was enough to show two things:

  • the LEDs being addressed correctly
  • intensity control working

That was three VU style 10 LED bars, not SMD, monochrome LEDs of different colors, and no diffusion. The photo just looks that way because of very low lighting.

On my first design I laid the LEDs out and routed them programmatically and it worked great. Then I decided to generate everything from PIO and I wiggled my way out of a very narrow path full of constraints. It was a lot of fun. The PCB part is me procrastinating on the write up, but anyway the journey was the destination.