I'm working on a DIY ambilight system for my computer monitor so I made an rgb controller that works on usb.
I followed
this howto for connecting a PIC18F4550 to usb.
Based on that, I made my own schematic.
The controller has an integrated step-up converter that converts the 5 volts from usb to 12 volts, it can probably deliver about 300 mA or so.
However, this means that the usb port has to supply about 900 mA, which is too much for usb but it seems to work.
I have no idea what the value of L1 is, I just wound some copper around a ferrite core and adjusted the pwm frequency so that it would work.
It's probably better to use an external 12 volts power supply, but I wanted to try this out.
The firmware is based on Microchip's CDC serial emulator, which is in Microchip's USB framework.
You can download the firmware
here (piklab project).
The firmware emulates a serial port, if you run linux the device /dev/ttyACM0 is created, if you use windows you need the CDC driver from Microchip, which is also in the USB framework.
The protocol is very simple, it uses one byte as a prefix, which has to be 0xFF, this is for the synchronization.
The next twelve bytes set the pwm value for each channel, 0x00 is 0% pwm, 0xFF is 100% pwm.
I bought an led strip at dealextreme for $11.99 and cut it in half, so now I have two led strips for either side of my monitor.
This gives a really nice effect with the X11 grabber I made, the software will be available soon (or not so soon).
This is what the controller looks like, I'm only using channels 1 to 6 since I only have two led strips.
And the underside, you can see L1 here.
posted on Friday, August 08, 2008 8:59 PM