2013年11月28日星期四

The scrolling LED strip(1)



This post describes working out how a 72 x 7 pixel LED strip works, and then connecting it up to an Arduino to display custom text under program control.

The intention was to use the strip to display custom data (for example, the temperature) rather than having to manually (and somewhat laboriously) type the text in through the inbuilt keypad.


The strip





This was purchased a while ago for around $50 from memory. It has 72 pixels horizontally and 7 deep, giving a total of 504 pixels. Also there is a 55-key keypad visible in the photo which lets you enter text:




The internals



The device consists of 5 circuit boards. Two hold the LEDs themselves:

Part number 80-947C 2002-09-12:



Part number 80-947D 2002-09-12:



Visible also in the above photos is the board containing the keyboard.

Once opened you can fold out the other two boards with the control logic on them:

Part number 80-947A-2 2004-04-15:



Part number 80-947B 2002-09-12:




Various parts are labelled following the investigation described below.


Reverse engineering



Some work with a magnifying glass revealed that the chips were 74HC595 8-bit shift registers.



More details about them here:

http://alicebrain.blogspot.com/2013/11/using-74hc595-output-shift-register-as.html
These are standard output shift registers with a latch, which means you can shift out to multiple chips and then "latch" the data (copy from a temporary register to the output pins) in one operation, providing flicker-free updating.

With 72 columns of LEDs, and the 595 chips providing 8 bits each, it was reasonable to deduce that 9 of the chips were dedicated to driving the columns. Underneath each of those chips were 8 x 150 ohm resistors, which would be for current-limiting of the LEDs. Measurements indicate that there is around 4 mA per LED going through the resistors (a 600 mV voltage drop). This is a total drain of 32 mA for each 595 chip (if all LEDs are lit) which is within the spec for that chip.

The column drivers sink current (so to light an LED the corresponding output has to be zero).

The tenth 595 chip labelled "row driver" on the photo was clearly intended to source current for the rows, via the 7 x 8550 PNP transistors on the right, driven from that chip via 7 x 4.7k base resistors.

Since the row drivers are driven via a transistor which inverts the output, the row driver must also have an output as zero, in order for the transistor to source current.

In other words, if all 595 chips are outputting zero, then all LEDs are lit.

没有评论:

发表评论