LedTriks Controller Assembly Instructions: Difference between revisions

From doityourselfchristmas.com
Jump to navigation Jump to search
No edit summary
No edit summary
Line 16: Line 16:
The board can be what every size you like. The LEDTRIKS Board can control a single 16 x 48 LED board and up to 4 boards can be connected together – side by side.
The board can be what every size you like. The LEDTRIKS Board can control a single 16 x 48 LED board and up to 4 boards can be connected together – side by side.


(add Pic here)


Shown above (TBI) - LEDTRIKS Board Configuration Examples are the standard configuration – 1 panel wired in a 16 x 48 LED pattern and one of the optional configurations – 2 panels and two controllers wired ix a 16 x 96 LED pattern.  As the software is configured at the moment (pre-release), text and animation will be able to scroll across a 1x1, 1x2, 1x3, or 1x4 panel display.  
Shown above (TBI) - LEDTRIKS Board Configuration Examples are the standard configuration – 1 panel wired in a 16 x 48 LED pattern and one of the optional configurations – 2 panels and two controllers wired ix a 16 x 96 LED pattern.  As the software is configured at the moment (pre-release), text and animation will be able to scroll across a 1x1, 1x2, 1x3, or 1x4 panel display.  
Line 22: Line 24:


The PCB design (version 6 – public BETA) is the current version of the LEDTRIKs design and has been configured for Vixen control and up to four boards can be cascaded.
The PCB design (version 6 – public BETA) is the current version of the LEDTRIKs design and has been configured for Vixen control and up to four boards can be cascaded.
== Driving the LEDTRIKS LED Array ==
Hardware Elements
There are two main elements of the controller. One is a 48-bit shift register (three cascaded MBI5027 chips, which is similar to a 74HC595 chip followed by a ULN2803 chip) used to control the cathodes of the display (each output controls the cathodes for one column of the display). The other is a 4:16 latch/decoder (MM74HC4514 chip) used to enable the anodes for one row of the display.
The control signals (8 wires plus ground) are as follows:
1) An overall display inhibit signal. This signal unconditionally turns the LEDs off when it is high, allows normal operation when low.
2) Four dual-purpose data signals. These signals are bussed to all of the controllers that are connected to a parallel port. All four signals are connected to the data inputs of the latch/decoder mentioned above, to select 1 of 16 anodes. Each controller has a jumper array to allow one of these data signals to be used as the serial input to the shift register mentioned above (each controller should have a different bit selected for this function). A '1' in the shift register will enable the associated column in the display; a '0' will disable the associated column.
3) Clock for the shift register. Data is clocked into the shift register on the low-to-high transition of this clock, although it won't appear on the outputs until the shift register output latch is strobed.
4) Latch enable (strobe) for the shift register (normally low, pulsed high and then low again to cause shift register data to be copied into the output latch).
5) Latch enable (strobe) for the latch/decoder (normally low, pulsed high to capture new data in the input latch).
The following procedure should be invoked at 16 times the designated refresh interval. As an example, if the entire display is to be refreshed 60 times per second, this routine should be called 960 times per second (16 rows/display_refresh * 60 display_refresh/sec). Each consecutive call to this row_update routine should select a different row, so that all 16 rows of the display are refreshed at the same rate. It is best if the rows are refreshed in some sort of random order, so that it will be more difficult for the viewer to notice any flicker. One way to do this is to have a 4-bit bit counter, and reverse the order of the counter bits to select which row to refresh.
1) For the selected row of pixels, transmit 48 bits of data for each controller. The data for multiple controllers is sent in parallel, with data for controller 1 sent on bit 0 of the data port, data for the controller 2 is sent on bit 1, and so forth. The clock line has to be pulsed high (and then low) while data on the data port is stable (so there will be 48 pulses on the clock line). This is basically the same procedure used in controlling the Olsen 595 board.
2) Place the row address on data bits 0-3 of the parallel port data register.
3) Inhibit the Display (and leave it inhibited for the next step.
4) Take both strobes high and back low again (while the row address is still on the parallel port output lines).
5) Enable the Display.
6) Determine which row to display next. See the note above about reducing flicker.
The driver program should inhibit the display when it exits. Otherwise one row of LEDs will be left on continuously at full brightness, which looks bad and is not good for the longevity of the LEDs.

Revision as of 23:28, 23 June 2007

Background

