https://github.com/davidlenfesty/kicad-projects

This repository has a few projects from here and there.

16 Channel LED Driver

This was an interesting project. Really my first actual project. It started out as the 3 channel driver to get the circuit design down pat. (You can really see a big difference between each revision)

Essentially each channel just acts as a constant current source, and when an LED happens to be in the way the power gets dissipated by the LED. The channels are also PWM controlled, so as to give lighting control. While it works how I designed it, and does it's job, I've learned about many different ways to make it work better.

Firstly, I could have implemented the current setting better. As it stands, you need to change out a resistor to tune the current range; it does not go to 0. I could have implemented it so that it operated linearly over that range.

Secondly, there are quite a few systemic issues with the design. It requires external fusing, because there is no protection from short circuits. It was designed to drive LED's in parrallel, which I have since learned is a bad idea. It's not necessarily the most efficient, it is essentially a linear regulator to the voltage level of the LEDs that runs the set current, so it has to drop the rest of the voltage through the MOSFET.

If I was to re-design this, I would likely do it is a buck-boost (or just boost) switching regulator. This regulator would be current-controlled through a microcontroller, so you could actually have feedback as to the status of the LED. It would also be four layer, to make routing easier and improve power delivery.

A current-controlled buck/boost regulator would provide the advantage of being more efficient, able to drive multiple LEDs in series, instead of parralel, and provide software feedback on short circuits and other faults.