[bill2009] wanted to reuse some common seven segment LCDs, but the question was how to drive them. Armed with a couple application notes from [Microchip] and [Atmel], an oscilloscope and an Arduino, he has made a proof of concept which shows its not super hard to drive those little reflective LCDs that so many devices have.
First finding out that these things are indeed multiplexed, he went on to what is needed to drive them, which is about +-2 volts difference from the backplane, next up was to find a donor, which he found readily at Staples, in the form of a “clocky” style run away alarm clock.
After poking around watching what signals do to the different segments on the LCD he whipped up a little circuit to control the display from the Arduino. The positive and negative voltages the segments require are made possible by the use of a set of pull down resistors, and switching pin modes on the micro controller.
These small type segmented LCDs are everywhere, and being able to use them is a big bonus.
Doner?
I think he meant donor, not kebab.
I know, right? Also:
“Armed with a couple application notes, an oscilloscope[sic] and an Arduino,…”
“which shows its[sic] not super hard”
“a set of pull down resistors,[sic] and switching pin modes”
Try:
“…oscilloscope, and…”
“…shows it’s not…”
“…resistors and switching…”
Donor ?
Nice proof of concept but any DC bias on the LCD at all, if the duty cycle is not exactly 50% on average, will cause the liquid crystals to migrate toward one electrode or other rendering it useless after a while.
Seeing as the Arduino is AVR based anyway, maybe a ATMega169P or 329A could be substituted as that gives you the proper built-in LCD driver and the LCD can stay on in sleep mode.
@Mike: Probably a typo. “Donor” would make sense.
I’ve been wondering about the reverse of this of a while. Can you snoop on an LCD by reading the lines back with a uC?
For example my thermostat has an LCD, and I want to read it with an uC (so I can also control the buttons and set a new temperature)
I’m trying to figure out how this is a “proof of concept”… People have been doing this for decades…?
Using an atmel processor is overkill, but meh. Whatev.
One thing I am wondering is who is silly enough to call an atmel processor on a proto board an “arduino” – LOL!
@Ekaj
Even though it has been done before it can still be a proof of concept. About the Arduino thing I dunno, maybe it uses the arduino bootloader? :P
good to know i guess
@Ekaj
“One thing I am wondering is who is silly enough to call an atmel processor on a proto board an “arduino” – LOL!”
If you took the few seconds to read the article, he is using an atmel processor with the arduino boot loader and is using the arduino IDE to build and load the code.
First, @the submitter: Thanks Kevin!
@nes “Nice proof of concept but any DC bias on the LCD at all, if the duty cycle is not exactly 50% on average, will cause the liquid crystals to migrate toward one electrode or other rendering it useless after a while”
I was just happy it worked as designed. There will be a *bit* of dc bias I think, the middle voltage is about 5% low. In my final setup I’ll measure carefully and choose my resistors.
“Seeing as the Arduino is AVR based anyway, maybe a ATMega169P or 329A could be substituted as that gives you the proper built-in LCD driver and the LCD can stay on in sleep mode.” I was aware that there were avrs with drivers but i didn’t think they were current. The 169/329 look like great big surface mount things. But thanks, I’ll look at them.
@daid:reading the lcd is a really cute idea and i’m sure you could do it – i’m going to try.
@js
Yeah, I read it – He’s using an ATMEL processor. Not an ARDUINO processor. Just so you know.
Sure, millions of devices already drive this type of LCD, but this is unique because he’s using a general-purpose microcontroller to drive the LCD segment voltages directly–I have never seen this done before: it always involves a special-purpose LCD driver chip or microcontroller peripheral. In addition, he figured out how to use a scavenged LCD on his own. One of the more worthy hacks I’ve seen for a while!
@daid actually, one of my upcoming hacks has that as a core idea (reading an LCD, and controlling buttons). It’s a custom LCD, though, so I’m not sure how difficult figuring out the multiplexing will be.
from the linked application notes, on the section on multiplexing: “The last time Microchip investigated high pin count
packages, 30,000+ was not an option.”
:D
If you want some hints post a picture of the lcd and connectors in the thread below or post a pointer to it here and i’ll make some starting guesses for you. Usually the backplanes are at one end of the row of connectors and there will be either three or four. I probably couldn’t have figured it out without a scope but in principal a logic analyzer or a micro with ADC could do it.
Also, it occurs to me that doing a full read of this clock lcd would require four analog inputs for the backplanes and two more for each digit and the dip version of the avr chip only has six. You might find some redundancy in a seven segment display that would let you do better but not much.
http://arduino.cc/forum/index.php/topic,51464.0.html
Sweet hack! I wonder if it would benefit from filter caps on the analog line….
It shows up under android hacks for some reason.
Hi Kevin,
My name is Leah Maestri – I’m a master student from Simon Fraser University, Canada. I’ve used your digital alarm clock example as part of a conference paper that’s been accepted – the conference is called Creativity and Cognition 2011. Website: http://dilab.gatech.edu/ccc/?page_id=161
(See Accepted paper: Understanding Repair as a Creative Process of Everyday Design)
Will you permit me to use the image above in this paper? I’ve used your hack as an example of how people can easily resource everyday materials to make and repair digital objects.
Thanks for your consideration and all the best,
Leah Maestir
@leah: certainly you can use it. Thanks for asking.
@Bill: Thanks so much!