In December of 2017, I was approached by the Cadre Club at SJSU for some assistance in redesigning a high powered LED driver board. The professor that manages the club, Steve Durie, had acquired hundreds of slightly out of spec RGB LED bars as a donation.
Even though they are technically out of spec, the LEDs themselves still work great. They’re blindingly bright and can produce a huge array of brilliant colors. The only problem is they take a high amount of current and the LEDs themselves are wired in series on the board. This means that we have to be able to deliver large amounts of current at non-standard voltages.
The first version of the LED board was designed by Steve before my arrival. It worked great, but I could see some room for improvement.
All the external connections were made with screw terminals, there was no power line filtering, it required 5V logic levels in order to operate. The board also seemed a little large given the components on it. Finally, the shape of the traces and the lack of ground plane was…p r o b l e m a t i c. Not a huge issue, but it bothered me.
We also wanted to add some new features to a second version of the board. It would be convenient to be able to drive the board from a standard wall wart, and have a choice of driving the board with either 5V logic levels or 3.3V logic levels.
The circuit for the driver is pretty straightforward, it basically uses MOSFETs as variable resistors to control the amount of current that is allowed through the LEDs. By applying a voltage (or in our case, a PWM signal) to the gate of the mosfet, we can control the brightness of each LED by allowing precise amounts of current through each one.
The first thing on my list was solving the voltage input problem. Currently, the boards required 6V to operate, which is a pretty nonstandard voltage. You can find wall warts that put out 6V, but they’re hard to come by. I wanted this board to work with more standard 9V and 12V wall adapters. I used the trusty ol’ LM317 voltage regulator to step down the voltage so that the board always gets exactly 6V. At peak draw, the board draws 500mA at 6V, which is nothing the LM317 can’t handle. I gave it a test on the breadboard and it successfully powered the original board.
Next up was solving the 3.3V logic level problem. It turns out there are special MOSFETs that operate at 3.3V, they’re often sold as logic level MOSFETs. We did some tests and determined that if we wanted a board that could operate with 3.3V logic levels, we could just swap out the MOSFETs on the desired board.
Next up was designing a new PCB for all the components. We had to create the first run of the boards ourselves, nearly every fab house in China was closed for lunar new year around the time I finished my design. I made sure to modify the PCB so it was single sided and had plenty of tolerance.
We went with the “laser paint” method of PCB prototyping. First, I applied a layer of black spray paint to a copper board. Second, we used a laser cutter to etch away the paint in a negative image of the board, producing the board in the above photo. Third, we etched away the exposed copper with etching solution.
After the copper is etched away, we removed the paint.
All that’s left was to cut the boards, drill the holes, and solder in the parts.
The question is: did it work? Kind of! This was my first time etching and creating my own boards, so they didn’t work that great. If you held the board at a certain angle and prayed, it would work fine. There were a lot of loose connections and shorts. After a lot of fiddling, I was able to get a successful test. I now have a new appreciation for PCB fab houses.
By now the fab houses had reopened and we could place a proper order. We decided to create two revisions of the board: One that would take 6V directly, and one with an integrated LM317 that could take more standard voltages.
This was the first board we got back from the fab house. We were able to save some money by making one board that could be snapped in half to give you two different board revisions. The 6V one is on the bottom, and the variable voltage one is on the top. There was some room left on the PCB so I made a little keychain too.
Success! The boards ended up working great. They took a standard wall wart power supply and were able to drive the LEDs at full brightness.
Believe it or not, this is a picture of all those LEDs under a diffuser. When the RGB colors are all of equal strength and the light is “mixed” by a diffuser, it will produce a perfect white light. This was the ultimate test of our boards. If they can produce white light, they should be able to produce every other color as well.
With all that in mind, we entered mass production. We placed a much larger order of boards and began the process of documentation and assembly.
Now that the driver boards work, we started to integrate them into our projects. The Cadre club mainly uses a microcontroller board called the ESP32 to build all of their projects, and I designed the LED driver board to work with this microcontroller.
The ESP32 already has convenient breakouts for all of its pins, but in the end we wanted a more convenient solution that would work with the driver board.
Knowing this, I began work on designing a breakout board for the ESP32 that would bolt on top of the LED driver board. I also integrated a 5V voltage regulator so we could drive the ESP32 and the LEDs off of the same power supply.
We go them manufactured, this is the final result