Go Down

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

bperrybap

twallace51,
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.
Quote

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




KenF

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.)

tvcsantos

#107
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:

http://www.dfrobot.com/image/data/DFR0009/LCDKeypad%20Shield%20V1.0%20SCH.pdf

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

Thanks,
Tiago

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

KenF

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.

--EasY--

Did not have time to read the entire thread, but it seems that the schematic can work without changing the hardware. Did anyone already try to not set pin D10 to high (as this would be an issue), but has anyone tried to program the pin as an INPUT with the internal pullup activated? That might draw enough current to close the transistor without blowing up the Arduino pin.

bperrybap

Did not have time to read the entire thread, but it seems that the schematic can work without changing the hardware. Did anyone already try to not set pin D10 to high (as this would be an issue), but has anyone tried to program the pin as an INPUT with the internal pullup activated? That might draw enough current to close the transistor without blowing up the Arduino pin.
Did you take the time to read the first post in the thread?
The first post notes using the pin as in input as a
s/w work around and has a link to the second post
which has a zip file containing additional information and some code macros
to provide a safe backlight control function using this s/w work around.

While enabling the pullup won't hurt, the pullup is not needed when
the D10 pin is in input mode since there already
is a pullup on the lcd shield - which is what allows the back to be on by default
since by default, AVR pin 10 is an input after power up.

Note: I updated the first post to correct the tags for the link to the 2nd post
since it wasn't clickable.  It is now clickable. Also added direct link to
zip image that contains s/w work around.

--- bill

Hello, i've just received this one i don't know why.
How can i use it completly with Arduino Uno ?
Pictures and programs requested !
Thanks a lot my international friendship from Marseille France.
Regards Morel Philippe.
www.pilote13008@facebook.com

KenF

Hello, i've just received this one i don't know why.
How can i use it completly with Arduino Uno ?
Pictures and programs requested !
Thanks a lot my international friendship from Marseille France.
Regards Morel Philippe.
www.pilote13008@facebook.com
Just never put pin 10 into OUTPUT mode and you'll be fine.

ShapeShifter

Just never put pin 10 into OUTPUT mode and you'll be fine.
And you'll never be able to turn off the backlight, either. But that is the safest way to handle it.

If you do want control over the backlight, and don't want to modify the board as mentioned elsewhere in this thread, then:
  • To turn backlight off: set pin 10 to OUTPUT and LOW
  • To turn backlight on: set pin 10 to INPUT
  • Just be sure to never set pin 10 to OUTPUT and HIGH!

Wile

Hi all. I bought an LCD keypad from DFRobot ( )

The schematics can be found here : http://www.dfrobot.com/image/data/DFR0009/LCDKeypad%20Shield%20V1.1%20SCH.pdf

The link to schematics from DFRobot page still redirects to v1.0 so I give the right one above.


I use this for a while, using dimming by using D10 as an output with a value of about 150, so with PWM.

Can someone say to me if I'm concerned with the issue ?

Wile

I had a response from DFRobot. I paste it here.

Quote from: grey.cheng"
Hello Eric,


Thank you for your inquiry.

I've seen this post 2 years ago, but It has been fixed at that time.

You could control the backlight with "D10" directly.


Best Regards,
Grey
--DFRobot Tech Support

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!

Arduino
via Egeo 16
Torino, 10131
Italy