Warning to users of some vendors LCD keypad shields

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.

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

.

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.

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

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.

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

OK, I understand that was "fake news" :confused:
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.

HaplessDIY:
OK, I understand that was "fake news" :confused:
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.

Fake news? I have no clue what you were tying to say.

With these comments it sounds like you didn't read the initial post in this thread.
It describes the issue. It is a backlight control issue.
If the Arduino drives the pin connected to the backlight circuit on the shield, there is the potential to damage the AVR processor since the backlight circuit is pulling way over the allowed current that an AVR pin can safely supply. (and other processors too)

--- bill

bperrybap:
Fake news? I have no clue what you were tying to say.

With these comments it sounds like you didn't read the initial post in this thread.
It describes the issue. It is a backlight control issue.
If the Arduino drives the pin connected to the backlight circuit on the shield, there is the potential to damage the AVR processor since the backlight circuit is pulling way over the allowed current that an AVR pin can safely supply. (and other processors too)

--- bill

Sorry Bill, I was trying to be funny about "fake news". I suppose you don't follow politics much. Good for you.

I did go back to the original post, download, and ran the code, sure enough BL Circuit BAD. So now I have many answers if not all. I just need to sort out the details. In the meantime I will enjoy the flashing bad message.

If I can be so humble as to suggest, your original post should be in a "sticky" with no responses allowed.
My problem was that I read your post and I decided, well, I better read all the next posts because there is obviously more to the story. The more I read the more confused I got. I am an EE and I have a garage full of 1n34 to schottky diodes maybe even gaas its just that I got tangled up in a long thread of suggestions and counter suggestions and I couldn't tell who or what to believe.

I think I read somewhere in the threads that a workaround can be had by just not connecting pin10. I'll look into that one. Somewhere I saw mention of a schematic but then it wasn't clear that it was an accurate schematic.

The only other comment I would make is that while it is a "backlight control" problem it will make it look like the LCD doesn't work at all.

Thanks for writing that code. Its a nice piece of work. I will dig into it.

The LCD should be working. The images that you posted looked like an LCD that was not initalized properly.
Perhaps you were not initializing what ever library you were using correctly.
i.e. if you used the HelloWorld sketch from the LiquidCrystal library "as shipped" it will not work with that shield as it uses different pins to control the LCD than the shield uses.

The backlight issue is actually a simple error in the design. They did not put a current limiting resistor in series with the Arduino pin driving the base of the transistor to limit the current being fed into the transistor. The transistor acts like a short to ground and allows more current to pass through it than the AVR pin is rated for.

The solution would be simple if you could get to the PCB area to add a resistor but on most shields the area you need to get to is underneath the LCD panel and desoldering it is pretty difficult.

There are several options in both s/w and h/w to deal with it.
You could use the hd44780 library instead of LiquidCrystal as it will check for the issue and work around it in s/w.
Or you could do a h/w mod to actually fix the h/w.
Or you could just make sure to never drive pin 10 high and let the backlight remain in its default state which is on when the Arduino pin is an input.

--- bill

.e. if you used the HelloWorld sketch from the LiquidCrystal library "as shipped" it will not work with that shield as it uses different pins to control the LCD than the shield uses.

you are correct I was using the library "as shipped" so your code fixed that problem. I would have never figured this out unless I would have dragged out a logic analyzer and captured the data and then studied the controller spec etc. or I suppose followed all those circuit traces. No way would I have spent that much effort.

Who figured out that the pin assignments were wrong? Was that in the Shield information from these different suppliers?

HaplessDIY:
Was that in the Shield information from these different suppliers?

A schematic... :wink:

Antonior:
And a drawing...

A schematic is a drawing.
No fancy tools are needed to see the pin connections. Just look at the schematic.
It was attached in the very first post of this thread.
And even if a schematic wasn't available, it would only take a few minutes to figure out the Arduino pins being used to control the LCD by using an ohm meter.

--- bill

Hello,
Thank you for sharing :slight_smile:

My shield in duinotech XC-4454 2x16.
I've attached it to a Sainsmart UNO with the sketch below and it worked fine with good brightness.
Then, because I want to be using the Arduino without the shield actually pressed on, to free access to other pins, I reconnected it with jumpers, eyeballing the matching connections. I initially connected just D4-9 plus 5v, gnd and A0. I also experimentally connected other (matching I believe) pin with jumpers.
The display still works, i.e. gives the correct output w.r.t. button presses but the screen is very dim. I'm not sure the backlight is on at all.
I pressed the shield back onto the UNO and still dim. I connected a 9v supply - no change. I uploaded the sketch to a genuine Mega 2650 R3, pressed on the shield, and get the same result.

Is it possible/ likely I damaged the LCD (there is a transistor I read can be damaged?) by manually connecting pins?

// sketch 09-01 USB Message Board

#include <LiquidCrystal.h>

// lcd(RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int numRows = 2;
int numCols = 16;
int sensorPin = A0;
int boo = 0;



void setup()
{

  Serial.begin(9600);
  lcd.begin(numRows, numCols);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Arduino");
  lcd.setCursor(0,1);
  lcd.print("Rules");
}

void loop()
{
  if (Serial.available() > 0) 
  {
    char ch = Serial.read();
    if (ch == '#')
    {
      lcd.clear();
    }
    else if (ch == '/')
    {
      // new line
      lcd.setCursor(0, 1);
    }
    else
    {
      lcd.write(ch);
    }
  }
  testfunction();
}

//======

void testfunction()
{
boo = analogRead (sensorPin);
lcd.clear();
   lcd.setCursor(0, 0);
lcd.print (boo);
Serial.println (boo);
 delay (5000);
}

So, using the hd44780.h library and this sketch:

// LCDKeypadCheck - LCD keypad shield backlight circuitry test
// Copyright 2013-2016 Bill Perry

I get "BL circuit bad" so I guess something has happened to damage the LCD circuits. I've got another LCD 2 x 16 on order, this time not a shield (I don't want it clamped to the other board), and with the I2C backpack. So think I'll just move on.

EDIT: Does "BL circuit bad" refer only to the LCD shield itself or can it mean a damaged i/o pin on the AVR?

bumblepom:
EDIT: Does "BL circuit bad" refer only to the LCD shield itself or can it mean a damaged i/o pin on the AVR?

It means the BL circuit on the shield is a bad design and has the short circuit issue on digital pin 10.
Which means that you need to be careful not to set D10 to HIGH as the high current draw could potentially damage the AVR.

I'll update the message to be a little clearer.
It will be in the next release of the code.

--- bill

bperrybap:
It means the BL circuit on the shield is a bad design and has the short circuit issue on digital pin 10.
Which means that you need to be careful not to set D10 to HIGH as the high current draw could potentially damage the AVR.

I'll update the message to be a little clearer.
It will be in the next release of the code.

--- bill

Thanks Bill
Pin 10 seems still OK (led flash output OK). Is there an alternative pin-to-pin I can jump to turn on the backlight or is it likely to be permanently dead?

The message display on the LCD by LCDKeypadCheck was left alone.
The comments in the sketch were updated to better explain what "BL circuit bad" means.
It will be in the next release of the library.
--- bill