The WS2812B RGB LED chip is a wonderful little device. It contains Red, Green and Blue LED elements and also a WS2811 RGB LED driver. The chip has only 4 pins. Power, Ground, Data In and Data Out and can easily be chained to another chip. With enough of these chips chained together your can make an LED display panel, colorful light strips, custom letters and other designs.
I had seen some matrix panels made out of these LEDs, but I’d not seen a really high density board, so I wanted to give that a shot. The board took a bit of work to put together. I first had to design the board and for that I used KiCad. I could find an existing schematic or PCB module for the WS2812B so I had to learn how to edit a module in KiCad.
I ended up doing some precise measurements of the little chip to figure out the pad locations and all of the other drawing details. It took a bit of time, but in the end I think it provides a good resource for anyone who might need to make their own library model. I did find that my measurements varied from the manufacturers datasheet, but I found 2 different datasheets with two different sets of numbers for the same part number so measuring assured success (click to enlarge) if you find this image helpful for your project, please leave a comment.
Once I had that info, I designed the module in KiCad and proceeded to design my 8×8 WS2812B LED Panel. The schematic for something like this is kind of crazy looking, but not very complex in the grand scheme of things.
Due the the large number of parts I ended up using an auto-router to route all of the data lines from chip to chip to chip (128 total) and did some final cleanup at the end. It took some maneuvering of power connections and other things to finally get a viable board. Overall size of the board ended up being 60mm x 60mm and the boards are tileable for making larger arrays.
After quite a few checks, and re-checks I sent the PCB off to OSH Park to be manufactured, and sent the solder mask over to OSH Stencils to be cut out. Withing a couple of weeks the boards and stencils arrived back at my place, ready to be assembled. They were a lot smaller and compact than I remember designing them. Here’s the stencil and PCB.
Now that I had the boards and the stencil I proceeded with the assembly. I built a vacuum placement tool out of an aquarium air pump which I used for agitating my anodizing bath. I basically pulled one of the rubber feet out of the case of the air pump and fit the hose in it’s place. It was a tight fit and worked out great. I also replaced taped off the pumps outside air vent. This created a slight vacuum inside of the case with the pump drawing air through the hose, I used a tip from a solder paste syringe to act as the pick up needle as seen in the photo below. This worked out pretty well, I did bend the tip of the needle at a 45 degree angle or so to make it more natural to hold and use. A small hold drilled in the side of the tube by the needle provide an finger actuated air valve to pick and then release the part. This is not an original idea, I’ve seen variations of it online and it seemed like a good solution.
Here’s a photo of everything ready to go. The caps are in the white strip on the left, the ws2812b LEDs are in the black strip on the left. I have my Kester EP256 solder paste in the tube at the top of the pic and the circuit board is secured by the stencil holders from OSH Stencils with the stencil aligned and taped on top.
The next series of photos just shows the solder paste application sequence. I put a bead across the top and squeegeed it down the length of the solder mask, then carefully removed the solder mask.
That turned out great, better than I expected. I think the solder was a little thin on the pads, but OSH Stencils is now offering thicker stencils (5 mil as opposed to their standard 3 mil) which may alleviate that issue. If I revisit this project I’d probably go with the thicker stencil.
I didn’t take any photos of the part placement procedure, I was very focused on it and trying not to bump anything around or sneeze all the parts off the board, but it wasn’t that difficult, just tedious. The photo below was just taken, you can see where I had to replace one of the WS2812B chips as it’s a bit crooked. I took the board on a trip with me and several of the chips failed, not sure if it was due to the airport X-Ray or something else going on.
And here is some video of the board running. I used an Arduino color fade sketch on a Teensy 3.1 to drive the panel. These LEDs are really bright so it’s hard to get really good videos of them.
I think the end results look cool and overall the project works fine, but let me know what you think!
There are a few things I will do differently when I revise this project. First is to make better heatsinking on this design. The board stabilizes at over 145 Fahrenheit (almost 63C) which is quite warm, however I have run it a long time and it just keeps running. I think thicker power traces and perhaps actually building the board on an aluminum backed PCB substrate with heatsinking would be a good idea. Second is that I placed the power pads near the edge on the back of the board, if I put two boards together, the power connections will be close to shorting against the neighboring board which is no good.