Pages: [1] 2   Go Down
Author Topic: 16-segment LED displays - which driver IC?  (Read 6676 times)
0 Members and 1 Guest are viewing this topic.
Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

I'm trying to interface 8 digits of 16-segment alphanumeric LED displays (common cathode) with an Arduino. I'm having difficulties finding the right driver IC for this.

Has anyone done this before and what IC did you use?

I have found a few possible solutions but they all have some draw-backs.

First I was planning to use the famous MAX7219. This looked good until I realised that the 16-seg displays I have only have a single common cathode. So I can't connect 2 of these to one digit.

Then I was looking at the 74HC595 8 bit shift register. That should work, but I would need 2 of these per digit, so 16 in total. That seems a bit excessive. But this is probably the solution I would go with if nothing better comes up.

I have also found the MAX6955 or MAX6954. This IC would do all 8 digits in one IC and even has the "font" built in. That would be great but I can't find any place to buy these in the UK.


I can't believe that it is so hard to find a driver for 16-segment displays while it is so easy to get these for 7 segment displays.

Any suggestions welcome! ;-)

Thanks!!
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8477
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
only have a single common cathode. So I can't connect 2 of these to one digit.

Just a little thinking outside the box, can you AND two digit selects together.

74595s aren't really designed to drive LEDs, they will need driver chips and resistors.

Have a look at TLC5926 and TLC5927, 16 channels and constant current so only a single resistor to set current.

______
Rob



Logged

Rob Gray aka the GRAYnomad www.robgray.com

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks!

I did think about the MAX7219 for a while (since I already have the ICs) and was wondering whether I could just put some simple diodes in the digit select lines to prevent short circuit. I've drawn up some schematics for that. Have a look at the bottom where I put diodes in the lines. Any idea if that might work? I was also considering a XOR gate instead of the 2 diodes but I guess they wouldn't take the current and I'm not sure if adding transistors would interfere with the MAX's current sources.

here's my schematic:
http://yesyesserver.co.uk/temp/Arduino_Clock_Display.png

The schematic only shows 2 digits for now. I just wanted to show what I meant. I would spread the "half digits" randomly across the MAX to minimise the likelihood of 2 MAX trying to drive the same physical digit at the same time. I take it that 2 daisy-chained MAX7219 don't sync their digit scan clocking? If they did, I could completely avoid 2 MAX driving the dame digit at the same time.

I'll also check out the TLC ICs you mentioned. I do think my project needs some TLC .. smiley-grin
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 604
Posts: 33448
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
but I can't find any place to buy these in the UK.

http://uk.farnell.com/jsp/search/results.jsp?N=0&Ntk=gensearch_001&Ntt=MAX6954&Ntx=mode+matchallpartial&suggestions=false&ref=globalsearch&_requestid=1586165&isGoback=false&displaytext=&isRedirect=false

but not cheap.
Logged

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Odd, I did check farnell, but probably only for the 6955...

But I should mention that I would need DIP through-hole packaging. I have no equipment to handle surface mount.
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8477
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Those diodes are what I was suggesting, they form an AND gate (XOR is not the right logic function here).

However I don't see the need for the second 7219, you have the equivalent of 4 digits and that be handled by a single chip.

Also you don't have the segments in parallal, eg A1 goes to G1. That will make your code really difficult as the bit pattern for a given character will be different for each display.

______
Rob

« Last Edit: January 21, 2011, 10:38:09 am by graynomad » Logged

Rob Gray aka the GRAYnomad www.robgray.com

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

thanks for that. This has given me confidence to try it this way on a breadboard without the fear of frying something.

In the end I want to use 8 digits. I have only drawn 2 for now to show the idea I had with the diodes.
The cross wiring of the segments was intentional. The idea was to minimise the chance that 2 MAX would drive the same common cathode at the same time. Do you think that makes no sense?
The project will only display something like 10 fixed words, so I would create a bit array for those words (one bit per segment) and wouldn't need to convert text on-the-fly.

Are you sure that AND is the right logic though? In my understanding it should be either one or the other MAX driving that line but never both, which is, in my understanding, an XOR. But correct me if that's wrong...
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8477
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I haven't looked at the 7219 specs properly but I assume it pulls the digit select low as they are common cathode.

In that case you want say digit 1 and 2 to activate the same display. So the logic is

OP low if IP1 low OR IP2 low

That's an OR function with inversions on all pins, aka an AND function.

That's working on the digit being driven from a single 7219.

Quote
either one or the other MAX driving that line but never both
I can see no way of connecting both chips to a single display, they would never be synchronised and segments would be lighting up all over the place.

Quote
2 MAX would drive the same common cathode at the same time. Do you think that makes no sense?
Yes I think that makes no sense smiley, because of the above reasoning.

______
Rob

Logged

Rob Gray aka the GRAYnomad www.robgray.com

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

aaahhhhhhh, I see what you mean...
Use 2 digit lines from *the same* MAX to drive the 2 halves of one physical digit connected to the same common cathode with diodes. That way it would NEVER try to drive the cathode from 2 places as only one digit line is active at any one time....

Will amend the schematic and post as I'm not sure I can put this in words properly .. ;-)
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is the modified schematic:
http://yesyesserver.co.uk/temp/Arduino_Clock_Display_2.png

Is that what you meant? I would drive 4 digits with the first MAX and the other 4 digits with the other MAX...
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I've tidied it up a bit and extended it to all 8 alpha digits.
http://yesyesserver.co.uk/temp/Arduino_Clock_Display_3.png
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8477
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

That looks about right. Let us know if it works.

______
Rob

Logged

Rob Gray aka the GRAYnomad www.robgray.com

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

OK, I just wired this up on a bread board (and, boy, am I glad I stocked up on jumper wires recently). ;-)

While it does work in principle, it will always light up both segments that share a segment line. For example segment A1 and G1 as they are both connected to the SEG_A line. Having a look back at the schematic it makes perfect sense.

Back to the drawing board...
Any ideas how I could resolve this? Can it even be done with a single common cathode?
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8477
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Doh, of course it will. I should have seen that.

Quote
Any ideas how I could resolve this?
Yep, use shift registers.  smiley

OR a 16-seg driver like the MAX6954, supposedly available in a DIP 40 but I can't find any.

Then there's the ICM7244

http://search.digikey.com/scripts/DkSearch/dksus.dll?lang=en&site=US&WT.z_homepage_link=hp_go_button&KeyWords=icm7244&x=23&y=20

SMD only though.

______
Rob

« Last Edit: January 22, 2011, 11:41:39 am by graynomad » Logged

Rob Gray aka the GRAYnomad www.robgray.com

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm beginning to think it won't work this way...

Possible ways forward would be

- find a 16 segment LED display with 2 separate common cathodes (can't seem to find any)
- use a 8x8 dot matrix per digit instead (would require 1 MAX per digit)
- use a 16 bit shift register IC per digit
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Pages: [1] 2   Go Up
Jump to: