Go Down

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

bperrybap

Impressive that you able to successfully get the LCD off the shield.
It is often quite difficult, unless you have some desoldering tools.

What is needed is to limit the current from D10 going into the base.
The shields that have the issue don't have a resistor between D10 and the base.
They typically only have a resistor between the base and VCC. This is a pullup resistor used to feed current into the base to turn on the backlight when D10 is an input and not driving the signal.

From your description, I can't tell what design you had or what you have done.
You also mentioned 2 resistors in the last paragraph.

Can you fully describe all the connections going to the transistor base and to D10?

-- bill






MTWallet

Mine is like the original schematic with VCC going into one side of a resistor (R7), the other side of the resistor goes to the base of the transistor. Also to the base of the transistor is a trace back to D10 with no resistor. However, my R7 is 1K, not 4.7K like the schematic. I cut the trace to D10 and dead bugged a 510Ohm across the gap, which made the test happy, but the backlight won't dim at all. I saw someone say they had to use a lower (~120Ohm) in the D10 line, but I think I also saw somewhere that still allowed too much current to flow and could cause damage.

As to the two resistors. There is a new schematic out there from dfrobot (attached) that shows a R7 4.7K just like the old schematic and a new R8 10K in between D10 and the base. Is that new schematic what they did to fix the problem and has a safe current load? Can I remove the 1K R7 and replace with 4.7K and swap the 510 for a 10K?

bperrybap

#167
Jan 28, 2018, 09:05 pm Last Edit: Jan 28, 2018, 09:07 pm by bperrybap
Still not sure exactly how you wired in the added resistor.

It sounds like you may have put the new resistor in between D10 and the base but not between R7 and the base.

If you did that, then the short issue is resolved but D10 won't be able to turn off the backlight as there is now a voltage divider formed by R7 and your new resistor rather than D10 being able to absorb the current from R7.

If that is what you did,
you could cut the trace between R7 and VCC.
The backlight will be off until s/w turns it on by setting D10 high.


D10 must connect directly to the non VCC side of R7 to be able to pull down the pullup.
There must also be a resistor between D10 and the base to prevent a short through the base.
D10 needs to connect to both resistors like what is shown in the schematic that was in your post.


--- bill



MTWallet

#168
Jan 28, 2018, 09:37 pm Last Edit: Jan 28, 2018, 09:45 pm by MTWallet
Sorry that I am not describing it well. This is what the traces, etc. look like on my board. I tried to take a direct photo, but the board is black and it just wouldn't work.

I cut the trace between D10 and where it connects to the transistor side of the R7 resistor. Then jumped the gap with a 510Ohm resistor.

So I need to restore the trace where I cut it and then cut the trace between the R7 resistor and the transistor and patch the 510 Ohm across there?

bperrybap

You can't turn off the backlight the way you did the modification as that creates a voltage divider rather than allowing D10 to ground the R7 pullup resistor.

To fix it, isn't just restoring the D10 trace and inserting the the new resistor between R7 and the base.

It is what I said earlier:
Quote
D10 must connect directly to the non VCC side of R7 to be able to pull down the pullup.
There must also be a resistor between D10 and the base to prevent a short through the base.
D10 needs to connect to both resistors like what is shown in the schematic that was in your post.
You have to do the resistors like what is shown in the schematic in your post  #166  schematic
Note that D10 connects to both resistors and still must flow through a resistor before going to the base.

Its been a long time since I looked at this, but from what I remember, depending on the board trace layout, it may be very difficult to dead bug the added resistor between R7 and the base and get D10 to connect between R7 and your added resistor.

Alternatively, you could just cut the r7 to vcc connection with what you have now and D10 could control the backlight, but the backlight would be off until D10 turned it on.

Another possibility is to measure the actual backlight current. Some 16x2 backlights are very low current and use as little as 2-5ma. If that is the case, then you don't need a transistor at all and you could control the backlight directly from the D10 pin.

--- bill

MTWallet

Thanks for helping me get my head wrapped around the correct interpretation of that schematic. Got it working with backlight control now and a good report from the test sketch.

bperrybap

