ScarlettScroller: Difference between revisions

From NURDspace
m (Bertrik moved page Lichtkrant to ScarlettScroller: omdat het moet)
(No difference)

Revision as of 21:19, 24 March 2022

This page is about a lichtkrant, brought by flok.

Hardware

It has 16 elements of 5x8 LEDs each, for a total of 80x8 LEDs. This particular board has monochrome LEDs only.

The electronics consist of two boards: a controller board and a LED board.

The LED board has the following ICs:

  • SN74HC138: 3-to-8 line decoder/multiplexer
  • SN74HC04: 6 inverters
  • 10x SN74HC164: 8-bit parallel-out serial shift registers
  • 4x APM4953: dual P-Channel Enhancement Mode Mosfet

The boards are connected through a 10 pin connector and a 5V power connector.

Control connector

Lichtkrant connector

Pinout:

  • pin 1: SCLK
  • pin 2: SCLK (shorted to pin 1)
  • pin 3: G = 'green' data bit shifted into row, goes through inverter 6
  • pin 4: R = 'red' data bit, goes through inverter 1
  • pin 5: A = row select
  • pin 6: B = row select
  • pin 7: C = row select
  • pin 8: D = not clear what this is, perhaps this is just another bit for the row selector, not actually used for this particular board
  • pin 9: GND
  • pin 10: GND
JP7
SCLK SCLK
R G
B A
D C
GND GND

Unfortunately the connector does not seem to carry 5V. If that were the case, a replacement microcontroller could be powered directly from the connector, with the main power entering through the 5V power plug.

I suspect the signal marked 'D' allows me to disable the row selector (i.e. all rows disabled). This way, the display can be blanked completely momentarily while the row shift register is being filled with new data.

Power

The control board is powered by a 12V supply and probably contains a step-down converter to turn it into 5V internally.

Theory of operation

There are 80 pixels horizontally and 10 serial-parallel chips with 8 outputs each, so one row of pixels can be kept in the shift registers.

The 3-to-8 decoder selects one particular row to light, through pins A/B/C. The MOSFETs are used as drivers.

The SCLK signal goes to the CLK input of all serial-parallel SNHC164 chips.

The LED board is prepared to be used with R+G LED modules, however this particular board does not have the shift register populated for the dual-color.

It appears there is no 'latch' signal, although the controller board has the text 'LAT'. A latch signal could activate the row data after it's been written to the shift registers, thereby avoiding the pixels showing up already as they're being written and reducing the contrast.

Software

Github archive: https://github.com/bertrik/scarlettscroller

What the software should do:

  • the display is updated in rows, only one row lights at a time, doing this fast makes it appear the entire display is active
  • for every row:
    • disable the row selector, e.g. with the D signal, this turns off all lighted pixels
    • update the row shift register with new data, i.e. 80 new pixels
    • configure and enable the row selector, this lights up one row
    • wait until the next line (through interrupt)

The above runs in 'interrupt time'. The main loop is free to do other stuff.

The plan is to run this on an ESP8266. It has 3.3V logic but with some luck voltage level will also work with 5V. It could make sense to connect D4 to the most significant bit of the row selector, in that case it flashes at the frame rate of the display.