Skip to the content
4 layers256 × 32 mmLedmat8x16tiledriver blade, the printed circuit board in 3D

Ledmat8x16tiledriver blade

burbschat/ledmat8x161

LTP-12188M-08 Based Two Color 8x16 LEDs in 8x8 Slots LED Matrix Display Module

Size
256 × 32 mm
Copper layers
4
Thickness
1.6 mm
Parts
136
Nets
222
Pads
1,144
Tracks, vias
5,015, 752
Pours
56
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
23 Mar 2025
Updated
2 Nov 2025

Overview

Ledmat8x16tiledriver blade is an open-source printed circuit board by burbschat, from the burbschat/ledmat8x16 repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 4-layer board of 256 × 32 mm with 136 parts on 222 nets, routed with 5,015 tracks and 752 vias.

It is built around the TLC59283DBQ and DMP31D7LDW. Its parts include 48 capacitors, 40 ICs, 32 connectors and 8 resistors. It belongs with the lEDs and displays and interfaces and adapters boards of this library.

Main components

2

README

README.md

LTP-12188M-08 Based Two Color 8x16 LEDs in 8x8 Slots LED Matrix Display Module

Motivation

Found a place that sold their dead stock of LTP-12188M-08 modules for extremely cheap and bought a whole bunch. To drive those I would like to have a minimal and cheap solution which is also modular, meaning I can build an (for any practical purposes) arbitrarily sized display by just assembling identical modules (and perhaps a few cables etc.).

Pictures

Renders

Had some fun with this incredible tool. Shown renders are of the first version of the single tile driver board. There is a newer revision with extra features for mouting as well as a blade version where 8 modules are combined into one long board, as that is a much more reasonable solution for large displays.

FrontBackOblique
Front RenderFront RenderOblique Render

Prototype

Testing three prototype modules driven by a Raspberry Pi Pico (which is debugged from a second Pico via SWD). The colors do look much more vibrant in person. Also, the apparent differences in brightness are an artifact of the way this picture was captured.

3 Module Test Setup with Pico

A second test now using the controller and row connect boards for a double row display. Again, the colors look much better in person than on this picture. This can now display much larger frames as well as animations (cycling through a given number of frames in a buffer on the pico). For faster data transfer a serial interface over USB is used (previously UART through the debug probe was used, which is much slower). A debug probe is still attached for, well, debugging. But the device now can be used without it.

double row test

Parts

  • LTP-12188M-08 (8x8 two-color (red/green) LED dot matrix)
  • TLC59283 (16 channel constant current LED driver with pre-charge FET)
    • Seems to be cheapest LED driver available
    • No dimming supported but perhaps possible by updating the frames at a high enough rate
    • Can be daisy chained
    • Up to 32MHz operation advertised
      • One frame is 8 rows x 16 bits = 128 transfers. At 32MHz one transfer takes 3.125e-08s so 4e-6s per frame per tile. For 60 tiles thats 240e-6s for the whole panel. If we want 60 frames per second (16.666e-3s per frame), we can sub-divide each frame into 69 sections for which a pixel can be either on or off. Thus a 69 level brightness adjustment may be possible.
  • DMP31D7LDW-13 (dual p-channel enhancement mode MOSFET)
    • Seems to be the cheapest on DigiKey with ~500ma sustained current
    • Should switch fast enough
      • NTZD3152P may be a faster alternative, but tolerates less peak current (sustained currents is similar though)
  • Board connectors
    • DigiKey
      • Ph2ra-16-ua
        • cheapest on DigiKey
        • mating connector from same manufacturer seems to be rs2br-16-g? but this is not readily available and of odd shape...
      • pptc082ljbn-rc
        • Cheapest mating connector on DigiKey
      • Consider buying those from lcsc where they should be much cheaper
    • LCSC
      • 2541WR-2x08P
        • Extremely cheap
      • PM254-2-08-W-8.5
        • Mating part from same manufacturer: PZ254-2-08-W-8.5

Notes

  • There seems to be no cheap LED driver which supports row and column driving
    • IS31FL3731 seems to be pretty capable. Costs a little more but is still affordable. However, choosing the simpler part will surely teach one more things than just buying the solution.
