Add panel-to-PCB mounting system with M3 standoffs

Panel alignment:
- PCB offset 10mm from panel top
- Component holes aligned: OLED@25mm, jacks@45mm, button@58mm
- 4x M3 standoff holes at corners (5,5), (35,5), (5,75), (35,75)

Updates:
- Panel SVG and spec aligned with PCB layout
- Mounting holes added to PCB (Edge.Cuts layer)
- Regenerated Gerbers with mounting holes
- Updated autoroute.py to add mounting holes automatically

DRC: 0 unconnected, 7 cosmetic errors (courtyard overlaps)
This commit is contained in:
2026-01-23 08:15:25 +01:00
parent ccb833fdc3
commit d43c7976ad
21 changed files with 1654 additions and 942 deletions
+66 -70
View File
@@ -9,9 +9,7 @@
| Thickness | 1.5-2.0mm | Aluminum or PCB |
| Corner radius | 0mm | Square corners |
## Mounting Holes
Eurorack standard mounting rail positions:
## Mounting Holes (Eurorack Rails)
| Hole | X | Y | Diameter | Notes |
|------|---|---|----------|-------|
@@ -22,51 +20,78 @@ Eurorack standard mounting rail positions:
**Note**: Slots (elongated holes) of 3.2mm × 4mm allow for rail tolerance.
## PCB Mounting
The PCB (40×100mm) mounts horizontally behind the panel.
| Parameter | Value | Notes |
|-----------|-------|-------|
| PCB offset from panel top | 10mm | PCB top edge at panel Y=10mm |
| PCB offset from panel bottom | 18.5mm | Clearance for power header |
| Standoff length | 10mm | M3 hex standoffs |
| Standoff holes | 3.2mm | M3 clearance |
### Standoff Mounting Holes
| Hole | Panel X | Panel Y | PCB X | PCB Y |
|------|---------|---------|-------|-------|
| Top Left | 5mm | 15mm | 5mm | 5mm |
| Top Right | 35mm | 15mm | 35mm | 5mm |
| Bottom Left | 5mm | 85mm | 5mm | 75mm |
| Bottom Right | 35mm | 85mm | 35mm | 75mm |
Note: Bottom holes positioned above power section for routing clearance.
## Component Holes
| Component | X | Y | Diameter | Notes |
|-----------|---|---|----------|-------|
| OLED cutout | 20.15mm | 25.0mm | 28×12mm rect | Rectangular window |
| Button | 20.15mm | 50.0mm | 7.0mm | For 6mm tactile + cap |
| LED (status) | 32.0mm | 50.0mm | 3.0mm | For 3mm LED or light pipe |
| Jack RETURN | 10.0mm | 95.0mm | 6.0mm | Thonkiconn PJ398SM |
| Jack TRIG | 30.0mm | 95.0mm | 6.0mm | Thonkiconn PJ398SM |
All positions aligned with PCB layout (PCB offset = 10mm).
| Component | Panel X | Panel Y | Diameter | Notes |
|-----------|---------|---------|----------|-------|
| OLED cutout | 20mm | 25mm | 28×12mm rect | Rectangular window |
| Jack RETURN | 10mm | 45mm | 6.0mm | Thonkiconn PJ398SM |
| Jack TRIG | 30mm | 45mm | 6.0mm | Thonkiconn PJ398SM |
| Button | 20mm | 58mm | 7.0mm | For 6mm tactile + cap |
| LED (status) | 32mm | 58mm | 3.0mm | For 3mm LED or light pipe |
## Panel Layout Drawing
```
←─────── 40.30mm ───────→
┌───────────────────────────┐ ─┬─ 0.00mm
│ ○ ○ │ │ 3.00mm (mounting holes)
│ │ │
│ SubModular │ │ 12.00mm
┌───────────────────────────┐ ─┬─ 0mm
│ ○ ○ │ │ 3mm (rail mounting holes)
│ │ │
│ SubModular │ │ 12mm
│ · · │ │ 15mm (standoff holes)
│ ┌─────────────────┐ │ │
│ │ │ │ │
│ │ OLED │ │ │ 19-31mm (display window)
│ │ OLED │ │ │ 19-31mm (display window @ 25mm)
│ │ DISPLAY │ │ │
│ │ │ │ │
│ └─────────────────┘ │ │
│ │ │
│ SN-L00 │ │ 42.00mm
│ │ │
│ ◯ • │ │ 50.00mm (button + LED)
│ BTN PWR │ │
│ │ │
│ │ │
│ │ │
│ ┌───┐ ┌───┐ │ │
│ │ │ │ │ │ │
│ │ ○ │ │ ○ │ │ │ 95.00mm (jacks)
│ │ ○ │ │ ○ │ │ │ 45mm (jacks)
│ │ │ │ │ │ │
│ └───┘ └───┘ │ │
│ RETURN TRIG │ │ 105.00mm (labels)
│ RETURN TRIG │ │ 52mm (labels)
│ │ │
LATENCY TESTER │ │ 115.00mm
│ │ 58mm (button + LED)
│ BTN PWR │ │
│ │ │
│ │ 125.50mm (mounting holes)
└───────────────────────────┘ ─┴─ 128.50mm
SN-L00 │ │ 72mm
│ │ │
│ │ │
│ │ │
│ LATENCY TESTER │ │ 95mm
│ │ │
│ · · │ │ 85mm (standoff holes)
│ │ │
│ │ │
│ ○ ○ │ │ 125.5mm (rail mounting holes)
└───────────────────────────┘ ─┴─ 128.5mm
```
## OLED Display Window
@@ -79,9 +104,7 @@ The 0.91" 128×32 OLED module dimensions:
| Active area | ~22 × 6mm |
| Mounting | Pin header on edge |
**Panel cutout**: 28mm × 10mm rectangle, centered at (20.15, 25.0)
Alternatively, a slightly larger window (30 × 12mm) gives tolerance for module alignment.
**Panel cutout**: 28mm × 12mm rectangle, centered at (20mm, 25mm)
## Material Options
@@ -106,47 +129,20 @@ Alternatively, a slightly larger window (30 × 12mm) gives tolerance for module
- Printing: Engraved or adhesive labels
- Cost: ~€3-5/panel
## PCB Panel Design
## Hardware Required
If using a PCB as the panel:
```
Front copper: None (for clean look) or decorative pattern
Back copper: Optional ground plane
Silkscreen: All text and graphics
Soldermask: Black (or custom color)
```
## Graphics & Text
### Suggested Layout
| Element | Position | Size | Font |
|---------|----------|------|------|
| "SubModular" | Top center, Y=12mm | 2.5mm | Bold sans-serif |
| "SN-L00" | Above button, Y=42mm | 3.0mm | Bold |
| "RETURN" | Below left jack, Y=105mm | 2.0mm | Regular |
| "TRIG" | Below right jack, Y=105mm | 2.0mm | Regular |
| "LATENCY TESTER" | Bottom, Y=115mm | 1.5mm | Light |
## Hole Tolerances
| Hole Type | Nominal | Tolerance |
|-----------|---------|-----------|
| Mounting | 3.2mm | +0.1/-0.0 |
| Jack | 6.0mm | +0.1/-0.0 |
| Button | 7.0mm | +0.2/-0.0 |
| LED | 3.0mm | +0.1/-0.0 |
## Files
- **PANEL_SPEC.md** - This file
- **SN-L00_panel.svg** - Vector graphic for manufacturing
- **SN-L00_panel.kicad_pcb** - PCB panel (if using FR4)
| Item | Qty | Notes |
|------|-----|-------|
| M3×10mm standoff | 4 | Hex, male-female |
| M3×6mm screw | 4 | Pan head, for PCB side |
| M3 nut | 4 | Or use female-female standoffs |
| Thonkiconn nut | 2 | Included with jacks |
## Assembly
1. Mount OLED module with M2 standoffs or double-sided tape
2. Jacks mount through panel, secured with nut
3. Button may need extension shaft or cap
4. LED can use light pipe for front visibility
1. Insert standoffs through panel holes, secure with nuts on front
2. Mount jacks through panel, finger-tighten nuts
3. Align PCB with standoffs and jack pins
4. Secure PCB to standoffs with M3 screws
5. Fully tighten jack nuts
6. Attach OLED module to PCB header
+32 -27
View File
@@ -4,13 +4,14 @@
viewBox="0 0 40.30 128.5">
<title>SN-L00 Eurorack Panel</title>
<desc>8HP Eurorack panel for SN-L00 Latency Tester</desc>
<desc>8HP Eurorack panel for SN-L00 Latency Tester - aligned with PCB</desc>
<defs>
<style>
.panel { fill: #1a1a1a; }
.hole { fill: none; stroke: #ff0000; stroke-width: 0.1; }
.cutout { fill: none; stroke: #00ff00; stroke-width: 0.1; }
.standoff { fill: none; stroke: #0000ff; stroke-width: 0.1; }
.text { fill: #ffffff; font-family: Arial, sans-serif; }
.text-small { font-size: 2px; }
.text-medium { font-size: 2.5px; }
@@ -22,51 +23,55 @@
<!-- Panel background -->
<rect class="panel" x="0" y="0" width="40.30" height="128.5"/>
<!-- Mounting holes (3.2mm) - RED for drill -->
<!-- Top mounting holes -->
<!-- Eurorack rail mounting holes (3.2mm) - RED -->
<circle class="hole" cx="7.5" cy="3" r="1.6"/>
<circle class="hole" cx="32.8" cy="3" r="1.6"/>
<!-- Bottom mounting holes -->
<circle class="hole" cx="7.5" cy="125.5" r="1.6"/>
<circle class="hole" cx="32.8" cy="125.5" r="1.6"/>
<!-- OLED display window (28x10mm rectangle) - GREEN for cutout -->
<rect class="cutout" x="6.15" y="20" width="28" height="10" rx="0.5"/>
<!-- PCB standoff mounting holes (3.2mm) - BLUE -->
<circle class="standoff" cx="5" cy="15" r="1.6"/>
<circle class="standoff" cx="35" cy="15" r="1.6"/>
<circle class="standoff" cx="5" cy="85" r="1.6"/>
<circle class="standoff" cx="35" cy="85" r="1.6"/>
<!-- Button hole (7mm) -->
<circle class="hole" cx="20.15" cy="50" r="3.5"/>
<!-- OLED display window (28x12mm rectangle) - GREEN -->
<rect class="cutout" x="6" y="19" width="28" height="12" rx="0.5"/>
<!-- LED hole (3mm) -->
<circle class="hole" cx="32" cy="50" r="1.5"/>
<!-- Jack holes (6mm) - RED -->
<circle class="hole" cx="10" cy="45" r="3"/>
<circle class="hole" cx="30" cy="45" r="3"/>
<!-- Jack holes (6mm) -->
<circle class="hole" cx="10" cy="95" r="3"/>
<circle class="hole" cx="30" cy="95" r="3"/>
<!-- Button hole (7mm) - RED -->
<circle class="hole" cx="20" cy="58" r="3.5"/>
<!-- LED hole (3mm) - RED -->
<circle class="hole" cx="32" cy="58" r="1.5"/>
<!-- Text labels - WHITE silkscreen -->
<text class="text text-medium" x="20.15" y="12" text-anchor="middle">SubModular</text>
<text class="text text-large" x="20.15" y="42" text-anchor="middle" font-weight="bold">SN-L00</text>
<text class="text text-small" x="10" y="52" text-anchor="middle">RETURN</text>
<text class="text text-small" x="30" y="52" text-anchor="middle">TRIG</text>
<text class="text text-small" x="20.15" y="57" text-anchor="middle">BTN</text>
<text class="text text-small" x="32" y="57" text-anchor="middle">PWR</text>
<text class="text text-small" x="20" y="65" text-anchor="middle">BTN</text>
<text class="text text-small" x="32" y="65" text-anchor="middle">PWR</text>
<text class="text text-small" x="10" y="105" text-anchor="middle">RETURN</text>
<text class="text text-small" x="30" y="105" text-anchor="middle">TRIG</text>
<text class="text text-large" x="20.15" y="75" text-anchor="middle" font-weight="bold">SN-L00</text>
<text class="text text-small" x="20.15" y="115" text-anchor="middle">LATENCY TESTER</text>
<text class="text text-small" x="20.15" y="98" text-anchor="middle">LATENCY TESTER</text>
<!-- Decorative elements -->
<!-- Jack nut indicators (circles around jacks) -->
<circle class="silkscreen" cx="10" cy="95" r="5"/>
<circle class="silkscreen" cx="30" cy="95" r="5"/>
<!-- Jack nut indicators -->
<circle class="silkscreen" cx="10" cy="45" r="5"/>
<circle class="silkscreen" cx="30" cy="45" r="5"/>
<!-- Display frame -->
<rect class="silkscreen" x="5.65" y="19.5" width="29" height="11" rx="0.5"/>
<rect class="silkscreen" x="5.5" y="18.5" width="29" height="13" rx="0.5"/>
<!-- Horizontal lines for visual separation -->
<line class="silkscreen" x1="4" y1="60" x2="36.30" y2="60"/>
<line class="silkscreen" x1="4" y1="85" x2="36.30" y2="85"/>
<line class="silkscreen" x1="4" y1="110" x2="36.30" y2="110"/>
<!-- Horizontal separator lines -->
<line class="silkscreen" x1="4" y1="38" x2="36" y2="38"/>
<line class="silkscreen" x1="4" y1="68" x2="36" y2="68"/>
<line class="silkscreen" x1="4" y1="102" x2="36" y2="102"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB