LED Matrix Failure

From eLinux.org
Revision as of 14:50, 2 September 2015 by Prpplague (talk | contribs) (Goal)
Jump to: navigation, search

Goal

Document the failure and redesign of a LED Matrix display with an initial size of 70 x 30 RGB APA102 LEDS. intended to create a "roll up display banner" to be driven from the MinnowBoard Turbot. along the way, a number of key design decisions impacted the results as well as some unanticipated complications.
LED-matric.jpg Rgb-test.jpg


Components

4pin-male-dotstar.jpg 4pin-female-dotstar.jpg

Layout

Base

the base was made with some black upholstery fabric. a piece size of 57" x 30" was cut and taken to a seamstress to have the edges sewn. after sewing, a manual metal grommet press was used to add grommets to each of the four corners.
Grommet-1.jpg Grommet-2.jpg

Left->Right Left->Right

The Dotstar LEDs for the failed version were arranged in a chained sequence. the intention was to cut the strips and align them on the fabric in a "left to right - left to right" sequence similar to tradition LCD panels. this is also sometimes referred to as "Row Major" sequence. this sequence is typically something like this for an 5x5 pixel example:

01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

the issue is that to implement this with the LED strips, two wires need to connect the end of one LED strip to the beginning of the next, in the 5x5 pixel example above, the SPI clock and data need to connect from the end at 05 to the beginning of the next line at 06. this creates a wiring nightmare on the back side of the design:
Backside-wiring-led.jpg Backside-closeup-led.jpg

the thought was by design it this way, and working similar to existing display devices, software support would be easy and require little or no effort to implement. while this was true the long wires created both signaling and logistical problems during implementation.

Sewing to Upholstery

using a fine needle and thread the led strips were sewn to the upholstery. immediately it was discovered that without proper attention, the tension on the thread could easily damage the flex pads. in addition to damaging the pads, it was very difficult to keep consistent spacing between rows while sewing the strips directly to the upholstery.
Dotstar-spacing.jpg

Connections

Power Connections

one of the major time consuming items on the project was the power connections. as each LED strip needed both power and ground, making sure that these connections were evenly distributed across the LED strips was challenging. in addition, due the number of LED two power supplies were needed, so careful consideration had to made to make sure that the two supplies were not connected to each other. in the image below the black wires are ground and the white wires are the +5V. two red wires are visible which are separate +5V connections to the power supplies.
Power-ledmatrix.jpg

Long Signal Wires

during initial testing with the MinnowBoard Turbot, it was discovered that if the length of the SPI clock and data signals were over 24 inches long between the MinnowBoard Turbot and the first LED on the dotstar string, the signal strength was such that it would not work. however, the signals between one LED string and the next were about 55 inches long and they did work. after closer inspection with an oscilloscope it was clear that the APA102 RGB LEDs were providing a much higher drive strength for the SPI signals. as a quick fix, two of the dotstar LEDs were used close to the main connection to the MinnowBoard Turbot with a longer connection to the first set of LEDs on the matrix. these initial two leds can either be programmed as off (black) or used as status indicators. for this project i added some code to indicate the status and timing of some of the signals.

Short-dotstar-connection.jpg Short-dotstar-connection-part.jpg


Broken Flex Pads

as noted earlier the long wires on the back side of the design were proving very difficult both in length and logistics. another major issue is the long wires created tension on the flex pads at the end of each LED strip. as a result many of the pads were ripped off resulting in the wires having to be soldered directly to the LED.

Led-broken-flex.jpg



Redesign

Left->Right Right->Left

To remove the need for the long wires it makes more sense hardware wise to implement the strips using the "left to right - right to left" sequence. this is sometimes referred to as "ZigZag" sequence. this is represented again in a 5x5 pixel example:

01 02 03 04 05
10 09 08 07 06
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25

this encoding is a little more difficult, but it can be easily handled in software to sequence this. the trade off here between a little more difficult in software, and a LOT easier in hardware, really is the only choice.

Layout and Features

the layout includes two sets of pads for each row. this allows for a solid connection and prevent stress at the flex pads from breaking away. the is based on two rows of led strips. this addresses the earlier problem of getting inconsistent spacing between rows. using the pcb on alternating rows, allows for even spacing on each side. in addition a series of holes are added to the pcb to allow the PCB to be easily sewn to the base upholstery fabric without damaging the LED strips. to solve the issue of having to connect ground and power to each row of strips evenly, two solder points are available at the top and bottom edges of the board to for power and ground. this allows the pcb on top to directly connect to the next pcb below it passing ground and power. this ensures that each strip gets power evenly.
Dotstar-adapter.png Dotstar-adapter.jpg


Design Files

Soldering


Dotstar-adapter-solder1.jpg

Dotstar-adapter-solder2.jpg

Dotstar-adapter-solder3.jpg