PointLess LED Array

From OpenCircuits
Revision as of 16:12, 3 March 2008 by Russ hensel (Talk | contribs)

Jump to: navigation, search

PointLess LED Array Project



Note under construction, files not yet posted

  • Name: PointLess LED Array
  • Status: still developing, working
  • Technology: PIC, C language: BoostC
  • Author: russ_hensel

Futulec http://www.futurlec.com/ sells an 8 by 8 array of 64 LED's in a package about 2 inches square. But what to do with it. Well obviously light it up. That is the basis of this project. What is is good for? still looking for a good reason, but it was fun.

What it Does

Displays designs on the array, you can spell out messages one character at a time or present little animated designs.

Parts List

  • LED array I got the array from http://www.futurlec.com/ LEDM88OG. This is a two color array ( 64 leds, I used only half of them, may use the rest later.
  • 16 small signal transistors – may not be necessary, but allow for larger drive currents
  • 3 x 8 current limiting resistors

For more details see the schematics.

Circuit/Program Design

We have 64 LEDs and a lot fewer output pins, but wait, the LEDs are already wired in a row and column setup ( all LEDs in one row wired to a common pin, all LEDs in one column wired to a common pin ) We can turn on one row, the set a byte to the column and turn on 0 to 8 LEDs in that column. Time multiplex through the rows and we can display any of 0 to 64 of the 64 LEDs. Do it fast and no one notices the blinking.

The column pins are set to high to turn on the column, the row pins are set to low to turn on the pins. We used high side switches on one side, low side switches on the other side.

This circuit uses an 877A which is overkill, switch to another chip if you wish ( and save board space ).

I built the circuit with discrete transistors using point to point wiring on a perf board, but I have done some work on a printed circuit version using discrete transistor or using the IC's

I use several arrays to store the bits for any given display. The basic idea is to put the data for one column in a char then use 8 char's to display the whole array. We are basically scanning much like a television, or multiplexing a set of 7 segment displays. The difference from a TV is that we put out the equivalent of a whole line at once.

I used a spreadsheet to help me visualize the display and construct the data for the array, see the file download.

The code should be reasonably self explanatory. Send Questions to struve13@verizon.net. To make the circuit board easy to layout I have moved some bit and port positions around, you may have to adjust the software to make it work with these changes Files: All in one zip file, click here later.

  • Planning guide, shows resource/ pin assignment for PIC. Format: open office
  • Character bit pattern planning spreadsheet. Format: open office
  • Schematic and Board Layout Format: Eagle
  • Boostc source and other files, including HEX file. Format: whatever

Building your own

My project was hand wired and I made many mistakes. Despite this the code works and I have had a lot of fun with it. Because I changed my mind on the right components and other details all the pieces might not go together for you without a little bit of jiggling. Some particular warnings:

The circuit board does not show the array, just a ribbon connector. This goes to the array. One side to the columns, in order 1...8 the other to the rows. The ribbon connector is much bigger than needed, change it to a smaller one.

The 877 is over kill a smaller PIC should work as well, since the firmware is in C it should be an easy move. Since timing is not critical you could dump the crystal if the PIC has a reasonable internal oscillator.

I used discrete transistors not the IC's shown, the IC's should work better, I think. ( and take up less space )

To make the layout work without crossing traces I reversed the connection order on the printed circuit low to high bit, you will have to reverse the bit order somewhere in the code as well.

The code is near ( or above ) the limit for the free BoostC compiler. Much of the stuff is in the effects data, you can delete some. There may also be a fair amount of dead code ( depends on where I am in development cycle ) delete this to reduce code size.

A higher clock frequency would give you more flexibility, lower may force in a flicker.

The value of the current limiting resistors is something you may want to mess with, make brighter, and/or burn out the LED's.

A 5 by 7 array could still do the full character set – with some redesign of the fonts.

Use the spreadsheet for planning your own fonts and effects.

You may have a power supply that makes the on-board regulator unnecessary, but I would leave it in if you are running on batteries ( 9 volt transistor bat for example ).

Things I am still working on:

  • Add some runtime selection of messages/display
  • Add lower case font.
  • Improve fonts.
  • Add PWM control of brightness.
  • Add more display tricks to the software, perhaps some font variations.
  • There is most of the code in place for a real time clock, displaying time should be pretty easy
  • Other as time and ideas come to me.
  • Mistakes here? Please let me russ_hensel know.
Personal tools