LED Currents
  • Use 5V supply
    • The TLC59283 are constant current and support up to 10V
      • The constant-current value of all 16 channels is set by a single external resistor
    • 3.3V may also work, but may be insufficient for some chips, so use 5V
  • Peak forward current is 60mA/90mA (green/red)
    • 16 columns (8 red 8 green) on one row so peak current of 1200 mA per row
  • Average current is 25mA (same for both colors)
    • Total of 400mA average current per row (if all 16 channels are on)
    • A 500mA sustained/1.2A peak driver should be sufficient
    • In actual operation the rows are multiplexed so actually only about an eight of the average current is expected. So actually 400mA sustained current per tile if all LEDs are on.
    • Eventually set the current limit at the TLC59283 to around 25mA
      • 2k resistor should give 26.5mA, which is alright
  • Want row drivers separately for each tile to avoid driver current scaling with number of tiles
    • Make sure that connections between tiles support high enough currents
  • Consider MOSFET arrays as we need 8 of them per tile
    • Need P-channel to drive by setting gate voltage low (below source voltage)
    • Maybe not too long rise/fall times
    • DMP31D7LDW-13 seems fine (20JPY at 200 pieces, doesn't seem to get much cheaper on digikey)
      • There are many SOT-363 options so if this one does not work, one can probably find a pin compatible alterative
    • Search on digikey
Clock

The clock will have to arrive at each TLC59283 before the output of the previous one had a chance to change. According to the data sheet, the delay until SOUT changes is normally around 11ns. As we are only concerned about adjacent modules in close proximity, the clock propagation delay should be well below 10ns. A possible concern mentioned here is that the clock signal integrity may be degraded due to large capacitance if we fan it out too far. To solve this we may employ a buffer, this however would mean we need either a very fast buffer to not skew the clock relative to the data signal too much, or also have to buffer the data signal at the same time. Buffering two signals should be doable. This is probably not an issue, but technically if the buffers are to slow, this could limit the rate at which we can operate the panel (i.e. clock in data). As, if it works, no buffers should be the easier solution, for now I'll try without. If required, we may try to add clock line terminations to avoid ringing.

Mechanical Design

  • Board interconnects using horizontal pin headers on the back of the board (tile is on the front)
    • 8 pins seem to fit just right, so two rows with 8 pins each seems to be a good choice
    • These also will provide mechanical support within each row
  • Consider some sort of locating feature to use to locate modules in maybe a 3d-printed back plane or with small clips to be inserted between modules (TODO)
    • Could shave off the corners and have short square (45 deg. rotated) posts on the back plane
    • High symmetry is probably a good thing so locating features on maybe only top/bottom may not be as useful as the shaved off corners
    • To assemble multiple rows such a locating feature would be required
    • For a large display with many rows and columns a backplane is probably mandatory

Heat Dissipation

Found that when I run a fully lit frame (all 16 LEDs enabled while multiplexing the rows) the whole module gets quite hot. Not entirely sure what produces the heat. If it is the TLC59283, one could simply remove the solder mask on the back side of the board which is a ground plane to which the ground pad on the TLC59283 is connected to and place some sort of heat sink there. This is of course the reason why the TLC59283 is placed under the LED matrix module on the front and not at the back of the board and not simply attributed to be not checking the orientation of the modules footprint before doing the tedious routing which I do not want to do twice. Will have to further check what is the source of the heat. However, as long as the display is not constantly fully illuminated, it does not appear to get excessively hot.

Driving the Modules

I use an Raspberry Pi Pico (2 to be exact) to the modules. The serial interface for the TLC59283 is implemented using a PIO state machine (with DMA) which can clock out serial data independent of the processor cores and thus is a very performant solution. Switching between the rows is done by the processor which also feeds data from a global frame buffer to the DMA (which feeds it to the PIO state machine). Other microcontrollers will probably also work. Not sure how one would handle the serial communication though. AT a slower rate one can perhaps just bit bang using GPIO. Didn't try. The code I use on the Pico is available in a separate repository here.

Parts

136
QtyValueFootprintReferences
400.1uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2, C10, C11, C12, C14, C15, C16, C17, C18, C20, C21, C22, C23, C24, C26 +24
32DMP31D7LDWledmat8x16:SOT-363_SC-70-6U2, U11, U12, U13, U14, U16, U17, U18, U19, U21, U22, U23, U24, U26, U27, U28 +16
16Conn_01x10_PinConnector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ1, J2, J5, J7, J9, J11, J13, J15, J17, J19, J21, J23, J25, J27, J29, J31
810uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C7, C13, C19, C25, C31, C37, C43
82kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3, R4, R5, R6, R7, R9
8Conn_02x08_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_HorizontalJ3, J6, J10, J14, J18, J22, J26, J30
8Conn_02x08_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x08_P2.54mm_HorizontalJ4, J8, J12, J16, J20, J24, J28, J32
8LTP-12188M-08ledmat8x16:LTP-12188M-08DS1, DS2, DS3, DS4, DS5, DS6, DS7, DS8
8TLC59283Package_DFN_QFN:Texas_RGE0024C_VQFN-24-1EP_4x4mm_P0.5mm_EP2.1x2.1mmU1, U10, U15, U20, U25, U30, U35, U40

More from burbschat/ledmat8x16

3
  • 4 layers31.9 × 31.9 mmLedmat8x16tiledriver, the printed circuit board in 3D

    Ledmat8x16tiledriver

    burbschat/ledmat8x16

    LTP-12188M-08 Based Two Color 8x16 LEDs in 8x8 Slots LED Matrix Display Module

    17 parts1CERN-OHL-S-2.0
  • 2 layers64 × 32 mmLedmat8x16controller, the printed circuit board in 3D

    Ledmat8x16controller

    burbschat/ledmat8x16

    LTP-12188M-08 Based Two Color 8x16 LEDs in 8x8 Slots LED Matrix Display Module

    15 parts1CERN-OHL-S-2.0
  • 2 layers16 × 64 mmLedmat8x16rowconnect, the printed circuit board in 3D

    Ledmat8x16rowconnect

    burbschat/ledmat8x16

    LTP-12188M-08 Based Two Color 8x16 LEDs in 8x8 Slots LED Matrix Display Module

    2 parts1CERN-OHL-S-2.0

Similar boards

  • 2 layers250 × 250 mmRocSync testing, the printed circuit board in 3D

    RocSync testing

    BAL-ORX/RocSync

    Millisecond-Accurate Temporal Synchronization for Heterogeneous Camera Systems

    336 parts3MPL-2.0
  • 2 layers14 × 1 mmVectorscope, the printed circuit board in 3D

    Vectorscope

    shabaz123/Vectorscope_GuyFawkes

    A reimplementation of the Vectorscope from https://github.com/Hack-a-Day/Vectorscope

    81 parts3GPL-3.0
  • 2 layers105 × 85 mmSoundboard, the printed circuit board in 3D

    Soundboard

    chill389cc/Soundboard

    Code and schematics for a macropad soundboard system for the office bullpen

    53 parts
  • 4 layers256.9 × 96.2 mmControl board, the printed circuit board in 3D

    Control board

    Alex-Wolfe/Home-Audio-System

    Audio Receiver and Amplifier

    184 parts1
  • 4 layers40.3 × 22.9 mmFmcw2, the printed circuit board in 3D

    Fmcw2

    Ttl/fmcw2

    FMCW radar design files

    136 parts199
  • 4 layers102.6 × 107.3 mmPro rev1, the printed circuit board in 3D

    Pro rev1

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    136 parts58
  • 4 layers34 × 47.5 mmChar panel, the printed circuit board in 3D

    Char panel

    jamesmunns/brick-mount

    Put your circuits on your plastic bricks of choice

    136 parts40

Questions

How big is the Ledmat8x16tiledriver blade PCB?

It measures 256 × 32 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Ledmat8x16tiledriver blade use?

136 parts, built around the TLC59283DBQ and DMP31D7LDW. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ledmat8x16tiledriver blade KiCad files?

From the burbschat/ledmat8x16 repository on GitHub, at the commit this page was made from: the board is kicad/prj/ledmat8x16tiledriver_blade/ledmat8x16tiledriver_blade.kicad_pcb and its schematic kicad/prj/ledmat8x16controller/ledmat8x16controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ledmat8x16tiledriver blade design in my own project?

Its repository publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).