Best Way To Drive 6+ 7 Segment Displays

Go To Last Post
19 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have a project I'm starting on, which at the core is a clock. To prototype, I'm just using a Teensy++ on a breadboard, so I'd like to start with some small off the shelf 7 segment displays (at least 6 digits). Eventually, the final project will require large (at least 6 inches, and maybe 12 inches tall) digits, as I'll need to be able to see them clearly from at least 100 feet away (these may wind up being a custom part I make with a *LOT* of LEDs).

For now, I'm trying to figure out the best way to drive a bunch of these displays. Here's a few generic ideas I've found...

1) Multiplexing. It's the cheapest, all done in software, and most power efficient, but I'm not sure if it will scale well to the larger display, as that will definitely require a separate driver. Also, it may take up too much CPU time, though not certain.
2) Latches. I'm not hurting for I/O pins, so I could just set up some pins (a quick calculation suggests something like 16 pins total) and just use the latches to drive the displays. This is pretty simple, but it requires 8 latches per digit, which winds up being a lot of hardware.
3) SPI/I2C driver. Doesn't require a lot of I/O pins, though maybe a bit more CPU time. The driver shouldbe able to drive the prototype directly, or hook into a higher powered driver for the larger display.
4) Other ideas...?

I'm leaning towards using SPI/I2C driver, as I think that's probably the easiest. If I do that, then I can use something like this http://adafruit.com/products/879 for prototyping, and then if I build my own driver for the larger display, just copy the I2C commands. I'm not sure if this actually makes sense though, or if there is a better way to do this that I'm totally missing?

FYI, this will be mounted on a wall with external power, so power draw is not a concern (within reason, I don't want a nuclear power plant to run this thing :lol:). There will also be a Wiznet (or similar) SPI ethernet adapter, and probably an SD card on the SPI bus as well.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Whatever happens, you will need external drivers of some description to provide enough current/ voltage for a monster display.
An SPI chip seems a good idea.

For development purposes, you can just multiplex small 7-segment modules with the AVR pins. Multiplexing takes very few AVR cycles. Of course an external SPI chip is even easier.

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Maybe not the most professional solution but the following will introduce you to "charlieplexing":

http://atmega32-avr.com/charliep...
http://www.instructables.com/id/...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Is there anything to worry about with chaining too many peripherals onto the SPI or I2C buses? I've used both in the past, but I've only ever had a single peripheral on the bus at any one time. I know that in theory you can have a bunch of devices connected, I'm looking for more practical experience here.

Thanks!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:
Maybe not the most professional solution but the following will introduce you to "charlieplexing"

Ha, I'm familiar with charlieplexing, trying to avoid that since I'm not pin limited (yet!) and I'm thinking that's not the type of design I'd want on a scaled up monster LED display... :)

That's a neat application to charlieplexing 7 segment displays though!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There is a max chip that will drive 64 seven seg displays, but it costs something. How many of these you building?

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

iwoloschin wrote:
2) Latches. I'm not hurting for I/O pins, so I could just set up some pins (a quick calculation suggests something like 16 pins total) and just use the latches to drive the displays. This is pretty simple, but it requires 8 latches per digit, which winds up being a lot of hardware.
Intersil ICM7228 uses a byte-wide small SRAM for 8 digits.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

For a monstrous design like this I'd hesitate about using SPI, which really is a board level comms thingy.

I presume you will have quite a few large boards with relatively long connections between them.

I would consider using one MCU per digit communicating to a master MCU with a RS485 bus.

And no multiplexing either, too many wires required. With RS485 you only need power, ground and A/B which you wire in as a daisychain with no wires dedicated to a single digit. You could even string 32+ of them together with just four wires :) (And a massive power supply)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Take a look at this:
http://www.etteam.com/product/14...
I have used them and they work great. The driver is a MAX7219 like BobG mentioned.

YOu can also get them from Futurlec if you can wait as they are slow delivering.

Here is an appnote with code:
http://lutheran.ro/download/hobb...

I would rather attempt something great and fail, than attempt nothing and succeed - Fortune Cookie

 

"The critical shortage here is not stuff, but time." - Johan Ekdahl

 

"Step N is required before you can do step N+1!" - ka7ehk

 

"If you want a career with a known path - become an undertaker. Dead people don't sue!" - Kartman

"Why is there a "Highway to Hell" and only a "Stairway to Heaven"? A prediction of the expected traffic load?"  - Lee "theusch"

 

Speak sweetly. It makes your words easier to digest when at a later date you have to eat them ;-)  - Source Unknown

Please Read: Code-of-Conduct

