S
Sean Peters
Guest
Hello,
I have a monitor with a LED backlight that uses PWM to directly switch
on/off the LEDs to vary the brightness.
I can't stand the flicker this produces and want to modify the LED
driver to keep the LEDs on all the time, setting the brightness by
limiting the drive current, depending on a smoothed version of the PWM
signal.
I've kind of managed this already, but can't get the full output
brightness range because i am using a LM324 op amp with a single 5v
supply and it can't pull it's output down below 0.6V while sinking
current. (Only existing easy to get at supply is 5V). Here's some
details of what i've found / tried so far:
The monitor is a ViewSonic VLED221wm, which contains a CHI MEI
A220Z2-H01 panel and Asian Power devices FM-60L12-AAB power supply.
The LEDs are driven by 3 MBI1816GT drivers (separate R, G, B). These
drivers have an active low output enable (!OE) pin and a pin where you
are supposed to put a resistor (Rext) to ground to control the current
output. (R,G=2K9, B=3K6 ohms). The data sheet doesn't have any
internal details or suggest anything other than just using a resistor,
it gives the current for each LED as 59*1.24/Rext and there is 1.24V
on this pin and by varying the voltage of the "grounded" end of the
resistors (driven from an op-amp) i can change the output led
brightness. I'm pretty sure the output current is just 59xRref
current.
There is a 7way connector coming from some chip i can't get to on the
side of the lcd panel. The pins seem to be a i2c bus, power, gnd and
R, G, B PWM signals. The PWM signals go via transistors to the !OE
pins. This chip must have colour sensors as it adjusts the duty cycle
of the PWM to try to get the backlight to be white as well as at the
correct overall brightness. (found by manually changing the value of
Rref for one colour and watching it try to compensate with the others).
So, what i've done so far is: tie low !OE inputs, for each R,G,B, take
the !PWM signal that used to go to !OE, pullup with 1K, low pass
filter it with R=100K, C=1uF, divide this by 4 with a 1M pot, buffer
with op-amp follower and connect this to what used to be the ground
end of the Rref resistors. Here's a diagram: (need fixed-width font)
------+-------------------------------------------------- 5V
|
+++
| |Rpullup(1K)
| |
+++ (want 0-1.24V)
| +----+ 0.2-4.8V +--------+
------+---+ +----+-------+ | |
!PWM +----+ | | | |`. | Rref=2K9/3K6
R=100k | +++ +-+- `. | +----+
--+-- | | | >-+--+ +----- Rref
--+-- | |<-----++ ,' +----+
C=1uF| | | |,'LM324
| +++1M
| |
--------------------+-------+---------------------------- GND
I was very pleased to find that this actually works, time constant is
probably a bit too big as the backlight colours sometimes oscillate a
bit after turning on. The averaged !PWM varies from 0.2V (led
brightest) to 4.8V (led dimmest) divided down and buffered gives 1.2V
for dimmest and should give .05V for brightest. Which would give Rref
current from (1.24-1.2)/2900 to (1.2-0.05)/2900.
Only problem is i only get about half the range of brightness i should
as the LM324 can't take it's output below 0.63V as it is sinking
current (0.43mA max). Max Rref current is (1.24-0.63)/2900.
So, can you help? Is there an op-amp i can use instead that will
drive it's output down to 0V while sinking current with a single 5V
supply? Is there a better way of doing this? Any suggestions would
be greatly appreciated.
Also, i'm wondering, is it normal to drive LED's directly with a PWM
signal like this, or have i just been unlucky? I've got a weird
problem with my vision which makes me extremely sensitive to flicker i
can't use crt screens at all or CCFL backlight for more than a couple
of minutes. I just assumed LEDs would be driven by nice friendly DC.
Sean
I have a monitor with a LED backlight that uses PWM to directly switch
on/off the LEDs to vary the brightness.
I can't stand the flicker this produces and want to modify the LED
driver to keep the LEDs on all the time, setting the brightness by
limiting the drive current, depending on a smoothed version of the PWM
signal.
I've kind of managed this already, but can't get the full output
brightness range because i am using a LM324 op amp with a single 5v
supply and it can't pull it's output down below 0.6V while sinking
current. (Only existing easy to get at supply is 5V). Here's some
details of what i've found / tried so far:
The monitor is a ViewSonic VLED221wm, which contains a CHI MEI
A220Z2-H01 panel and Asian Power devices FM-60L12-AAB power supply.
The LEDs are driven by 3 MBI1816GT drivers (separate R, G, B). These
drivers have an active low output enable (!OE) pin and a pin where you
are supposed to put a resistor (Rext) to ground to control the current
output. (R,G=2K9, B=3K6 ohms). The data sheet doesn't have any
internal details or suggest anything other than just using a resistor,
it gives the current for each LED as 59*1.24/Rext and there is 1.24V
on this pin and by varying the voltage of the "grounded" end of the
resistors (driven from an op-amp) i can change the output led
brightness. I'm pretty sure the output current is just 59xRref
current.
There is a 7way connector coming from some chip i can't get to on the
side of the lcd panel. The pins seem to be a i2c bus, power, gnd and
R, G, B PWM signals. The PWM signals go via transistors to the !OE
pins. This chip must have colour sensors as it adjusts the duty cycle
of the PWM to try to get the backlight to be white as well as at the
correct overall brightness. (found by manually changing the value of
Rref for one colour and watching it try to compensate with the others).
So, what i've done so far is: tie low !OE inputs, for each R,G,B, take
the !PWM signal that used to go to !OE, pullup with 1K, low pass
filter it with R=100K, C=1uF, divide this by 4 with a 1M pot, buffer
with op-amp follower and connect this to what used to be the ground
end of the Rref resistors. Here's a diagram: (need fixed-width font)
------+-------------------------------------------------- 5V
|
+++
| |Rpullup(1K)
| |
+++ (want 0-1.24V)
| +----+ 0.2-4.8V +--------+
------+---+ +----+-------+ | |
!PWM +----+ | | | |`. | Rref=2K9/3K6
R=100k | +++ +-+- `. | +----+
--+-- | | | >-+--+ +----- Rref
--+-- | |<-----++ ,' +----+
C=1uF| | | |,'LM324
| +++1M
| |
--------------------+-------+---------------------------- GND
I was very pleased to find that this actually works, time constant is
probably a bit too big as the backlight colours sometimes oscillate a
bit after turning on. The averaged !PWM varies from 0.2V (led
brightest) to 4.8V (led dimmest) divided down and buffered gives 1.2V
for dimmest and should give .05V for brightest. Which would give Rref
current from (1.24-1.2)/2900 to (1.2-0.05)/2900.
Only problem is i only get about half the range of brightness i should
as the LM324 can't take it's output below 0.63V as it is sinking
current (0.43mA max). Max Rref current is (1.24-0.63)/2900.
So, can you help? Is there an op-amp i can use instead that will
drive it's output down to 0V while sinking current with a single 5V
supply? Is there a better way of doing this? Any suggestions would
be greatly appreciated.
Also, i'm wondering, is it normal to drive LED's directly with a PWM
signal like this, or have i just been unlucky? I've got a weird
problem with my vision which makes me extremely sensitive to flicker i
can't use crt screens at all or CCFL backlight for more than a couple
of minutes. I just assumed LEDs would be driven by nice friendly DC.
Sean