Files

137 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)