Best way to drive multiple LED strips at distinct times with one LED driver

led-drivermosfetpower electronicsswitch-mode-power-supplytexas instruments

Application:
6 LED strips: each strip has LEDs connected in series
Driver is TPS92691 (CC LED driver)
The source is a battery

The LED strips will be flashed in a carefully controlled cycle, starting at 7Hz and gradually ramping up to 10Hz. While we anticipate a slight delay in the lighting of the 6th and 1st LED strips as the frequency increases, this is a minor detail that won't affect the overall operation.

enter image description here

Problem:
Unsure how to approach switching multiple loads with one driver, it's simple to visualize, but harder to implement – figuring out how the control signals are to be mapped.

See below the LED driver (boost) example from the datasheet:
enter image description here
As you can see DDRV (the gate driver) is driving a low-side N channel FET (SIS176LDN-T1-GE3)

Two ways I was able to come up with approaching this problem:

  1. Use the controller's PWM input and split the DDRV output to each strip based on the processor's input. I'm unsure how to go about that.
  2. Tie the Controller's PWM input to VCC to make it a constant output and control each NFET with a separate PWM channel on the MCU—this seems like the easiest solution. However, this approach, with its constant output, seems to generate more heat in Q1.

(For the above two, I'm going with all of the strips having the same sense resistor)

enter image description here

What is the best way to approach this problem (least heat dissipation, less complexity), or can you elucidate how to approach my two proposed approaches more clearly?

PS: Please don't suggest using separate LED controllers for each strip; that is by far the easiest solution, but I am stuck with one LED controller and want to figure out a solution for such a scenario.

Best Answer

Your boost LED driver circuit has high side current sensing, its output is ground referenced, so you can switch your LEDs with low side MOSFETs, which is convenient.

All you have to do is duplicate Q2 MOSFET (one per LED strip) and drive these FETs with your MCU.

However there are a few gotchas: the an output capacitor (Cout) is charged to the output voltage. When switching from red to green LEDs, the latter have higher Vf so there will be a small delay while Cout charges to the higher Vf. In the other direction, green to red, Cout is charged to the higher Vf when the MOSFET turns on, so it will dump its charge into the LEDs, causing a current spike.

Thus Cout should not be a large electrolytic cap, instead it should be a low value ceramic cap, just enough to clean up the output but not more.

The chip's datasheet mentions that, when the PWM input goes low, it turns off Q2 and the chip also stops switching. If you duplicate Q2 you can no longer use the chip's DDRV output to control Q2, using the MCU instead. This means if you turn off all the LEDs without setting the PWM input low, then the chip will still try to pump current into the output and charge the output cap until it hits the OVP threshold. This will cause a larger current spike when you turn the LEDs back on.

A simple solution is to set the OVP threshold to a reasonable value (a bit higher than your LED Vf but not way higher) and also use a MCU output to set PWM low when you turn off the LEDs. This replicates what the chip would normally do to its DDRV output, in this case DDRV doesn't need to drive the MOSFETs so it can be left unused.

In fact, you could do it like this:

  • PWM=0
  • Wait a couple tens of µs so Cout discharges
  • Turn off MOSFET for current LED and turn on MOSFET for next LED
  • PWM=1

You don't need to switch the MOSFETs quickly, so driving them from MCU GPIO is fine. If you have a 3V3 MCU and 5V FETs you can use any 74HCT logic gate as a cheap 3V3 to 5V level translator, for example 74HCT245 provides 8 channels.

If you want to use DDRV output for PWM dimming, then you can also route it through a 1-8 demultiplexer so it drives the FET corresponding to the LEDs that should be active. But DDRV is not 5V logic level, so this requires a bit of adaptation.

Related Topic