UC3843 LED driver with dimming - Page 1
Forum section: electronics / projects

author: aramosfet
author_rank: Contributor
timestamp: March 15, 2021, 11:51:54 am
content: Hello,I'm trying to design a Constant current Boost LED Driver based on UC3843. The specifications are Vin 24V, Vout 35-40V and Iout 0.25AI've implemented the attached circuit on a bread board and seems to work fine.I have also implemented adjustable current control using a summing amplifier to offset the voltage feedback for UC3843. The dimming seems to work fine except at low current settings below 10mA where output ripple increases with visible flickering.Is there a better way to implement the design, specifically the dimming function?Thank you

author: wraper
author_rank: Unknown
timestamp: March 15, 2021, 11:54:20 am
content: The best way is to drop UC3843 and opamp, and use specialized LED driver IC instead.

author: aramosfet
author_rank: Contributor
timestamp: March 15, 2021, 12:08:21 pm
content: Quote from: wraper on March 15, 2021, 11:54:20 amIdeally, yes. However I would like to later extend the design to support more LEDs in series and drive upto ~60V. Doing a quick search on digikey/mouser, I see a lot of the LED drivers for higher voltages >40V are really meant for offline applications. While there are a few that might suit the application they are either more expensive or don't support dimming.

author: wraper
author_rank: Unknown
timestamp: March 15, 2021, 12:51:49 pm
content: Say ZXLD1370/ZXLD1371 or ZXLD1374 with no external MOSFET. For cheaper options look at what's available at LCSC, there should be plenty.

author: PKTKS
author_rank: Super Contributor
timestamp: March 15, 2021, 04:53:39 pm
content: MAP3301Paul