#171
Jan 29, 2018, 12:05 am Last Edit: Jan 29, 2018, 12:06 am by bperrybap
Thanks for helping me get my head wrapped around the correct interpretation of that schematic. Got it working with backlight control now and a good report from the test sketch.
Cool! That is great.
Did you end up increasing the resistor values?
It isn't necessary but it would reduce the wasted power a bit.

I'm curious what did you use to remove the solder on the LCD pins?
I have a desoldering iron with a vacuum pump but it wasn't good enough for the job.

Are you using the hd44780 library which supports backlight control and auto-detects the keypad shield backlight circuit issue and does a s/w work around automatically if necessary?

MTWallet

I went with the 10K Ohm resistor as that was what was listed in the other post about R7 being 1K (also it was what was on the new schematic.)

As to removal, I had to remove it twice. The first time I flush cut all the pins sticking through the bottom of the main board, then I added a good bit of solder to all those connections, not enough to bridge them, but pretty good blobs. Then I used my soldering station with a large tip on the iron and set it to about 450C and then ran that back and forth along the bottom of all the pins while pulling the LCD from the other side. This eventually liquified all the blobs enough for the pins to pull through. Then I cut the plastic pin holders on the bottom of the LCD so that each pin was separated and pulled them through the LCD while heating the other side with the iron at a more normal temperature. A little cleanup of the holes with some solder wick, and back in business. The raking did bang up the solder pads a little bit though. No serious damage, but they weren't so pretty anymore.

The second time I didn't want to accidentally kill any of the solder pads on the bottom with the raking, so I used my hot air rework gun on the top next to the LCD while pulling the LCD away from the bottom board. I wasn't too keen to do this as I was afraid the heat might damage the LCD panel, but it ended up being OK. Then I did the same cut pins and pull separately through the bottom board and clean holes with wick like I had done the first time. Once I got it all back together, I thought I had killed the LCD because the top 1/4 of it wasn't displaying, but fortunately it was just some flux that had wicked under the panel connector so after I took the display apart and cleaned up with some alcohol all was fine. (The 2nd time I put it back together I used some pin sockets on the main board instead of directly soldering the display to the board as I'm not concerned about depth.) So it was easy to get to the back of the LCD that time. Also I could get back to the resistors if the 10K didn't work out.

As for libraries, I haven't started using that yet. I am a complete newbie to arduino and honestly, right now I wouldn't even know what to do with the library if I added it.

Sorry for the long descriptions of desoldering, but maybe it will help someone in the future. And thanks again for the responses to help get me straightened out.

bperrybap

Very nice write up.
I didn't ever think of flush cutting the pins. I think that would be a big help.

For the library - called hd44780, it is noted in the first post and available in the IDE library manager.
It provides API functions to control the backlight, whereas the IDE bundled LiquidCrystal does not.
It is also much faster than the bundled LiquidCrystal library.

--- bill


HaplessDIY

I cannot tell from all the postings if this shield is totally  dead ie not useable  unless this backlight  problem is resolved or are  there just some undesirable backlighting effects.  In the one I have I can turn the backlight down but all I see is  small  rectangles for where "hello world" should appear.



See attached photograph.


bperrybap

Did you run the diagnostic tool included in the hd44780 library to test the shield?
--- bill

HaplessDIY

No I didn't.  I was hopping around from post to post and I saw something about someone blowing their board due to some test code.  If that test code is indeed valid and safe then I'll give it a try. 

bperrybap

Well, if the shield has the backlight design flaw, then there is always the possibility of an issue.
However, the test code minimizes the amount of time that the Arduino pin is driven to try to avoid any issue.
The amount of time will be in milliseconds.
In real life I've done testing on my shield and have had the backlight control pin driven high for a minute or more without issue.

I've only heard of an issue from one person (earlier in this thread), and when I tried to contact them for more information as to what they had done, they didn't respond with they actually did so I have no idea what he really did to blow his Arduino board.

So far over the course of several years I've not heard anyone saying that running the diagnostic test sketch I provided damaged their Arduino.


--- bill

HaplessDIY

OK, I understand that was "fake news" :smiley-confuse:
Anyway, if it has the design flaw does the display still work at all, should I be able to see some characters?  Does that bad design keep the screen from showing characters?
If the answer is that it only affects backlighting then there's no point in me trying test code.

Go Up