Using BC327 instead of BC337 but not working as expected?

Thanks all, I will give that circuit a go controlling them via the ADJ pins, shame I broke the leg off of the ZXLD1360 though :frowning:

I see you show an arduino output, will it work on the TLC5940 outputs?

maybe in the meantime I will try a higher current on the base of the 327's and see if that increases PWM performance, only set to 10mA at the moment?

I just tried that circuit from DC on the MT7201, could see some dimming, but i'd only say 75%-100%. I tried a few different resistors on the base but still the same. I tried it connected to the arduino and running the 'Fade' sketch from the basic examples.

I keep thinking the ADJ pins are connected to something, I could measure about 0.5M ohm between it and some of the others so I tried lifting it, but managed to snap this one too. No ADJ pins to play with anymore, but I have some more bulbs on order :frowning:

The datasheet for the MT7201 says of the ADJ pin:

Multi-function On/Off and brightness control pin:
? Leave floating for normal operation.(VADJ=VREF=1.2V giving nominal average output current IOUTnom=0.1/RS)
? Drive to voltage below 0.2V to turn off output current
? Drive with DC voltage (0.3V<VADJ<2.5V) to adjust output current from 25% to 200% of IOUTnom
? Drive with PWM signal from open-collector or open-drain transistor, to adjust output current. Adjustment range 25% to 100% of IOUTnom for f>10kHz and 1% to 100% of IOUTnom for f<500Hz
? Connect a capacitor from this pin to ground to increase soft-start time. (Default soft-start time=0.8ms. Additional soft-start time is approx. 0.8ms/nF)

So you should be able to get 1% to 100% of Iout using the Arduino default PWM frequency of 490Hz. Note that the PWM will work in reverse, i.e. analogWrite(pin, 255) should turn the LED off, while analogWrite(pin, 0) should turn the LED fully on. I'm assuming that you haven't bypassed the bridge rectifier in the current regulator, that's why I included the diode in the circuit (to prevent Vadj going more than 0.3V below the ground connection of the MT7201).

To drive it from a TLC5940 I suggest this circuit. I've moved the diode to the emitter so that you can share 1 diode between all the channels.

To avoid breaking off the ADJ pin, I suggest you use a fine enamelled copper wire to make the connection to it.

Thanks DC! I notice that the same info is in the ZXLD1360 datasheet too. I hope the that the other bulbs use the same regulators. Shame I will have to wait for them to arrive, hopefully won't be too long.

I'm looking forward to trying your circuit when they do get here, hopefully I won't break the pins off! I used some kynar wire to connect to them but I tried to lift the pins in case the PCB connected them to anything else but I don't think it did :frowning:

I have not removed the diode bridge from them, it would be nice not to have to modify them too much. So am I right in thinking that I should connect all the emitters to the the same diode?

Many thanks

dtokez:
I'm looking forward to trying your circuit when they do get here, hopefully I won't break the pins off! I used some kynar wire to connect to them but I tried to lift the pins in case the PCB connected them to anything else but I don't think it did :frowning:

The only thing it might be connected to is a capacitor, to increase the soft-start time. You could use a multimeter to see whether the pin is connected to anything else, in particular to any capacitors.

dtokez:
I have not removed the diode bridge from them, it would be nice not to have to modify them too much. So am I right in thinking that I should connect all the emitters to the the same diode?

Yes. Make sure that each lamp you are controlling has a good connection between one of the pins and ground. To avoid damage in the event of a broken ground connection, you might want to connect a resistor of about 470 ohms or 1K between the transistor collector and the ADJ pin.

Thanks DC! I don't think they were connected to anything, I lost the pad on the MT7201 but the pad on the ZXLD1360 seems to be O/C

Looking forward to the other bulbs arriving now for more testing! Hopefully we can get it to work :slight_smile:

Great stuff, just hooked up the circuit on one of the bulbs that arrived today (the last example posted by DC) and it works, with no excessive heat from the BC327.

The only thing is that the lamp will not turn fully off if I send 4095, very nearly off but not fully. Also I only notice any dimming effect at sends of approx >3500.

I have tried both 10 & 20mA current on the tlc with both configurations of the base pull ups - 4.8k pulled to 5v and 10k pulled to 12v but all of the above gives the same results?

Thanks!

Your original photo.

You'll find it's amplifying the current eg 1ma in 500ma out gain out of 500...

also the highest voltage out is base pin - voltage drop.. not the best way.

Sorry I don't quite understand what you mean?

It seems to me that the transistor is not switching on hard enough, any ideas why?

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.

Hi DC, my mistake many thanks for pointing that out. I will try right away when I finish work!

Do you think this will solve the problem of the lamp not being switched all the way off when I send a 0?

Many thanks as always

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.

IT WORKS! I'm very happy now, many thanks for the guidance David! :grin:

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 :slight_smile:

Thanks again

dtokez:
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:

  unsigned int potVal = analogRead(pot);
  unsigned int ledVal = potVal/4;    // convert 0..1023 from analogRead to 0..4092 for TLC5940

A very simple modification is to use square law (warning: untested code!):

  unsigned int potVal = analogRead(pot);
  unsigned int ledVal = ((unsigned long)potVal * (unsigned long)potVal)/256;    // convert 0..1023 from analogRead to 0..4092 for TLC5940

Another way is to use exponential law (warning: untested code!):

  const float factor = 0.002;  // adjust this to get required response
  unsigned int potVal = analogRead(pot);
  unsigned int ledVal = (unsigned int)(4095 * exp(potVal * factor)/exp(1023 * factor));    // convert 0..1023 from analogRead to 0..4092 for TLC5940

dtokez:
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.

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 :slight_smile:

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 with the TIP122 and the regulator does not make sense. Please explain what you are trying to do.

Hi DC, I want to drive some high currents with the TLC5940 >1A so I found this site linked from the playground article on the TLC5940.

http://sonicrobots.com/2012/04/24/the-pwm-controller-tlc-5940-the-arduino-and-a-high-current-output-circuit/

I have built an identical circuit minus the 7805 regulator because I have a regulated PSU that I will use.

The LED is on all the time, I thought the TIP122 would control current flow to ground?

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.

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?Arduino Playground - HomePage

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?

Is there a simple (but more efficient) method?

Many thanks!

Please supply a link to the LED you want to drive from the TLC5940.