137 lines
3.5 KiB
Markdown
137 lines
3.5 KiB
Markdown
# SN-L00 Latency Tester
|
||
|
||
Eurorack module for measuring round-trip latency in audio/CV signal chains.
|
||
|
||
**Organization**: [SubModular](https://git.sub-net.at/submodular) / Sub-Net e.U.
|
||
|
||
## Features
|
||
|
||
- Measures latency from 0.01ms to 999ms
|
||
- 128×32 OLED display showing milliseconds
|
||
- Three modes: Single shot, Continuous, Statistics
|
||
- Skiff-friendly depth (<25mm)
|
||
- USB serial output for logging
|
||
|
||
## Specifications
|
||
|
||
| Parameter | Value |
|
||
|-----------|-------|
|
||
| Width | 8 HP (40mm) |
|
||
| Depth | <25mm |
|
||
| Power +12V | ~25mA |
|
||
| Power -12V | 0mA |
|
||
| Resolution | 0.01ms |
|
||
| Output | 0-3.3V trigger |
|
||
| Input | 0-10V tolerant |
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
SN-L00/
|
||
├── hardware/
|
||
│ ├── BOM.md # Bill of materials with LCSC part numbers
|
||
│ ├── kicad/ # KiCad schematic and PCB
|
||
│ │ ├── SN-L00.kicad_pro
|
||
│ │ ├── SN-L00.kicad_sch
|
||
│ │ ├── SN-L00.kicad_pcb
|
||
│ │ ├── README.md # ASCII schematic reference
|
||
│ │ └── PCB_LAYOUT.md # Placement guide
|
||
│ └── panel/
|
||
│ ├── PANEL_SPEC.md # Dimensions and specifications
|
||
│ └── SN-L00_panel.svg # Panel design
|
||
├── firmware/
|
||
│ ├── CMakeLists.txt # Pico SDK build
|
||
│ ├── README.md # Build instructions
|
||
│ ├── include/ # Header files
|
||
│ └── src/ # Source files
|
||
└── docs/
|
||
└── DESIGN.md # Technical design document
|
||
```
|
||
|
||
## Hardware
|
||
|
||
### Components
|
||
|
||
| Part | Description |
|
||
|------|-------------|
|
||
| MCU | RP2040-Zero (Waveshare) |
|
||
| Display | 0.91" OLED 128×32 I2C |
|
||
| Output buffer | 74LVC1G17 Schmitt trigger |
|
||
| Input buffer | MCP6001 op-amp |
|
||
| Regulator | AMS1117-3.3 LDO |
|
||
|
||
Full BOM with LCSC part numbers in [hardware/BOM.md](hardware/BOM.md).
|
||
|
||
### PCB Layout (KiCad 8)
|
||
|
||
1. Open `hardware/kicad/SN-L00.kicad_pro`
|
||
2. Update PCB from schematic: **Tools → Update PCB from Schematic** (F8)
|
||
3. **Automated routing** (from terminal):
|
||
```bash
|
||
cd hardware/kicad
|
||
python3 scripts/autoroute.py
|
||
```
|
||
This places components, routes, and runs DRC automatically.
|
||
|
||
Or manually in KiCad Scripting Console:
|
||
```python
|
||
exec(open('scripts/autoroute_full.py').read())
|
||
```
|
||
5. Fill zones: Press **B**
|
||
6. Run DRC: **Inspect → Design Rules Checker**
|
||
7. Export Gerbers: **File → Fabrication Outputs → Gerbers**
|
||
|
||
### Manufacturing
|
||
|
||
- PCB: 2-layer, 40×100mm (8HP)
|
||
- Assembly: PCBWay or similar (SMD parts)
|
||
- Hand-solder: RP2040-Zero module, OLED module
|
||
- Panel: Aluminum or PCB (8HP, 40.30×128.50mm)
|
||
|
||
## Firmware
|
||
|
||
Built with Raspberry Pi Pico SDK.
|
||
|
||
```bash
|
||
export PICO_SDK_PATH=/path/to/pico-sdk
|
||
cd firmware
|
||
mkdir build && cd build
|
||
cmake .. && make
|
||
```
|
||
|
||
Flash `sn_l00.uf2` via USB bootloader.
|
||
|
||
See [firmware/README.md](firmware/README.md) for details.
|
||
|
||
## Usage
|
||
|
||
1. Connect **TRIG OUT** to your signal chain input
|
||
2. Connect your signal chain output to **RETURN IN**
|
||
3. Press button to measure latency
|
||
4. Long press to toggle continuous mode
|
||
|
||
### Modes
|
||
|
||
- **SINGLE**: Press to measure once
|
||
- **CONT**: Auto-measures every 500ms, shows live reading
|
||
- **STATS**: Shows min/max/average after continuous mode
|
||
|
||
## Typical Latency Values
|
||
|
||
| Source | Expected Latency |
|
||
|--------|------------------|
|
||
| Analog modules | <0.1ms |
|
||
| Digital Eurorack (DSP) | 1-5ms |
|
||
| Audio interface round-trip | 3-20ms |
|
||
| DAW + plugins | 5-50ms+ |
|
||
|
||
## License
|
||
|
||
TBD
|
||
|
||
## Links
|
||
|
||
- Repository: https://git.sub-net.at/submodular/SN-L00
|
||
- Organization: https://git.sub-net.at/submodular
|
||
- Parent: [Sub-Net e.U.](https://sub-net.at)
|