Initial commit: plasma DMD driver project

- Design docs: 12 V DC power supply, safety and bring-up, ESP32 interface, BOM
- PSU schematic (schemdraw) and KiCad 10 carrier-board project with HV net classes
- ESP32 PlatformIO firmware skeleton with HV watchdog toggle
- Reference schematic of the Stern 520-5138-00 display PSU

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-24 02:31:50 +02:00
commit dbc1f0041f
21 files changed
+13853

No files matched your search

+55
View File
@@ -0,0 +1,55 @@
# Bill of materials
Designators match the KiCad project ([../hardware/kicad/](../hardware/kicad/README.md)).
Footprint choices are in [gen_kicad.py](../hardware/kicad/gen_kicad.py).
Prices are rough estimates.
## Modules (AliExpress unless noted)
| Qty | Part | Notes | About |
|---|---|---|---|
| 1 | 12 V 3 A power brick | **Certified brand, from a local retailer** (e.g. Mean Well GST36A12) | €15 |
| 1 | Mini560 5 V fixed buck module | Fixed output, no trim pot | €2 |
| 2 | NCH6100HV nixie HV boost module | Input 9–16 V, output 85–235 V adjustable | €16 |
| 1 | Isolated DC-DC 12 V → 12 V, 6–10 W | e.g. Mornsun URB1212YMD-6WR3 / -10WR3 | €6 |
| 1 | 5 V 1-channel relay module, with optocoupler | Switches the 12 V feed to the HV modules | €2 |
| 1 | Wemos D1 mini ESP32 | | €5 |
## Regulator section (from Mouser / Farnell / Reichelt)
| Qty | Part | Ref (KiCad) | Ref (original Stern board) |
|---|---|---|---|
| 2 | MJE15030 (NPN, TO-220) | Q3, Q6 | Q3, Q5 |
| 1 | MJE15031 (PNP, TO-220) | Q5 | Q4 |
| 1 | MPSA92 (PNP, TO-92) | Q2 | Q1 |
| 1 | MPSA42 (NPN, TO-92) | Q4 | Q2 |
| 2 | 1N5228 (3.9 V zener) | D4, D6 | D3, D4 |
| 1 | 1N4760A (68 V zener) | D5 | D5 |
| 1 | 1N4764A (100 V zener) | D8 | D6 |
| 1 | 1N4743 (13 V zener) | D7 | D7 |
| 2 | 47 kΩ 1 W | R5, R10 | R2, R3 |
| 3 | 1.5 kΩ ½ W | R4, R9, R12 | R4, R5, R10 |
| 2 | 330 kΩ ½ W | R6, R11 | R6, R7 |
| 1 | 2 kΩ 5 W | R13 | R8 |
| 3 | 0.1 µF 500 V film | C6, C8, C9 | C3, C4, C7 |
| 3 | TO-220 heatsink | for Q3, Q5, Q6 | |
## Additions
| Qty | Part | Purpose |
|---|---|---|
| 1 | P6KE15A TVS diode (DO-15) | 12 V input surge protection (D1) |
| 1 | 470 µF 25 V electrolytic | 12 V input bulk (C1) |
| 1 | 100 µF 10 V electrolytic | +5 V bulk (C2) |
| 2 | 22 µF 250 V electrolytic (12.5 mm) | Raw HV rail buffer (C5, C7) |
| 2 | 330 kΩ ½ W | Raw HV rail bleeders (R2, R7) |
| 2 | LED + 100 kΩ 1 W | HV-present indicators (LED1/R3, LED2/R8) |
| 1 | 74HCT245 + DIP socket | 3.3 V → 5 V level shifter |
| 1 | 2N7000, 2 × 1N4148, 100 nF, 10 µF, 100 kΩ | HV watchdog charge pump (Q1, D2, D3, C3, C4, R1) |
| 2 | 1 kΩ 1 W | Series resistors for first power-up |
| 5 | 5×20 mm PCB fuse holders + fuses: 3 A T (F1), 2 × 1 A T (F2, F3), 2 × 100 mA F (F4, F5) | |
| — | Phoenix MKDS 5.08 mm screw terminals: 3 × 2-pin (J1, J6, J7), 2 × 3-pin (J5, J8), 1 × 4-pin (J3), 1 × 5-pin (J4) | Module connections |
| 1 | Molex KK-396 8-pin header (J2) + mating housing | Panel power |
| 1 | 2-pin header + jumper (JP1) | +12 V to panel |
| — | M3 standoffs (H1–H4), 300 V-rated wire, plastic enclosure | |
+35
View File
@@ -0,0 +1,35 @@
# ESP32 interface
Board: **Wemos D1 mini ESP32**, powered from the 5 V rail.
## Level shifting
The panel inputs are 5 V TTL and the ESP32 is 3.3 V. Use a **74HCT245** (HCT only, because it accepts 3.3 V
inputs) powered from 5 V, with DIR tied high (A→B) and OE tied low.
## Pin plan
| Signal (to panel, through 74HCT245) | GPIO | Notes |
|---|---|---|
| Dot clock | 18 | VSPI SCK |
| Serial dot data | 23 | VSPI MOSI |
| Column latch | 17 | |
| Row data | 16 | |
| Row clock | 26 | |
| Display enable | 22 | Pull to *off* state at the 245 input |
| HV watchdog toggle | 21 | Charge pump → relay (see safety.md) |
| +65 V monitor (optional) | 34 | ADC, 2 × 1 MΩ + 33 kΩ divider |
The strapping pins (0, 2, 5, 12, 15) are avoided so nothing twitches during boot.
## Panel data connector
- [ ] Map the panel's 14-pin data connector (signal ↔ pin) for this specific panel before wiring.
## Scanning
- 128 columns × 32 rows, about 120 Hz frame rate (as on WPC).
- Per row: shift 128 bits of dot data (SPI), latch the columns, advance the row (row data is high
for the first row only, then clock the row once per row).
- The panel must never sit with one row lit. Scanning runs continuously, and the HV watchdog is
toggled once per scanned row (about 2 kHz, so the charge pump stays charged).
+82
View File
@@ -0,0 +1,82 @@
# Power supply design
## Goal
Generate every panel rail from one **12 V DC** input, using cheap modules. Panel voltages are set by
**zener references** (copied from the original Stern board), not by module trim pots. A
mis-set or failed module can't push the panel above its rated voltage.
## The original board (Stern/Sega 520-5138-00)
See [../reference/stern-520-5138-00-display-psu-schematic.jpg](../reference/stern-520-5138-00-display-psu-schematic.jpg).
| CN2 pin | Label | How it is produced | Real value |
|---|---|---|---|
| 8 | +60 V | 88 VAC → D1 → C1 (about +120 V raw) → Q3 (MJE15030) emitter follower, base on D5 68 V zener | about +62–67 V |
| 1 | −120 V | 110 VAC → D2 → C2 (about −150 V raw) → Q4 (MJE15031) follower, base on D6 100 V + D7 13 V zeners | about −112 V |
| 2 | −100 V | Q5 (MJE15030) follower from the D6/D7 junction. Collector to GND via R8 2 kΩ 5 W. | about −100 V |
| 7 | +12 V | Passed through from CN1 | |
| 6 | +5 V | Passed through from CN1 | |
| 4, 5 | GND | | |
- Q1/D3/R2/R4 and Q2/D4/R3/R5: constant-current feeds (about 2 mA) for the zener references.
- R6/R7 (330 kΩ): bleeder resistors. C3/C4/C7: 0.1 µF 500 V decoupling.
## New design
Full schematic: [../hardware/psu-schematic.svg](../hardware/psu-schematic.svg) (PNG alongside).
It is generated from [../hardware/psu_schematic.py](../hardware/psu_schematic.py):
```bash
python -m pip install schemdraw matplotlib
python hardware/psu_schematic.py
```
The schematic's reference designators are new; the notes on the sheet map them to the original board.
Replace the transformer and AC front end (D1, D2, C1, C2, F1, R1) with DC boost modules. Keep the
regulator section as it is.
```
Mains ─► [Certified 12V 3A brick] ─► F 3A ─┬──────────────► +12V (only if the panel uses it)
│
├─► [Mini560 5V buck] ─► +5V ─► panel logic, ESP32, 74HCT245
│
└─► [Relay, NO contact] ◄── HV watchdog (see safety.md)
│
┌──────────────┴──────────────┐
▼ F 1A slow ▼ F 1A slow
[NCH6100HV #1 set 90V] [Isolated 12→12V DC-DC, 6–10W]
│ │
│ [NCH6100HV #2 set 130V]
│ out+ ─► GND
▼ F 100mA, +90V raw ▼ F 100mA, −130V raw
┌───────────────────────────────────────────────────┐
│ Copy of original regulator section: │
│ Q1/Q3/D3/D5/R2/R4 → +62–67V │
│ Q2/Q4/D4/D6/D7/R3/R5 → −112V │
│ Q5/R8/R10 → −100V │
│ R6/R7 bleeders, C3/C4/C7 500V caps │
└───────────────────────────────────────────────────┘
```
### Why the isolated converter
A boost module's output negative is shared with its input ground. Powering module #2 through an
isolated DC-DC lets its output float, so its **+ output is tied to GND** and its − output becomes
−130 V. A second certified 12 V wall adapter would also work.
### Changes compared with the original
- **Removed:** D1, D2, C1, C2, F1, R1 (the boost modules replace the AC front end; the module current
limit plus a 100 mA fast fuse replaces R1).
- **Added:** 10–22 µF / 250 V cap and a 330 kΩ bleeder across each raw HV rail.
- **Added:** HV-present LED (LED + 100 kΩ 1 W) on each raw HV rail.
- **Headroom:** +90 V raw feeding the 68 V-referenced stage, and −130 V raw feeding the
113 V-referenced stage, give the followers enough headroom with modest dissipation. Q3/Q4/Q5 get small heatsinks.
## Open questions
- [ ] Real HV current draw of the panel, so you can size the isolated DC-DC (6 W vs 10 W)
- [ ] Panel power connector pinout and whether +12 V is used
- [ ] Check that NCH6100HV has a usable enable/shutdown pin (otherwise, switch with the relay only, as drawn)
+57
View File
@@ -0,0 +1,57 @@
# Safety
About 175 V sits between the +65 V and −112 V rails. Treat every HV node as live until you have
measured it.
## Design measures
1. **Only certified mains equipment.** The 12 V brick is the only mains-connected part. Buy a
certified brand (e.g. Mean Well GST36A12) from a normal retailer, not AliExpress.
2. **Hardware HV watchdog.** The relay on the HV modules' 12 V feed is driven through a charge pump:
```
GPIO21 ──┤├──── A ──►|── B ───┬───────┬──── 2N7000 gate 2N7000 drain ─► relay IN (active-low)
100nF │ 1N4148 │ │ 2N7000 source ─► GND
┴ 1N4148 ═ 10µF ▯ 100k
▲ (anode GND) │ │
GND GND GND
```
Node A gets a diode to GND (cathode at A), and a diode from A to B (anode at A). This rectifies
the toggling signal into a DC voltage on B. A constant high or low level gives no charge.
The firmware toggles GPIO21 once per scanned row (about 2 kHz). If it crashes, or the pin sticks high or low, or
the ESP32 resets, the cap discharges and the relay drops within about 1 s. A stuck row can't burn the panel.
(Check the polarity of your relay module's input. Some are active-low.)
3. **Fail-safe defaults.** The relay is normally open. Put a 10 kΩ pull-down on the watchdog
path. Pull the panel ENABLE line to its *off* state at the 74HCT245 input, so a booting ESP32
can't light anything.
4. **Sequencing.** 5 V comes up, then the ESP32 boots and starts scanning, and only then does the watchdog close the relay.
5. **Fusing.**
| Where | Fuse |
|---|---|
| 12 V input | 3 A |
| Each HV module input | 1 A slow-blow |
| Each raw HV rail | 100 mA fast |
6. **Discharge.** 330 kΩ bleeders on raw and regulated rails. HV-present LEDs are a hint only;
always measure before you touch anything.
7. **Layout.**
- Put all HV parts on one side, with ≥ 3 mm clearance between HV tracks.
- Use wire and caps rated for ≥ 300 V/500 V.
- Use a keyed connector to the panel.
- Close it in a plastic enclosure with no exposed HV.
- Tie all grounds at one point.
8. **Semiconductors from real distributors** (Mouser, Farnell, Reichelt). Fake HV transistors are
common on AliExpress.
## Bring-up procedure
1. Build the 5 V and 12 V side only. Check the voltages.
2. Connect one HV module at a time, with **no load**. Set NCH6100HV #1 to 90 V and #2 to 130 V. Lock the pots with nail varnish.
3. Connect the regulator section, still without the panel. Check for about +65 V, −112 V and −100 V and that the bleeders discharge them.
4. Test the watchdog: stop toggling GPIO21, and the HV must drop within about 1 s.
5. Map the panel's power connector against the measured rails. Get a second check (photo/label).
6. First power-up with the panel: 1 kΩ in series with each HV rail and a running test pattern.
Measure the current per rail, then remove the series resistors.