Go Down

Topic: Warning to users of some vendors LCD keypad shields. (Read 103972 times) previous topic - next topic


All of this information is already in this thread.
In fact nearly all of it is in the original post, including a description of
the issue and an attached schematic image.

As was discussed in the thread, the issue with a few of the solutions you are
considering is that they are very difficult to do, particularly your #1 solution.
While better than using a diode, it requires unsoldering and resoldering the LCD
to be able to get to the area where the transistor and resistor are located.
In post #1, I mentioned using the diode solution, not because it was ideal,
but because doing much else required lots of desoldering.

The reason you don't see any discussion of directly wiring d10 to the backlight
is that it is not guaranteed to work. LCD Backlights are typically driven with a transistor
because backlight current needs can vary between LCDs and some can consume more power than than an i/o pin
on a microcontroller can supply supply. 
While some backlights can be driven by an AVR pin directly, some can't.
That is why you typically see the backlight begin driven by a transistor.

This part of your post is incorrect.

Or a suitable diode can be placed in series between pin D10 and where the 4.7k  resistor attaches to the line to the transistor base.  If the diode's orientation is correct,  it will prevent short circuit of pin D10,  when it is set to OUTPUT and HIGH. In this case however,  you will only be able to turn the backlight ON with pin D10 in INPUT mode,  backlight OFF with pinD10 in OUTPUT mode (either HIGH or LOW).  You will have no intensity control.
Refer to the following corrected schematic - note that the free end of the diode should have been labeled as connected to Arduino pin D10,  rather than labeled with a cryptic BT.

Note: this is the same diode solution I used in the orginal post; however,
the entire point of the diode is to allow controlling the transistor and hence the backlight,
while D10 is always in OUTPUT mode.
With the diode, when D10 is HIGH, the diode blocks it but the pullup on the shield turns on the backlight, when D10 is LOW
it goes through the diode and overrides the pullup and turns off the backlight.
When D10 is used in PWM mode using andlogWrite() you
get dimming/intensity control.
The point of the diode is prevent the short between the D10 being HIGH and ground through the transistor
so that the D10 can be left in OUTPUT mode and driven HIGH or LOW with no issues.

The ideal solution would be to replace the transistor with an FET. Problem solved.
Not only do you get the backlight on by default by the pullup turning on the FET, but
D10 can overfide the pullup to control the gate with no issues of a short,
since there is no current flow into the gate.

But that requires being able to get to the transistor which is usually quite difficult because
it is under the soldered LCD.

There is a s/w only solution that is also mentioned in the original post.
In that solution, there is no modification needed to the board,
you must have D10 in INPUT mode to allow the pullup to turn on the backlight
and then set D10 to OUTPUT and LOW to turn off the backlight.
This work around precludes the use of PWM since that leaves the pin OUTPUT
mode all the time and during the HIGH portions of the PWM signal, there will
be the short through the transistor.

The original post mentions this and reply #1 has the code for the s/w work around.

--- bill


Just thought I'd drop in and thank bperrybap for bringing this matter up.  I've also got one of the nuisance keypad jobbies.  I rigged up the +5v and GND to the shield, testing on the 200ma range, from pin 10 to +5v gives me OVER RANGE (so that's over 200ma! )  From pin 10 to GND gives me just 4.6ma (and the backlight goes out).

I attempted a diode but every one I tried (even a schotsky) prevents the backlight from being extinguished.  By trial and error with resistors of various values I found a 150 ohm seems to be the sweet spot.  It still draws 26ma (when the backlight is on) but increasing the value to just 220 ohms prevents the backlight from going out.

I've managed to make the break in the track but it's fiddly on this beast as the small piece of track that's available to me runs pretty tightly between two others.  Also, after the laborious job of carefully scratching away the paint, and cutting the break in the track, the small 1/4 Watt resistor I was going to use now looks enormous. 

I'm leaving it as it is for now until I have a surface mount resistor available.  I think a 1206 would slot in there nicely.  Until then, I'll just be stuck with a permanently illuminated backlight (that's at least won't draw any current through pin 10.)


Jan 22, 2015, 04:12 pm Last Edit: Jan 22, 2015, 05:04 pm by tvcsantos
Hey, I've bought a DFRobot lcd shield (v1.0?) do I have this problem? The schematics are supposed to be this:


I see that it is a bit different from the one you posted, this one has a 10K resistor (R8) connect to base...


EDIT: ok now i know that there is a version before v1.0, and since mine does not have printed 1.0, I am in doubt....

EDIT2: Later i will post a pic of the shield, that i have


EDIT: ok now i know that there is a version before v1.0, and since mine does not have printed 1.0, I am in doubt....
I have one marked v2.0.  Inspecting the components under a magnifier, it looks like it has the problem (includes a "resistor" of zero ohms) yet testing proves that it's fine.  Perhaps the (unmarked) transistor on this one is a mosfet.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131