Anderson 117 LCD display control module

This thread is dedicated to the question of controlling the brightness of the backlight of an LCD display panel, when that panel is connected to an Arduino via the excellent "Kit 117" controller produced by Peter Anderson, and available from various sources. I'll tell you some of them a the end of this note. (It is the basis of the Modern Device "TTL serial LCD board", for instance.)

Before we start on backlight brightness, a quick word about what it isn't. It isn't the character-to-background contrast, which is set by the variable resistor/ potentiometer. On the ModernDevice board, the variable resistor is marked "contrast".

Some LCD panels have no backlight. Some are almost unusable if there's a backlight, but it isn't on. In the latter case, you will need to look at the panel under a very bright light (and you'll need to have the contrast setting right... but "about right" will do) to see that it is "working", until you get the backlight working.

YOU CAN "fry" YOUR BACKLIGHT if you get some things wrong with some panels. So read all of this before starting, if you are a novice.

The panels which connect happily to the 117 controller have two pins called "BL+" and "BL-". Connect the right voltage across these, OFTEN WITH a current limiting resistor in series with that voltage, and the backlight lights.

Happily, if you are using the ModernDevice board, you don't have to connect directly to the panel. The ModernDevice board helps you make the connection... and carries important support circuitry.

The Modern Device board cannot drive the backlight of ALL LCD panels... it can't drive some of the panels with high power electroluminescent backlights.

To check what I am saying in this, consult....

(That document, by the way, is FULL of useful detail.)

In a simple world, with the ModernDevice board (MDB hereafter), you connect voltage for the backlight to the VBL pin... the "top" one of the four at the "left" side of the board. (It is marked "VBL"). (When you connect the "positive" side of that voltage to VBL, you must, as almost ever, ALSO make a "ground" (i.e. zero volt) connection also. It goes to the "G" pin next to wher you feed 5v into the MDB; shares it with the ground connection for the source of the 5v.. which is probably your Arduino.) The voltage you attach there passes through the resistor just above the reset button of the MDB. (Resistor's name: RBL. Right size... see below.) It is then routed to the panel, where the backlight can be thought of as a big LED. The other "pin" of the LED connects back to the MDB. The signal goes to the collector (middle pin) of the big transistor in the lower left (TIP120 supplied with kit IRL530 also suitable.) "Transistor? Oh no!" I hear novices cry. Fear not, I'll explain, but let's get the overview done first. The signal passes through the transistor, passing out through the emitter, the top pin (one nearest reset button) and finally reaches ground.

(Aside to experts: Yes... I realise that what I am going to say is imperfect... If you know, you know. But the way I'm going to say it may help novices?)

The transistor acts like a variable resistor. If it is "set" to have no resistance, the backlight will glow at maximum brightness. (Not all backlights offer anthing between "on" and "off", by the way.) If the transistor is "set" to maximum resistance, there is no complete circuit for the electrons, and the backlight is off.

"Transistor is set...." What on earth? Don't worry! Setting the transistor's resistance is quite easy. And until you master that, if you carefully short the top two pins of the transistor, you will bypass the transistor. It will arrange for the BL- connnection from the panel to be connected directly to the "ground" (i.e. 0v) pin of the MDB. With those pins shorted, and a suitable resistor in place, and voltage supplied via the VBL pin on the MDB,

Once you can send Hello World to the LCD panel....

a) Remove any short you may have created across the transistor's pins.

b) Try sending ?B88Hi to the panel.... include the question mark, be sure to send ?B88Hi, not ?b88Hi

-Check what the panel shows, don't worry if it is not much

c) Then send ?B00Hi (those are zeros, not "Ohs")

-Check what the panel shows, don't worry if it is not much

d) Then send ?BFFHi

You should have seen one case of the backlight fully on, one of it fully off, and you may have seen it "half on".

You can put any mix of two characters after the "B", as long as you stick to digits (0-9) or letters in the subset ABCDEF. (The two characters make a "hex number"... story for another day.

I put "Hi" immediately after the "set the backlight brightness" command, so there would be something to see!

How does this work??? The PIC chip at the heart of the Anderson 117 systems is wired to the base of the transistor. It is what is happening there that determines the transistor's resistance, and thus how many electrons flow through the backlight, and thus if it is bright or not.

By the way... the module "remembers" the brightness level most recently requested, even across a shut down/ restart.

===
Controller module PCBs, kits and assembled units from...

http://www.moderndevice.com/products/lcd117-kit is the board the above post applies most directly to.

http://www.wulfden.org/TheShoppe/k107/about.shtml SIMILAR to ModernDevice board... but I DON'T KNOW if they did as much for the backlight's needs. I would assume so, but you'll have to check, and adapt details of what I said above.

===
Choosing RBL:

You MAY not need one. Some panels come with a resistor in the panel.

If you DO need one, and use a piece of wire instead of RBL, or a resistor that is not "big" enough (resistance, not physical size), you will permanently fry your backlight.

If you do need one and use one that is too big, the backlight will simply be quite dim, or simply not light at all, even when you've done everything else right to get it "bright".

The "right" resistor will change if you change the voltage you feed in at VBL.

===
AND ANOTHER THING!!!

If you know that the source of 5v that you are feeding into the MDB has power to spare to drive with the backlight of your panel, then you can do the following. (If you're not sure about the precise technical meaning of "power to spare" then your safest to continue to use a separate power supply for the backlight)

Disconnect whatever you have connected to the VBL pin (the one in the group of 4, left hand side of board). Solder a connection across the pads provided for the purpose just to the left of RBL.

A very good write up - thank you for your work and effort and for providing to the group.

Ken H>

I have a couple of the 117 boards and while they are very nice and well designed for the LCD side of the equation, BUT!!! the CLOSED SOURCE software does not support CR and LF, you have to send special characters, i.e. "?n" tp get new line and "?f" to clear the screen. So much for the Standard in ASCII. This makes them useless when trying to integrate an LCD into an existing system.

Just my $0.02 worth

Mark S,

why don't you release your own open-source hardware and software that addresses those issues?.

I am going to, I just sent the boards out to be made and should have them next week

Check out http://coewww.rutgers.edu/~msproul/arduino/serialshield/

Mark

@mark,

That is kinda cool. Any idea on pricing for them?