Atmel Studio6.2/AS7, DipTrace, Quartus, MPLAB, RSLogix user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

The max7219 can drive 8 seven segment displays, I've used it on a couple of projects for fun.

Good luck,

Alan

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I designed a large display (digits 12" high) made from 52mm led clusters with three clusters per segment. It pulled over 1kW at full brighness. No multiplexing was used, mosfets drove the led clusters and each digit had a dc/dc converter. I used 74hc595 shift registers to drive the mosfets. The design goal was readability at 200m.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Kartman wrote:
I designed a large display (digits 12" high) made from 52mm led clusters with three clusters per segment. It pulled over 1kW at full brighness. No multiplexing was used, mosfets drove the led clusters and each digit had a dc/dc converter. I used 74hc595 shift registers to drive the mosfets. The design goal was readability at 200m.

That's pretty insane! I don't think I need quite that level of visibility, but I like the method you're using to drive the display. Out of curiosity, why did each digit have it's own DC/DC converter? Any tips or gotchas for driving a large display? Seems like it'd be fairly straightforward, so long as I'm careful and do out some power numbers and make sure nothing is going to blow up when it's powered up.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm gonna guess that there are two reasons:
1)Thats a lot of Wattage to suck out of one DC-DC converter(big sucker too)

2)Surge's?? A 12" 7segment is gonna have quite the spikes on turn on so by having a separate DC/DC on each digit you minimise transients.

Probably wrong on both counts though :?

I would rather attempt something great and fail, than attempt nothing and succeed - Fortune Cookie

 

"The critical shortage here is not stuff, but time." - Johan Ekdahl

 

"Step N is required before you can do step N+1!" - ka7ehk

 

"If you want a career with a known path - become an undertaker. Dead people don't sue!" - Kartman

"Why is there a "Highway to Hell" and only a "Stairway to Heaven"? A prediction of the expected traffic load?"  - Lee "theusch"

 

Speak sweetly. It makes your words easier to digest when at a later date you have to eat them ;-)  - Source Unknown

Please Read: Code-of-Conduct

Atmel Studio6.2/AS7, DipTrace, Quartus, MPLAB, RSLogix user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

It's more difficult to design a reliable 1+ kW power supply then a small one and then use many of them. And you probably want a stabilized power supply at every node anyway to compensate for drops along the supply lines.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks guys, I was assuming something along those lines, I haven't dealt with anything more than a 2.5W (USB powered) in a while, so I forget that simple things like power supplies don't scale up as simply as I might hope :).

In either case, I don't need to worry about the high power display part just yet, and I think I've got enough info now to get started on making something and not doing tons of redesign.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

iwoloshin,

I'm a little confused about your total system.

A. There are multiple 6-digit displays, visible from 100 feet away. How many 6-digit displays are there and how far apart are they from one another?

B. Are they all getting their displayable time information from one central "controller"? If so, what is the nature of the network that connects all of the 6-digit displays to the central controller?

C. Are you considering using SPI to connect between all of these remotely located 6-digit displays. Or, are you considering SPI to connect your micro to individual digits of the 6-digit displays?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Chuck-Rowst wrote:
iwoloshin,

I'm a little confused about your total system.

A. There are multiple 6-digit displays, visible from 100 feet away. How many 6-digit displays are there and how far apart are they from one another?

At the moment, it's one 1/2" tall, six digit display (actually 8 digit, because I bought two 4-digit displays). Once I can prove my concept, I plan on upgrading to a larger display, which may or may not wind up being a custom part with a ton of LEDs.

Chuck-Rowst wrote:

B. Are they all getting their displayable time information from one central "controller"? If so, what is the nature of the network that connects all of the 6-digit displays to the central controller?

Right now yes, it's all being run off of a Teensy2.0++, since it's on a breadboard. The larger display will probably require some sort of SPI/I2C/RS485/etc type connection to each digit, though I haven't finalized this yet. I'm curious about different approaches here in particular, as I'd like to try and have the code portable, as in, I don't want to do multiplexing now, and have to rip that all out and do SPI later.

Chuck-Rowst wrote:

C. Are you considering using SPI to connect between all of these remotely located 6-digit displays. Or, are you considering SPI to connect your micro to individual digits of the 6-digit displays?

SPI would only be used locally, since it's only really designed for short distances. Anything going off board would probably be done over RS485, ethernet, or possibly wireless. At the moment, nothing is going off board.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Are you looking to build something like that? or do you need far more digits?


(102x29cm)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A small AVR + enough 74HC595 on SPI bus to drive digits.

Bigger AVR to handle everything else.

Connect with RS485 or something to get 100ft/30m distance.