This commit is contained in:
Nathan Rashleigh committed 2026-07-21 14:06:20 +10:00
1 parent 9aef980e1c
commit 956a72702b
2 files changed
+41 -25

No files matched your search

+40 -25
View File
@@ -1,14 +1,14 @@
# ambium
Analog white-noise generator. Single **+12 V** supply, breadboard-friendly.
Broadband hiss to a **4 Ω speaker** via a TIP120 driver.
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. U1A unused (inputs tied to VREF).
- **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.
@@ -19,9 +19,9 @@ BOM, and the connection list — the connection list is the authoritative netlis
## Signal chain
```
[noise] [amplify] [driver]
Q1 2N3904 → U1B LM358 ×1000 → Q3 TIP120 → 4Ω speaker
NOISE AMP (class A)
[noise] [amp + brown] [driver]
Q1 2N3904 → U1B LM358 −6dB/oct → Q3 TIP120 → 4Ω speaker
NOISE AMP (class A)
```
Legend:
@@ -88,26 +88,40 @@ internal, don't label it.
---
## Stage 2 — Amplifier ×1000 (U1B, Rin1, Rf1)
## Stage 2 — Amplifier + brown shaping (U1B, Rin1, Rf1, Cf1)
Inverting amp, gain ≈ −Rf1/Rin1 = ×1000, centred on VREF. Clips into the rails at
this gain — that's the loud hiss fed to the driver. Too harsh? Drop Rf1 (e.g. 470k).
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
└─────────┘
┌─────∪────┐
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 22pF]─● pin 6 anti-osc, limits BW
input: NOISE ─[Rin1 1k]──● pin 6
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.
@@ -158,12 +172,12 @@ TIP120 pinout (TO-220, face up, pins down): **1 Base · 2 Collector · 3 Emitter
| R1 | 100k | resistor | avalanche current limit |
| R2, R3 | 10k | resistor | VREF divider |
| Rin1 | 1k | resistor | amp input |
| Rf1 | 1M | resistor | amp feedback (×1000) |
| 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 | 22–100pF | ceramic | amp feedback / anti-oscillation |
| 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 |
@@ -182,7 +196,7 @@ 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, Cc.1 (Rin1.2, Rf1, U1B.IN−(6) = summing)
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
@@ -194,14 +208,15 @@ Q1 : collector = no-connect
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 → loud hiss (~volts).
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 (watch clipping) |
| Less harsh | ↓ Rf1 |
| 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) |
+1
View File
@@ -1,6 +1,7 @@
.title KiCad schematic
U1 __U1
Rf1 /VREF /AMP 1Meg
Cf1 /VREF /AMP 8.2n
Rin2 /AMP /VREF 10k
U2 __U2
Cout Net-_U2B--_ Net-_Cout-Pad2_ 10u