2013年12月2日星期一

The scrolling LED strip(2)



As you can see from that video, column are lit in a batch, but one row at a time. When done really slowly you can't make out the whole letter. When sped up, persistence of vision makes it appear that they are all on at once.

Detail from the reverse side:




Keypad driver



One slightly puzzling aspect was the absence of any extra chips for the 55-key keypad, as all 10 chips had now been accounted for. There were 8 wires leading to it (on a ribbon cable) on the left, in the photo, and 7 wires on the right. This led to a deduction that this was a 7 x 8 key keypad matrix. Since that would give 56 possible keys, it seemed very likely.

A close inspection of the cable on the left showed 8 x 10k pull-up resistors for that cable, plus each of the 8 wires were connected directly to the CPU. On the other side, the "row driver" chip was also connected to the 7-wire cable going to the keypad.

Thus it seems that the design was that the row driver would be repeatedly activated for one row at a time (driving it low) which would source current for the LEDs via the transistors which invert the signal, plus at the same time sink current for the keypad (the keypad does not go via the transistors). The pull-up resistors would raise the input to the CPU high, except if a key was pressed. Thus the CPU could deduce which key was being pressed, while it was also outputting to the LEDs.





Taking control!



Knowing how the 595 works, it seemed reasonable to assume that if I could disconnect the clock, data, and latch signals from the processor, and supply my own, then I could make the LEDs show whatever I wanted.

After a considerable amount of time tracing PCB traces, I worked out that it was very easy to do, because each of those reached the processor chip via a jumper on the front.

To do this cut the three jumpers indicated and then solder wires onto the circled ends of the now-cut link (that is the part furthest from the processor).



Now the processor thinks it is sending data to the 595 chips, but it isn't.

Those three wires (clock, data, latch) are then connected to the Arduino as shown (pin numbers for a Uno or similar). You also need to connect the ground wire as well, I took it from the electrolytic capacitor nearby as shown.

This photo shows it displaying the main sketch. The letters are blurred because of the time taken to take the photo:



This shows the connection between the Uno and the LED device. (It is actually a Ruggeduino because I was worried I might blow something up during testing).



As you can see, only four wires are needed between the Arduino and the display. The display was independently powered because of the power required to drive all the LEDs.


Schematic



A partial schematic is below. It doesn't show all the 595 chips, nor all of the LEDs, transistors, keyboard interface etc. However the main points which show the LED multiplexing are there:





Demonstration video







Completed project



After researching all the above I turned my sign (for the time being) into a temperature and humidity display.

Example display:







I made up an freestanding "Arduino-like" board using the Evil Mad Scientist Atmega target board. This was bolted to the inside of the battery compartment. The battery holder had been discarded because the batteries had leaked and corroded it.




Opening the door to the compartment you can see the board in place with five wires running into the connection points on the LED strip (the four wires described earlier, plus a connection to the +3.3v Vcc line to power the processor).




The board with the various parts shown in detail:



The wiring and relevant code were taken from the temperature and humidity sensor project described here:
http://alicebrain.blogspot.com/2013/12/temperature-and-humidity-sensor-battery.html
My skype :hqew-four

没有评论:

发表评论