LED Controller

Light emitting diode (LED) Controller was built using PIC microcontroller and LM317 regulator. Comparing to traditional light sources led illumination should provide more efficient lighting also giving you a possibility to choose desired wavelength. 48 white diffused LEDs connected in parallel were used as controller load to provide sufficient light intensity for a small workplace. Controller circuit is based on PIC16F876A using its CCP module to generate PWM signal to control LED array light intensity.2N3904 was used to switch voltage regulator. For white LED the optimal voltage is between 2.8 – 3.2 Volts. Output voltage can be calibrated by Adj resistor depending on the load used. I don’t have dedicated light measuring devices so I can give you only a subjective opinion. Max brightness of this configuration is more than sufficient to replace a small desk lamp . If you want to build similar devices adding a reflector or using a single high efficiency and power LED may increase the output even more. Alternatively you can always increase the number of LEDs in the array or change colors by using RGB LEDs.
LED Controller Prototype Board

The Max current was about 0.5 A making it a 1.5 Watt device, however LM317 can supply up to 1.5A so higher loads can be controlled. I’ve tried to use widely available and cheap components that can be purchased online, see embedded EBay links.  LED Driver software was written in Assembly and can be downloaded at the bottom of the next page. By controlling the duty cycle of the signal you are effectively changing average voltage supplied to LED array thus controlling its brightness.

LED Controller Schematic

4 modes of operation currently implemented in the software. Low, Medium and High intensity setting are selected by pressing SW1. I’ve also added a strobe function similar to some popular flashlights. Connect RB1 to “0” to enable strobe. You decide if it’s useful or not, anyway you can completely remove it or change the intensity and pulse duration in the code. Assembly code can be downloaded here.