The last example I sent uses an npn transistor e.g. BC337, not a pnp transistor like BC327. Your BC327 is acting as a diode. Replace it by an non transistor. This will make the dimming work the right way round e.g. 0 should be off and 4095 will be max brightness.

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Yes. When you set the pwm to the maximum value 4095 then the output drivers are turned on for 4095/4096 of the time. So if you invert the pwm as you have done by connecting it incorrectly, with pwm set to 4095 the led will be on for 1/4096 of the time.

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

I hooked up a POT and started some serial debugging to test and the range seems pretty good in corresponding to the bulb's brightness, but I think it seems to be weighted a little towards the ON end of the spectrum - in other words it gets pretty bright to early. How could I fine tune this?

The way it is hooked up now is with 10mA current set in the TLC (20mA works just as well) and with the 337 base pulled up to 12v through a 10k. Before I go ahead and build the 12 channels on some strip board and install the lot in my lounge ceiling I'd just like to check that this would be the preferred setup if you were making the same thing?

Pretty impressed with the TLC5940 now and the £2 3W eBay special bulbs are not too bad either

I hooked up a POT and started some serial debugging to test and the range seems pretty good in corresponding to the bulb's brightness, but I think it seems to be weighted a little towards the ON end of the spectrum - in other words it gets pretty bright to early. How could I fine tune this?

The eye does not perceive brightness linearly. So you need to change the relationship between pot setting to LED power from linear to a power law or exponential law. Currently, you are probably doig something like this:

The way it is hooked up now is with 10mA current set in the TLC (20mA works just as well) and with the 337 base pulled up to 12v through a 10k. Before I go ahead and build the 12 channels on some strip board and install the lot in my lounge ceiling I'd just like to check that this would be the preferred setup if you were making the same thing?

Using a 10K pullup to +12V is a good choice, and provides 1.2mA BC337 base current. This has to be sunk by the TLC5940 to turn the transistor off. So any current setting for the TLC above 1.2mA will do.

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Thanks again David, I was not aware about the way we perceive brightness. I will certainly implement another law when I come to mapping values in the project

I would also like to use 3 of the channels to control some RGB strips. I have a TIP122 wired up as per the attached schematic (not using a regulator though just a simple led load), linked from the arduino playground (base connected to TLC output via 1k and base pulled down to gnd through a 12k). But it does not work how I had hoped.

I have a LED hooked up through a resistor to 12v and the cathode to the emitter, but it is on full time with the TLC set anywhere between 0-4095.

Any ideas what could be happening here?TIP122 datasheet: http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00000911.pdf

The circuit given on that site is wrong. It might conceivably do something useful if the collector and emitter of the TIP122 were swapped and the 2K2 resistor were changed to a much lower value, i.e. 5V divided by the required LED current. But it's an extremely inefficient way of driving high power LEDs.

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

I thought something was a little strange there. Is there a way to have the link changed from the playground to stop others following it?http://playground.arduino.cc/learning/TLC5940

I thought that about swapping the emitter and collector around as it seemed wrong that the current passing through the LED would be collected by the emitter. This didn't work, the LED would light up say 50% on a TLC write of 0 and go to maybe 75% brightness at a write of 4095. Would it be worth changing the 1k or the 10k?

The idea is to control some RGB strips, (eBay specials) http://www.ebay.co.uk/itm/110834883443. I think they are common anode and require 12v. I will use probably 12 channels of the TLC5940 to control 12v MR16 bulbs in my lounge ceiling (as you have helped me to get working earlier in the thread) and use 3 of the left over channels for some RGB strip.

However at the moment for testing on the breadboard the load I am trying to control is a standard 20mA yellow LED connected through a 500ohm resistor.