From 956a72702bc637ffb4f36c41c002cd77d7865027 Mon Sep 17 00:00:00 2001 From: Nathan Rashleigh Date: Tue, 21 Jul 2026 14:06:20 +1000 Subject: [PATCH] update --- README.md | 65 ++++++++++++++++++++++++++---------------- kicad/ambium.spice.cir | 1 + 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 61d62e1..2ef241f 100644 --- a/README.md +++ b/README.md @@ -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) | diff --git a/kicad/ambium.spice.cir b/kicad/ambium.spice.cir index f8bf614..dd3f782 100644 --- a/kicad/ambium.spice.cir +++ b/kicad/ambium.spice.cir @@ -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