This page was put together for people who were interested in the technical details of this sign, after its brief webcam adventure on the genmay.com forums. :) This should hopefully answer most people's questions...
Where it came from...
A few years ago, I came across a yard sale in Mt. Pearl, and spotted an old scrolling LED sign. A LaBelle "model 201", in an ugly veneered wood case. I have no idea why I was interested in it, but the guy running the sale approached me, and we talked about the sign.
It turns out, this sign was used in a store in downtown St. Johns, but it stopped working. A couple of the guys there tried to fix it, but couldn't get anywhere with it. If I wanted to have a go at the sign, I could take it for just $5! Not being one to turn down free stuff, I took the sign home, thinking "well, this can't be anything too complex..."
When I pulled the sign apart to determine what was wrong with it, I realized the following:
Great repair job there, guys!
The 6831 was toast. And with the character ROM missing, repairing this sign wouldn't be possible. But, I tested the sign's LED panels and they all worked, with no dead LED's! So I thought, "I'll build a new controller". I held onto this thought for years, while the sign rested in my closet.
In October 2001, work on a new controller for the sign commenced. The Term 6 project course gave me access to an electronics lab full of tools and test equipment, and a decent selection of parts. As well, I fell in love with PIC16F87x microcontrollers during the course, and in a Rotating Machines class I began drawing schematics for the sign's new controller.
About the sign...
The sign is a LaBelle Model 201, from the early 80's. It is a single-row sign, which uses a 120x7 array of red LED's. 24 5x7 panels (1.6" by 2" each) are used to form the LED array, these are mounted on eight PCB's. These were mounted onto two big PCB's, which held the LED drivers and a heap of shift registers. The main controller PCB piggybacked onto one of these boards, connected by an ugly mess of ribbon cable.
One of the 7x15, common-cathode sign panels
One of the LED driver boards (you can see where i sawed it in half, so it would fit in my bookbag...)
The sign is divided into four 30 column 'banks', which are individually scanned. 75492 darlington arrays were used for low side drivers, fed by 4000 series CMOS shift registers. "FD8550" PNP transistors, turned on by more 75492's fed by more shift registers, were the high side drivers. All the guts are labeled "ams ALPHA 2100", so it seems that this sign was originally designed by Adaptive Micro Systems. I sent off a couple e-mails to AMS, but they knew nothing about this sign. Oddly enough, they said that LaBelle used to be one of their competitors in the sign industry, but AMS later bought them out.
The New Controller
Repairing the main controller PCB was not an option. As well, the existing LED driver boards were hideously burnt up. I had no idea how these worked anyway; they contained an ugly mess of shift registers and priority encoders, and a lot of PCB to trace out. I decided that building a new LED driver arrangement myself would be a lot easier to do.
To replace the original controller, I decided on a PIC16F876. This chip simply rocks; it has gobs of features, including an onboard RS232 UART, onboard PWM, SPI support, and tons more. It also has a decent amount of RAM; 384 bytes, which can store a 120 byte frame buffer and plenty of other stuff - a second frame buffer for transition effects, custom character data, who knows?
Instead of using discrete shift registers, darlington drivers and transistors, I decided to use integrated drivers from Allego Micro - specifically the UCN5891 8-bit serial-input source driver for row drive and UCN5821 8-bit serial-input sink driver for column drive. Four of each chip are used, so the sign is refreshed as if it was a 30x28 array.
To refresh the sign, a "1" is loaded into the first UCN5821's shift register. Following this, zeroes are loaded and the single "1" is walked along the sign array with each clock pulse, enabling one column at a time.
Row data is serially loaded from the frame buffer into the 5891's shift registers. A strobe signal transfers the contents of the 5891's shift registers into their output latches whenever the active column is advanced. The above diagram isn't actually correct in the actual sign - four separate lines from the PIC connect to the data inputs of the four 5891's, so the sign can be loaded in 8 instead of 32 clocks.
The voltage supply for the 5891's comes from two separate LM317T regulators. Not shown in the above diagram are the resistors that should be between the 5891 IC's and the LED panels. In actual fact I forgot to include these when building the sign, which causes odd column dimming effects caused by the changing voltage drop of the 5821 ICs. The aforementioned resistors should be 33 or 47 ohms, with the LM317T voltage regulator set such that the LED current is approximately 50mA.
Allego Micro sells a UCN6277 constant current sink driver, which eliminates the need for resistors or voltage regulators - a single external resistor sets the LED current with this chip. However since I have common cathode LED arrays, I couldn't use this chip. Allegro unfortunately doesn't make a constant current source driver. D'oh!
The only other parts in my controller are the PIC chip itself, a MAX203 5V powered RS232 level converter, a 7805 regulator, and a bunch of passives. I'm using the sign's own power supply, a simple transformer/rectifier/capacitor unregulated supply which puts out about 12 volts DC at 1 amp.
|The controller in all its beauty. The extra 8-pin DIP socket was installed for a 32K SPI serial eeprom, originally meant for standalone operation but I haven't fooled around with that (yet..)|
|The innards of the sign. It's a wire-wrapped nightmare!|
Source code:Here: sign2.c
I actually lost the most recent version of the sign code. The program below was written for an earlier sign controller, which used 74LS374 latches and PNP darlington array driver chips instead of the ULN5891 chip for row drive. However, it's easily modified to work with the current sign.
The code on the sign right now is running on a 16F873 - a blown 7805 took out my only 16F876. The sign acts like a Crystalfontz serial LCD, except that custom characters don't work (there wasn't enough RAM on the '873 for this, so I left that out...)
The code is written in C. I used the CCS C compiler, which is a wonderful piece of software. I highly suggest you buy it - however, it's been rumored to have trouble supporting some keyboards... e-mail me if you ever have any sort of trouble because I've found a few solutions. :)
How to build your own sign:
Let me begin by saying that building one of these babies is NOT going to be a cheap OR easy project. For starters, this sign has 840 LED's in it! Two 500-boxes of T1-3/4 LED's from from Digi-Key will cost you about $150 CDN, and you'll spend about $200 CDN on PC boards to mount them on. Once you price a case, a red plexiglass front and everything else you need, then you've got yourself about a $500 CDN sign. Oh, and lets not forget the time you'll be spending soldering all those LED's...
If you really want a sign, order one from AMS (above), Alpha LED, or some other manufacturer.
But if you've got time and money to burn, or if you've got a spare sign kicking around, here's a few tips: