fable
This commit is contained in:
1 parent
956a72702b
commit
295391b119
4 files changed
+1504
-1651
No files matched your search
@@ -1,16 +1,17 @@
|
||||
# ambium
|
||||
|
||||
Analog brown-noise generator. Single **+12 V** supply, breadboard-friendly.
|
||||
Deep filtered rumble to a **4 Ω speaker** via a TIP120 driver.
|
||||
Deep filtered rumble to a **4 Ω speaker** via a cool-running **Class-AB push-pull** output.
|
||||
|
||||
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).
|
||||
- **U1** = LM358 (dual op-amp, DIP-8). U1B = amp + brown shaping. U1A = output driver.
|
||||
- **Q1** = 2N3904 (NPN). Avalanche noise source.
|
||||
- **Q3** = TIP120 (NPN Darlington, TO-220). Class-A speaker driver.
|
||||
- **Q2** = PN2222 (NPN). Push-pull top half (sources +).
|
||||
- **Q3** = PN2907 (PNP). Push-pull bottom half (sinks −).
|
||||
|
||||
## Nets
|
||||
|
||||
@@ -19,27 +20,9 @@ BOM, and the connection list — the connection list is the authoritative netlis
|
||||
## 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
|
||||
[noise] [amp + brown] [push-pull driver]
|
||||
Q1 2N3904 → U1B LM358 −6dB/oct → U1A + Q2/Q3 → 4Ω speaker
|
||||
NOISE AMP OUT (Class AB, cool)
|
||||
```
|
||||
|
||||
---
|
||||
@@ -122,43 +105,73 @@ LM358 DIP-8, notch at top, pin 1 top-left. Amp = **unit B** (pins 5/6/7).
|
||||
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.
|
||||
Unit A (pins 1/2/3) = the push-pull output driver — see next section.
|
||||
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
|
||||
## Output driver — Class-AB push-pull (U1A + Q2/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.
|
||||
AMP is line level; the LM358 can't drive a speaker alone. Complementary emitter-
|
||||
followers **inside the U1A loop**: Q2 (NPN) pushes the positive half, Q3 (PNP) pulls
|
||||
the negative half. Both halves are actively driven, so there's **no idle resistor and
|
||||
near-zero quiescent current → it runs cool.** U1A drives both bases; global feedback
|
||||
from OUT hides crossover distortion (no bias diodes needed).
|
||||
|
||||
Driver = LM358 **unit A** (pins 1/2/3), same chip as the amp.
|
||||
|
||||
```
|
||||
+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Ω
|
||||
┌─────∪────┐
|
||||
bases ─ OUT A 1 ─┤ ├ 8 V+ ──── +12V
|
||||
OUT ─ IN− A 2 ─┤ LM358 ├ 7 (OUT B → AMP, Stage 2)
|
||||
AMP ─ IN+ A 3 ─┤ ├ 6
|
||||
V− 4 ─┤ ├ 5
|
||||
└──────────┘
|
||||
```
|
||||
|
||||
Push-pull output stage (totem pole):
|
||||
```
|
||||
+12V
|
||||
│
|
||||
(base node ● = Rb1/Rb2/Cc) GND
|
||||
C
|
||||
┌───┴───┐
|
||||
bases ──B──────┤ Q2 │ PN2222 (NPN — sources +half)
|
||||
└───┬───┘
|
||||
E
|
||||
[Re1 10Ω]
|
||||
│
|
||||
●──────────► OUT ──+┤├──► SPKR ─ GND
|
||||
│ Cout 470µF 4Ω
|
||||
[Re2 10Ω] (+ → OUT)
|
||||
E
|
||||
┌───┴───┐
|
||||
bases ──B──────┤ Q3 │ PN2907 (PNP — sinks −half)
|
||||
└───┬───┘
|
||||
C
|
||||
│
|
||||
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**.
|
||||
Connections:
|
||||
```
|
||||
input: AMP ─────────────● pin 3 (IN+ A)
|
||||
drive: pin 1 (OUT A) ───● bases → Q2.base + Q3.base
|
||||
feedback: OUT ─────────────● pin 2 (IN− A)
|
||||
Q2: C → +12V B → bases E → Re1 → OUT
|
||||
Q3: C → GND B → bases E → Re2 → OUT
|
||||
OUT node = Re1 ● Re2 ● pin 2 (fb) ● Cout.+ ; Cout.− → speaker → GND
|
||||
```
|
||||
- Idle ≈ 0 → **cool, no heatsink.** Re1/Re2 = **10 Ω ¼ W** (4.7–10 Ω ok; carry only AC — not hot).
|
||||
- OUT sits at ~6 V DC (follows AMP); **Cout 470 µF** blocks it, speaker sees AC only.
|
||||
|
||||
TO-92 pinout (flat face toward you, leads down): **PN2222 = E-B-C**, **PN2907 = E-B-C**
|
||||
(confirm against your batch's datasheet).
|
||||
|
||||
- PN2222/PN2907 cap ~600 mA → ~1 W into 4 Ω before current-limiting. Plenty for the
|
||||
rumble, and cool. Want more power → TIP120+TIP125 pair, or an amp chip.
|
||||
- Crossover buzz at low level? Split the bases and add **2× 1N4148** between them for
|
||||
bias. Usually unneeded — feedback handles it for a noise source.
|
||||
|
||||
---
|
||||
|
||||
@@ -166,39 +179,38 @@ TIP120 pinout (TO-220, face up, pins down): **1 Base · 2 Collector · 3 Emitter
|
||||
|
||||
| Ref | Value | Part | Function |
|
||||
|-----|-------|------|----------|
|
||||
| U1 | — | LM358 (DIP-8) | U1B amp (U1A unused) |
|
||||
| U1 | — | LM358 (DIP-8) | U1B amp+brown, U1A output driver |
|
||||
| Q1 | — | 2N3904 | avalanche noise source |
|
||||
| Q3 | — | TIP120 | class-A speaker driver |
|
||||
| Q2 | — | PN2222 (NPN) | push-pull top (source) |
|
||||
| Q3 | — | PN2907 (PNP) | push-pull bottom (sink) |
|
||||
| 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 |
|
||||
| Re1, Re2 | 10Ω ¼W | resistor | push-pull emitter degeneration (4.7–10Ω ok) |
|
||||
| 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) |
|
||||
| Cout | 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.
|
||||
Chip count: 1× LM358 + 1× 2N3904 + PN2222/PN2907 pair. **No heatsink needed** (Class AB).
|
||||
|
||||
---
|
||||
|
||||
## 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)
|
||||
+12V : R1.1, R2.1, U1.8, Q2.collector, 47µF+
|
||||
GND : R3.2, Q1.base, Cref.−, U1.4, Q3.collector, 47µF−, 0.1µF
|
||||
VREF : R2.2, R3.1, Cref.+, U1B.IN+(5)
|
||||
(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
|
||||
AMP : U1B.OUT(7), Rf1, Cf1, U1A.IN+(3) (Rin1.2, Rf1, Cf1, U1B.IN−(6) = summing)
|
||||
bases : U1A.OUT(1), Q2.base, Q3.base (driver output → both bases)
|
||||
OUT : Q2.emitter→Re1 ; Q3.emitter→Re2 ; Re1.2 = Re2.2 = OUT node
|
||||
OUT → U1A.IN−(2) (feedback) ; OUT → Cout.+ ; Cout.− → speaker → GND
|
||||
Q1 : collector = no-connect
|
||||
```
|
||||
|
||||
@@ -209,7 +221,7 @@ 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 → 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.
|
||||
4. **Driver (Q2/Q3)** — wire push-pull + feedback. Speaker rumbles. Transistors stay **cool** (near-zero idle). OUT DC ~6 V.
|
||||
|
||||
## Tuning
|
||||
|
||||
@@ -218,5 +230,5 @@ Q1 : collector = no-connect
|
||||
| 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) |
|
||||
| Kill crossover buzz | add 2× 1N4148 base-bias diodes |
|
||||
| More power | TIP120+TIP125 pair, or amp chip (PAM8403 / TDA2822) |
|
||||
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"prototype_zone_fills": false,
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
"vias",
|
||||
"footprint_text",
|
||||
"footprint_anchors",
|
||||
"ratsnest",
|
||||
"grid",
|
||||
"footprints_front",
|
||||
"footprints_back",
|
||||
"footprint_values",
|
||||
"footprint_references",
|
||||
"tracks",
|
||||
"drc_errors",
|
||||
"drawing_sheet",
|
||||
"bitmaps",
|
||||
"pads",
|
||||
"zones",
|
||||
"drc_warnings",
|
||||
"drc_exclusions",
|
||||
"locked_item_shadows",
|
||||
"conflict_shadows",
|
||||
"shapes",
|
||||
"board_outline_area",
|
||||
"ly_points"
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"integration_disabled": false,
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "ambium.kicad_prl",
|
||||
"version": 5
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [],
|
||||
"col_order": [],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_time_domain_details": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"open_jobsets": [],
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"hierarchy_collapsed": [],
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"ruleAreas": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
+1306
-1565
File diff suppressed because it is too large.
Load diff
+14
-19
@@ -1,25 +1,20 @@
|
||||
.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
|
||||
Rin1 Net-_C1-Pad2_ /VREF 1k
|
||||
R2 +12V /VREF 10k
|
||||
Q1 __Q1
|
||||
C1 Net-_Q1-E_ Net-_C1-Pad2_ 10u
|
||||
C3 +12V GND 47u
|
||||
R3 /VREF GND 10k
|
||||
R1 +12V Net-_Q1-E_ 100k
|
||||
Cref /VREF GND 10u
|
||||
Ra /VREF Net-_U2A-+_ 100k
|
||||
Ct /LFO_CV /VREF 10u
|
||||
Rt /LFO_CV Net-_Rh-Pad2_ 1Meg
|
||||
Rb2 /LFO_CV Net-_Q2-B_ 100k
|
||||
Rs /BROWN Net-_Q2-C_ 47k
|
||||
C2 +12V GND 100n
|
||||
R1 +12V /SRC 100k
|
||||
C1 /SRC /NOISE 10u
|
||||
Rin1 /NOISE /SUM 1k
|
||||
Q1 __Q1
|
||||
Rf1 /SUM /AMP 1Meg
|
||||
Cf1 /SUM /AMP 8.2n
|
||||
U1 __U1
|
||||
Re2 Net-_Q3-E_ /OUT 10
|
||||
Q3 __Q3
|
||||
LS1 /SPKR GND Speaker
|
||||
Cout /OUT /SPKR 470u
|
||||
Re1 Net-_Q2-E_ /OUT 10
|
||||
Q2 __Q2
|
||||
Rh Net-_U2A-+_ Net-_Rh-Pad2_ 100k
|
||||
Cint /VREF /BROWN 100n
|
||||
Rf2 /VREF /BROWN 1Meg
|
||||
Rvol __Rvol
|
||||
.end
|
||||
Reference in new issue
Block a user