I am a big fan of LEDs. Bright, colorful, flashing LEDs. So, given my affinity for LEDs, I decided to work on a controller that me and a few of my friends could use as an art project/passive information display. I have posted videos from the first prototypes (here and here), but it has been tough to dedicate time to further development given my research, so I thought I would post the information so that anyone can take the design and modify it to their liking!
Some insipration came from the BlinkM “smart LED” and the ShiftBrite RGB LED Module, but I was interested in using RS232 serial control. Therefore, I chose one of my favorite simple-to-use microcontrollers, the PIC16F628. The advantages include the built-in 4MHz oscillator, hardware USART, and ease of reprogramming. A couple of features I had in mind during the design:
- Multiple intensities for each color (using PWM)
- Multiple individually controllable RGB LEDs
- High-speed update rate
- Daisy-chainable and addressable
- Simple serial control
Here is the full schematic for the driver. I chose to use a PIC16F628 as the microcontroller because it is cheap, has a internal oscillator (4 MHz) and an internal USART. NOTE: There is an error in this schematic and a pull-up resistor on RA5 (pin 4 in the schematic) is necessary. See the bottom of the post for an updated schematic and board.
I decided I would try getting a PCB printed for the first time, so I got boards created at BatchPCB.com for $5 each. The total for 4 boards shipped was $32.36 (4 x $5 for the boards and $12.36 for shipping and handling). They took a long time to arrive, but the quality was well worth the wait. NOTE: There is an error on the first revision of the board and a pull-up resistor on RA5 (pin 4 in the schematic above) is necessary. You can see how I compensated for the mistake in the second picture below (look on the back of the upper-left board). This will be corrected in future revisions. See the bottom of the post for an updated schematic and board.
For more detail: PIC16F628 4 RGB LED PWM Controller