While there are a myriad of computer based controller hardware available that will run under the Vixen software for controlling Christmas lighting, there were no LED display panels that could be controlled thru Vixen. Robert Jordan decided that the Vixen community needed a LED sign and took it upon himself to design and prototype an LED scrolling board. While Robert had seen LED boards everywhere, he wanted on that allowed you to do text and animation. He envisaged a LED display board that could be your show sign and a place for animations during the show.

Why LEDTRIKs? When Robert first announced the concept of the board he was working on to the Vixen Forum, some suggested to Robert that the board would allow users to perform tricks with LEDs aka ‘LEDTRIKs’.

Circuit Diagram

The circuit Diagram for LEDTRIKS is linked below. The current version is 6.0.

Schematic Diagram V6.0

The circuit is based on three MBI5027-GN-5027 16 Bit Constant current LED Sink Driver Integrated Circuits. The PC is connected to the LEDTRIKS via the RJ45 connector IN. You will need to assemble an interface cable to connect from the PC to the IN socket on the LEDTRIKS controller. The cable details are specified in the Building the Interface Cables section.

The board can be what every size you like. The LEDTRIKS Board can control a single 16 x 48 LED board and up to 4 boards can be connected together – side by side.


(add Pic here)

Shown above (TBI) - LEDTRIKS Board Configuration Examples are the standard configuration – 1 panel wired in a 16 x 48 LED pattern and one of the optional configurations – 2 panels and two controllers wired ix a 16 x 96 LED pattern. As the software is configured at the moment (pre-release), text and animation will be able to scroll across a 1x1, 1x2, 1x3, or 1x4 panel display.

1 Jun 2007. KC is looking into a change in the software to allow a 2 x 1, and up to 4 x 1 configurations.

The PCB design (version 6 – public BETA) is the current version of the LEDTRIKs design and has been configured for Vixen control and up to four boards can be cascaded.


Driving the LEDTRIKS LED Array

Hardware Elements

There are two main elements of the controller. One is a 48-bit shift register (three cascaded MBI5027 chips, which is similar to a 74HC595 chip followed by a ULN2803 chip) used to control the cathodes of the display (each output controls the cathodes for one column of the display). The other is a 4:16 latch/decoder (MM74HC4514 chip) used to enable the anodes for one row of the display.

The control signals (8 wires plus ground) are as follows:

1) An overall display inhibit signal. This signal unconditionally turns the LEDs off when it is high, allows normal operation when low.

2) Four dual-purpose data signals. These signals are bussed to all of the controllers that are connected to a parallel port. All four signals are connected to the data inputs of the latch/decoder mentioned above, to select 1 of 16 anodes. Each controller has a jumper array to allow one of these data signals to be used as the serial input to the shift register mentioned above (each controller should have a different bit selected for this function). A '1' in the shift register will enable the associated column in the display; a '0' will disable the associated column.

3) Clock for the shift register. Data is clocked into the shift register on the low-to-high transition of this clock, although it won't appear on the outputs until the shift register output latch is strobed.

4) Latch enable (strobe) for the shift register (normally low, pulsed high and then low again to cause shift register data to be copied into the output latch).

5) Latch enable (strobe) for the latch/decoder (normally low, pulsed high to capture new data in the input latch).

The following procedure should be invoked at 16 times the designated refresh interval. As an example, if the entire display is to be refreshed 60 times per second, this routine should be called 960 times per second (16 rows/display_refresh * 60 display_refresh/sec). Each consecutive call to this row_update routine should select a different row, so that all 16 rows of the display are refreshed at the same rate. It is best if the rows are refreshed in some sort of random order, so that it will be more difficult for the viewer to notice any flicker. One way to do this is to have a 4-bit bit counter, and reverse the order of the counter bits to select which row to refresh.

1) For the selected row of pixels, transmit 48 bits of data for each controller. The data for multiple controllers is sent in parallel, with data for controller 1 sent on bit 0 of the data port, data for the controller 2 is sent on bit 1, and so forth. The clock line has to be pulsed high (and then low) while data on the data port is stable (so there will be 48 pulses on the clock line). This is basically the same procedure used in controlling the Olsen 595 board.

2) Place the row address on data bits 0-3 of the parallel port data register.

3) Inhibit the Display (and leave it inhibited for the next step.

4) Take both strobes high and back low again (while the row address is still on the parallel port output lines).

5) Enable the Display.

6) Determine which row to display next. See the note above about reducing flicker.

The driver program should inhibit the display when it exits. Otherwise one row of LEDs will be left on continuously at full brightness, which looks bad and is not good for the longevity of the LEDs.