I am trying to get high-power LED (700mA) to flash very short pulses with Arduino Uno. I want these flashes to excite chlorophyll fluorescence in my plant experiments. By the way, I am a plant scientist, not an electronic engineer; so be patient with me please
I already succeeded when using a simple LED and the Timer1 library.
The problem is that I cannot scale it up to a high power LED. I cannot get the LED driver (LDU1416S700), which is needed to power the high-power LED, to work properly.
I have attached my set up in a PNG file. The power source has 12 v DC.
When I connect everything as in the attached scheme, the high-power LED lights properly. If I connect the LED driver's control pin to the 12 V power supply Ground, then the LED turns OFF (as expected according to the LED driver datasheet).
However, When I apply (with the Auduino) a PWM signal to the LED driver control pin, nothing happens.
Who am I suppose to use PWM dimming with this LED driver?
Do I have to ground some how the PWM signal? If so, how?
This LED driver got a 200 ns ON time. I need that kind of speed for my application. So, I want to get the high-power LED flashing only using this hardware.
The data sheet says 1.25 V max and 1 KHz max for the PWM input. So, you must have a 4:1 voltage divider on the Arduino output. I would try 1K and 3.3K resistors.
However, you cannot shut off this driver completely as the LED current output is 25% min. If you want a short pulse of light, followed by complete darkness, this driver won't work.
Output Current Range • 25% to 100%
Operating Frequency • 1 kHz max
On Time • 200 ns min
Off Time • 200 ns min
Amplitude • 1.25 V max
First I followed the advice of jremington to add a voltage divider.
Then I connected the Arduino output (now at 1.25 V thanks to the voltage divider) to the LED driver's control pin. The trick was to connect the ground of the Arduino to the ground of the power supply.
In that way, the LED is OFF unless the Arduino supplies the 1.25 V to the LED driver's control pin that is needed to be turned the LED ON.
The comment about the dimming limit at 25% seems to be valid only if analog dimming is applied with a potentiometer connecting the LED driver control pin to ground. As far as my limited knowledge goes, however, this driver is also capable of digital PWM dimming.
I still have one question, though.
Now I have connected the ground of the power supply (now running at 6 V) to the Arduino ground (at 5 V). It seems to be OK. However, I want to add a second LED, a 30 W LED!
This 30W LED needs a 48 V DC power supply. Can I just connect the ground of all three power supplies even if they are at 5, 6 and 48 V?
After testing the setup, I managed to light the LED, using the Arduino 10-bit PWM signal (using Time1 library), down to 54 microseconds.
If the applied PWM signal implies that the ON time is shorter than 54 microseconds, then the LED does not lights up. I am not sure why is this. the ON time of the LED driver is 200 ns, and it is suposed to support frequencies up to 1 kHz. Any idea why this is happening?
I was thinking that it might be because the LED driver will be OFF below a certain threshold (0.15 V according to the data sheet). When I measure the apparent voltage of the PWM signal, I get around 34 mV (in accordance with the calculated considering the set duty cycle) So I think that at some point the LED driver just does not detects the applied 1.25 V signal anymore, but it was supposed to support up to 1 kHz....
In any case, 54 us flash duration is not short enough.
Now, I am thinking in a solution: Using a kind of inverted electronic switch (I am not sure if that is the right term) to control the connection between the LED driver control pin and ground. As I said before, if the LED driver control pin is not grounded, the LED is ON; if I conected to ground, the LED is OFF. So I want a king of inverter that will Disconect the 1.25 V line in response to an Arduino signal. Like here.
In that exaple, an optoisolator was used. However, I need something faster. I want flashes in the order of 2 microseconds. Could use a kind of "inverted mosfet" (or whatever is called) to do this job? In other words, how can I get the Arduino to cut a 1.25 V line with a speed of 2 us?
The problem with these LED driver modules is that they are switch-mode and thus
have output capacitors to convert AC to DC. They have a limited rate at which they
can switch off and on due to the stored charge/energy in the output capacitor(s).
For fast (< 1us) switching of LEDs the better way is to use an analog constant current
circuit and a MOSFET to switch its output. The analog constant current circuit will
waste a bit of power, but normally you'd expect much faster stabilization of current levels.