Files
ambium/README.md
T
2026-07-21 14:06:20 +10:00

223 lines
8.5 KiB
Markdown
Raw 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.
# ambium
Analog brown-noise generator. Single **+12 V** supply, breadboard-friendly.
Deep filtered rumble to a **4 Ω speaker** via a TIP120 driver.
Reference designators and model numbers are consistent across every diagram, the
BOM, and the connection list — the connection list is the authoritative netlist.
## Parts
- **U1** = LM358 (dual op-amp, DIP-8). U1B = amp + brown shaping. U1A unused (parked).
- **Q1** = 2N3904 (NPN). Avalanche noise source.
- **Q3** = TIP120 (NPN Darlington, TO-220). Class-A speaker driver.
## Nets
`+12V` · `GND` · `VREF` (6 V mid-supply) · `NOISE` · `AMP` · `SPKR`
## Signal chain
```
[noise] [amp + brown] [driver]
Q1 2N3904 → U1B LM358 −6dB/oct → Q3 TIP120 → 4Ω speaker
NOISE AMP (class A)
```
Legend:
```
[Rxx val] resistor ──┤├── film / non-polar cap ● junction
──+┤├── polarised cap (+ = + terminal)
│\ × no-connect
────┤−\ op-amp: IN− top, IN+ bottom, OUT right. ► net continues
│ >── Powered from +12V / GND (LM358 pins 8 / 4).
────┤+ /
│/
E transistor: E / B / C labels outside the box.
│
┌──┴──┐
B ───┤ Qx │ NPN
└──┬──┘
│
C
```
---
## Power · VREF divider (R2, R3, Cref)
```
+12V
│
[R2 10k]
│
●───────────────┬────────► VREF (6 V)
│ + Cref 10µF
[R3 10k] ──┤├──
│ −
│ │
GND GND
```
R2/R3 = 20 kΩ across 12 V, midpoint = 6 V. VREF = AC ground (single supply).
---
## Stage 1 — White noise (R1, Q1, C1)
Reverse-biased B–E junction of Q1 into avalanche = broadband white noise. R1 limits
current; C1 couples it out.
```
+12V
│
[R1 100k]
│
●──+┤├──────────► NOISE
│ C1 10µF (+ → emitter side; − → NOISE)
E
┌──┴──┐
GND─B─┤ Q1 │ 2N3904
└──┬──┘
│
C × no connect
```
NOISE = the AC-coupled output after C1. The ● node is raw noise on a DC pedestal —
internal, don't label it.
> Avalanche varies part-to-part. If quiet, swap the 2N3904. Needs full +12 V.
---
## Stage 2 — Amplifier + brown shaping (U1B, Rin1, Rf1, Cf1)
Single inverting amp, low-frequency gain −Rf1/Rin1 = ×1000, centred on VREF. A feedback
cap Cf1 across Rf1 makes it a leaky integrator: flat gain below the corner, then −6 dB/oct
above it. That −6 dB/oct slope turns white noise into **brown**. One stage does gain and
browning together — no separate integrator needed.
- corner fc = 1/(2π·Rf1·Cf1) ≈ **19 Hz** with Rf1 1M, Cf1 8.2nF.
- below fc: flat ×1000. above fc: −6 dB/oct, reaching unity (×1) at ~20 kHz.
- so the whole audible band (20 Hz–20 kHz) rides the brown slope; peak gain ×1000 at the
bottom, rolling off inaudible ultrasonics at the top for free.
**Why not a flat ×1000 stage?** LM358 GBW = 1 MHz → a flat ×1000 stage has only 1 MHz/1000
≈ **1 kHz** bandwidth, collapsing the band (measured ~27 mV pp at AMP). Here Cf1 makes the
demanded gain *fall* with frequency, so the op-amp GBW is never the limit — the RC feedback
does the shaping, not the op-amp rolloff.
LM358 DIP-8, notch at top, pin 1 top-left. Amp = **unit B** (pins 5/6/7).
```
┌─────∪────┐
OUT A 1 ─┤● ├ 8 V+ ──── +12V
IN− A 2 ─┤ ├ 7 OUT B ──●──────────────► AMP
VREF ─ IN+ A 3 ─┤ LM358 ├ 6 IN− B ──●
GND ─ V− 4 ─┤ ├ 5 IN+ B ──── VREF
└──────────┘
feedback (pin 7 ↔ pin 6): pin 7 ●──[Rf1 1M]────● pin 6 Rf1 ∥ Cf1
pin 7 ●──[Cf1 8.2nF]──● pin 6 brown slope, corner ~19 Hz
input: NOISE ─[Rin1 1k]──● pin 6
```
DC handling: C1 blocks DC into Rin1, so the op-amp's own offset sees unity gain — output
sits at VREF (6 V), no railing.
Unit A unused → park as a follower so it can't oscillate: pin 3 → VREF, pin 2 → pin 1.
Power/decoupling (whole chip, once): pin 8 → +12V, pin 4 → GND. 47µF bulk + 0.1µF at
pin 8.
---
## Output driver — TIP120 class-A follower (Q3), 4Ω speaker
AMP is line level; the LM358 can't drive a speaker. Q3 emitter follower supplies the
current. Class A — needs a heatsink.
```
+12V +12V
│ │
[Rb1 10k] C (collector)
│ ┌──┴──┐
●───────●───────────────────B──┤ Q3 │ TIP120
│ │ └──┬──┘
[Rb2 10k] │ │
│ │ E
GND │ │
│ ●──+┤├──► SPKR ─ GND
AMP ─+┤├───┘ │ Cout2 470µF (+ → emitter)
Cc 10µF [Re 22Ω 3W] 4Ω
│
(base node ● = Rb1/Rb2/Cc) GND
```
The base node ● sits at ~6 V (Rb1/Rb2). Cc lands there and adds the AC — it never
connects to +12V.
- Rb1/Rb2 = 10k/10k → base ~6 V. Cc AC-couples AMP onto the base.
- Emitter ~4.5 V (base − ~1.5 V Darlington drop). Iq = 4.5V/Re ≈ 200 mA.
- Cout2 blocks DC; speaker sees AC only.
- **Heatsink Q3** (~1.5 W idle). Re ≥3 W.
- Cooler/quieter: Re = 47 Ω → Iq ~100 mA.
- Bias sag (hum/distortion): stiffen divider to 4.7k/4.7k.
TIP120 pinout (TO-220, face up, pins down): **1 Base · 2 Collector · 3 Emitter**.
---
## Bill of materials
| Ref | Value | Part | Function |
|-----|-------|------|----------|
| U1 | — | LM358 (DIP-8) | U1B amp (U1A unused) |
| Q1 | — | 2N3904 | avalanche noise source |
| Q3 | — | TIP120 | class-A speaker driver |
| R1 | 100k | resistor | avalanche current limit |
| R2, R3 | 10k | resistor | VREF divider |
| Rin1 | 1k | resistor | amp input |
| Rf1 | 1M | resistor | amp feedback (low-freq gain ×1000) |
| Rb1, Rb2 | 10k | resistor | Q3 base bias (~6 V) |
| Re | 22Ω 3W | resistor | Q3 idle-current set |
| C1 | 10µF | electrolytic | noise coupling |
| Cref | 10µF | electrolytic | VREF bypass |
| Cf1 | 8.2nF | film / ceramic | feedback / brown shaping (−6dB/oct, corner ~19 Hz) |
| Cc | 10µF | electrolytic | AMP → base coupling |
| Cout2 | 470µF ≥16V | electrolytic | speaker coupling (big, for lows) |
| — | 0.1µF | ceramic | LM358 decoupling |
| — | 47µF | electrolytic | +12V bulk |
Chip count: 1× LM358 + 1× 2N3904 + 1× TIP120. Q3 needs a heatsink.
---
## Connection list (authoritative netlist)
```
+12V : R1.1, R2.1, U1.8, Rb1.1, Q3.collector, 47µF+
GND : R3.2, Q1.base, Cref.−, U1.4, Rb2.2, Re.2, 47µF−, 0.1µF
VREF : R2.2, R3.1, Cref.+, U1B.IN+(5), U1A.IN+(3)
U1A.OUT(1) = U1A.IN−(2) (spare amp parked as follower)
(src) : R1.2, Q1.emitter, C1.+ (internal raw-noise node)
NOISE : C1.−, Rin1.1 (after C1)
AMP : U1B.OUT(7), Rf1, Cf1, Cc.1 (Rin1.2, Rf1, Cf1, U1B.IN−(6) = summing)
base : Cc.2, Rb1.2, Rb2.1, Q3.base (~6 V bias)
SPKR : Q3.emitter, Re.1, Cout2.+ ; Cout2.− → speaker → GND
Q1 : collector = no-connect
```
---
## Build & test order
1. **VREF** — confirm ~6.0 V.
2. **Noise (R1, Q1)** — scope Q1 node → hiss (~mV). None? swap 2N3904 or raise supply to 12–15 V.
3. **Amp (U1B)** — scope AMP → deep rumble (~volts), darker than the raw Q1 hiss (that's the brown slope).
4. **Driver (Q3)** — feed AMP through Cc. Speaker hisses. Q3 warm, not hot; too hot → raise Re.
## Tuning
| Want | Change |
|------|--------|
| Louder | ↑ Rf1 (raises low-freq gain; watch clipping) |
| Darker / deeper | ↑ Cf1 (lowers corner, more brown) |
| Brighter (toward white) | ↓ Cf1 (raises corner) |
| Cooler driver | ↑ Re |
| More headroom | ↓ Re (hotter — bigger heatsink) |