author: aramosfet
author_rank: Contributor
timestamp: March 16, 2021, 04:57:50 am
content: ZXLD1370 seems to be a good pick at ~1.6$ per unit.Though would still like to understand if the UC3843 design can be improved.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: March 16, 2021, 07:50:44 am
content: Two things:1. I don't know why the R||C (R5, C2) compensation network is so popular. Many appnotes give it. It's easier to compensate I suppose, but the thing is it kills the regulation of what is otherwise a very fine error amp. R+C is better, with 1n+100k being a typical starting value, and you can go from there, testing step response while adjusting values for best response.Doubtful this is an issue with the immediate concern -- even with the poorer regulation, the fact that both parameters relate to output current anyway (i.e., the error amp's primary input, LED current; and its output, peak switch current), and the fact that visual response to LED power tracks slowly (i.e. somewhere between inverse gamma correction, to logarithmic; that is to say, even if the LED power is varying slightly with operating condition (supply voltage, temperature, etc.), you'll probably never perceive it). I bring it up as a matter of best practice -- you never seem to see R||C compensation on newer regulators or controllers, just old ones like this (and TL494, but that has even more bugs in its appnotes).2. The UC3843 has a minimum output pulse width, below which it must remain in cutoff (pulse skipping). The time between pulses is determined by load and the error amp response rate (in turn, compensation). For very small outputs, you may find it always flashes visibly; and you may find that the level is nearly impossible to adjust down there, anyway. The input signal is within a few mV of the 0.25V maximum input, on the same order as the op-amp offset and other errors. Drift of internal VREF, and resistor values, also contributes.Note it's not enough to simply increase the compensation time constant. That will simply increase the number of pulses skipped, and perhaps increase the number of active pulses as well. Technically, what's happening is, the loop gain increases suddenly: there's a deadband between zero and minimum pulse width, so the gain over that band is extremely high (or even hysteretic). The suddenly high gain pushes control loop pole(s) into the right half-plane, which is to say, it oscillates. And this is true regardless of compensation R and C; the gain is too high for the error amp to compensate for. Finally, the output is only pulsed in sync with the (free running) oscillator, so we say it is pulse skipping: the pulses will always be coherent with the oscillator.This is coincidentally the regime where visual response hurts, rather than helps -- if the ambient lighting is low, the sudden step from "off" to "barely on" will be very significant, and the flashing particularly irritating (or worse, if one is photosensitive!). If ambient is high, the step might not be so noticeable, but the flashing will still be objectionable.So, two more things:1. We can't fix the control loop any further, that's a limitation of the device itself, or more generally even, the topology. But we can at least make it more consistent. As it is, I think you'll find it suffers from a variety of sources of drift.It may help to make the input larger. Presumably, ADJ is not very accurate at low voltages. We might use the sense amp on just the shunt resistor by itself, and move the input (with R12) to the VFB pin instead. Now ADJ is 0...5V. Or even more specifically, 0...VREF. We can use a pot or DAC referenced to VREF, so that its output is ratiometric.Something more precise than LM358 should be chosen; OPA171 for example. A lower voltage, precision amp could also be chosen, supplied from VREF. Which might be cheaper, dunno.Or it might be supplied from whatever the control circuit is powered by. Which, if you have 5V available over there, there may be a lower voltage controller (LT probably has something) that the 3843 could be replaced by.Or if that stuff is under design consideration as well, perhaps it could be reworked for multiple supply outputs, including the 9-12V the 3843 needs, and 5V for peripherals including this analog stuff, or etc.(A note about topology: the topology itself, is notquiteprone to this being a problem -- it is continuous in output pulse width, though not linear in it. For very short pulses, the transistor won't fully saturate, and the inductor won't develop enough current to swing sharply up to the output voltage. It looks more like plucking a resonant tank, and clipping the peak off the top with the rectifier diode. Continuous, but not linear -- say we suddenly reduce pulse width, so that output voltage remains momentarily high, and now the transistor is in this "plucking" regime. The peak voltage is given by Vpk ~= Vin + sqrt(L/C) * Ipk, where L is the switching inductor and C is the switch node capacitance -- largely MOSFET Coss and diode Cjo. At low enough "plucking" current, the peak simply won't reach the output at all, thus output power depends on output voltage in a piecewise manner, as well as a nonlinear manner with respect to pulse width. Anyway, these are pulse widths of say ~10ns, nothing a 3843 can create, and not even anything most controllers or regulators can do.)2. We can't fix the control loop, but we can fix the LEDs. At low throttle, we might set the 3843 to a nominal output voltage (possible thanks to the open-circuit protection network), and connect a CCS in series with the LEDs. We either drive this with a second DAC channel (if applicable), or arrange a clever transfer function to the ADJ input as-is. Probably the latter will do. Anyway, this allows the output voltage to rise, and to fluctuate -- we don't care anymore, because the LED current is set by the CCS. At higher throttle, we make the CCS turn on faster than the controller does, therefore it remains saturated, dissipates little power, and the 3843 is in control.This is probably the best solution, needing few extra parts, and potentially no op-amps (the required function can be built in, I think <= 4 BJTs).Tim

author: aramosfet
author_rank: Contributor
timestamp: March 16, 2021, 06:48:15 pm
content: Thank you Tim for the detailed response.I tried your suggestion to move the ADJ control to VFB and thing improved a bit. As the LED current was lowered, there was a sharp cutoff at about ~35mA.The second experiment was to eliminate the current sense amplifier and increase the sense resistance to 10ohms. This improved the stability at lower level vastly. I can now go down to 1mA of LED current without any flickering and current remains stable. There is still flicker as current drops below 1mA but this much better than earlier.So, the low bandwidth of the LM358, coupled with high gain appears to be issue in the earlier design. Is this inference correct? I will need to try using a faster opamp to test this out.However the disadvantages of the new design are increased losses in the sense resistor bringing down the efficiency to ~77% at max load.Your suggestion on using a secondary CCS only at low output current makes sense, though it does increase the complexity. Could you provide an example of adjustable CCS based on just BJTs? I'm aware of the typical CCS implemented with opamp driving a FET with sense resistor.Also, can you suggest alternate topologies that might me more suited for LED driver applications?Thank you

author: T3sl4co1l
author_rank: Super Contributor
timestamp: March 16, 2021, 07:40:41 pm
content: Quote from: aramosfet on March 16, 2021, 06:48:15 pmYeah, sounds likely. Easy enough to see on the scope, the control loop will be unstable. If it's just bandwidth, that should be easy enough to compensate out -- change R||C to R+C and swap around values until it looks good. If it's due to poor behavior of the 358, a better (and yeah, faster wouldn't hurt either) amp would be worth a try.QuoteI've got, basically the same thing in this project which I've recently picked back up to improve on,it's four channels with digital control (via serial port). 24V input, a bit under 1A each output, two limited to 60V, two to 100V. So the total power capacity is pretty high actually. I've since changed out the switching inductors and transistors, they were getting way too hot even at low currents. Anyway, the circuit is almost identical, with two changes:- The current feedback shunt is relatively low, 0.68 ohm; there's a fixed pullup from VREF to VFB, and a relatively large resistor from the DAC output to VFB. So, it's like restricting your potentiometer to a narrow band by wiring a pull-up resistor in parallel with it. But then going back to the full (0..VREF) range by hooking it in with a larger series resistor (your R13).- I also have slope compensation, which isn't important for low power levels like yours, but is a necessary addition for operation in CCM (continuous current mode). This is simply a NPN follower, C = VREF, B = RtCt, E to resistor to ISENSE. In the base case I have a 1k in series with ISENSE (your R3; my C4 is I think 100 or 220pF); with slope comp, I have a 2.0k from ISENSE to GND, and a 2.0k from ISENSE to the NPN emitter. Basically this cuts the current sense signal in half, and fills in the remaining half with RtCt ramp signal, so it's a halfway case between voltage and current mode feedback, and this affords operation down to I think 50% ripple fraction.Which... you're running at 67kHz or so? 1Ω shunt seems a little optimistic for that (~1Apk max, I calculate 1.12A required), but 100uH is safely in DCM (discontinuous current mode), so slope compensation won't be needed.As for my thing, specifically, what I've got is...- Remove R8- Flip D2, and change to zener of nominal value (i.e. 56V, 91V)- R7 = 4.7kThese three changes just give a sharper voltage limit.- R9 = 0.68Ω (Iout ~ 800mA)- R11 = 22k- R13 = 90.9k (input is 0...3.3V range, with some "below zero" headroom at the bottom end)- Add 33k from VREF to VFB- Add 68k from VFB to trimmer- Add 10k trimmer from VREF to GNDThe trimmers are I think set for the zero intercept being a modest offset level from the DAC; each one is kind of individual, partly from DAC error, partly resistor tolerances, and partly because each 3842 has its own VREF so they aren't going to match perfectly anyway. (The trimmers are rather touchy. There's offset and gain calibration parameters for each DAC, so as long as it's near enough in range, it's all good.)QuoteYour good old "ring of two", or two stacked diodes for bias, or a current mirror*, etc.*Not recommended by itself, since we're doing real power here (which is to say, more than some ~mW) and discrete mirrors are super sensitive to temperature change, especially that caused by power mismatch. A cascoded output works, however (Wilson current mirror).And yeah, the classic op-amp one works, if you don't mind adding an op-amp. Honestly not as bad as it sounds, a little SOT-23-5 is all it takes. Or if you're still using the LM358 (or substituted with another dual), just use the spare part of that.Anyway, stuff like this:https://sound-au.com/ism.htm#p5The usual way to make it adjustable, is, using the two-diode case for example: change one diode to a resistor, so that the base bias becomes a compensated voltage divider. That is, the bottom resistor has a diode drop in series with it, so it has some tracking with the transistor's Vbe.In the two-transistor case, you can do the same trick as with the 3843: add a series resistor between the shunt resistor and the sensing input (base), and introduce a bias current via series resistor from a voltage source.This is just a building block and doesn't solve the crossover function, of course. I'd have to think about that a bit. Likely it would involve another transistor or two like I said, but I'm sure it won't require much more than that. If nothing else, simply short out the CCS when the setpoint is above some threshold, and there you go.Tim

author: aramosfet
author_rank: Contributor
timestamp: March 18, 2021, 01:04:24 pm
content: I made few more observations and updates to the circuit. The flickering at low current settings was due to switching noise getting amplified in the current sense amplifier and driving the VFB pin. To counter it, I increased the sense resistor to 2.2ohm and reduced the gain.I also moved the ADJ control directly to the VFB pin. When I did this earlier, I could not control LED current at low levels and there was a sharp cutoff at about 35mA. Turns out that this was due to the current sense amp not being able to sink enough current below 0.6V on the outputs. I swapped the LM358 with MCP602 and it improved the current sinking ability to about 150mV output levels (Though the downside to MCP602 is it is rated to 5V VCC and output cannot reach 5V).So I kept the LM358 and increased the output resistors R13 and R15 to 100K. This improves the control at low current and I can go down to ~2mA without much flicker. But the VFB trace length needs to be kept short to prevent picking up more noise.I think this should be sufficient as I really don't need to control LED current below 2mA. We can control the minimum LED PWM drive in software.Interesting observation is the opamp sink current ratings mentioned the datasheet are not valid through out the output voltage range.Next step is to move the breadboard circuit to a real pcb and see how it performs.

author: Zipdox
author_rank: Regular Contributor
timestamp: March 24, 2021, 01:13:40 pm
content: Has anyone looked at the HV9912?

author: mariush
author_rank: Super Contributor
timestamp: March 24, 2021, 02:04:10 pm
content: I think you decided to skip about led driver chips too fast.If you can't find chips that do 60v, maybe you can find chips that have multiple channels, and run your leds in parallel strings instead of a single strip of leds.Here's an example chip I found on Digikey:AP3066 :https://www.diodes.com/assets/Datasheets/AL3066.pdf~ 1.3$ on digikey for 1pcs, 56 cents at 1000pcs :https://www.digikey.com/en/products/detail/diodes-incorporated/AL3066S16-13/74256694.5v..33v input voltage, 4 channels, 250mA per channel, 400mA pulse current ... two dimming modes: direct PWM dimming, PWM to analog dimmingYou can scale up as needed by adding more channels if you need more leds.

author: Zipdox
author_rank: Regular Contributor
timestamp: April 29, 2021, 01:30:49 pm
content: Any updates?

author: aramosfet
author_rank: Contributor
timestamp: February 19, 2022, 03:14:41 pm
content: Its been a long time, but finally got around to testing the design on a board. There aren't to many changes to the original design. I only had to reduce the summing opamp resistances from 100K to 10K and increase the switching frequency to 100khz from the initial 55Khz.UC3843_LED_Drv.pdf(21.53 kB - downloaded 215 times.)It works very well and regulates LED current even down to ~3mA. Tested with couple of LEDs with 12V input, 28V out and 36V out @ ~270mA. Efficiency is above 85% at full load and over 82% at lower currents.Posting the final schematic and few pics.

author: prosper
author_rank: Regular Contributor
timestamp: August 02, 2023, 06:53:28 pm
content: Old thread, I know. I'd bookmarked your original circuit a couple years back, intending to build it up some day. I have a whole case of LED surface mount fixtures that I had in my house; the driver boards had all died over time. The LEDs themselves are good. They're nice fixtures, and I had decided to convert them for use on a 12V supply and install them in my RV trailer to replace the cheap-ass RV lighting that's in there now. The LED's need about 35V and can handle up to about 400mA of current. And I already have a whole tube of 3843's kicking around.I built up your original circuit which mostly works good. I did note the same instability under certain conditions, related to the slow op-amp response not keeping up with the rest of the feedback loop.Ultimately, I implemented dimming by applying an open-drain PWM signal to ground out the COMP pin. One of the datasheets for the 3843 alluded to this, showing an NPN transistor attached to COMP used as a 'shutdown' signal.