H-Brücke diskret: Bootstrap und Ladungspumpe am Oszi
Im H-Brücke Deep Dive steht, warum der High-Side-Schalter einen Gatetreiber braucht -- Bootstrap, Ladungspumpe, die 100-%-Tastgrad-Grenze, die Body-Dioden-Klemmung in der Totzeit. Alles nachvollziehbar. Aber in einem fertigen Treiber-IC ist davon nichts zu sehen: eine Blackbox mit acht Beinen.
Deshalb bauen wir die Funktionen hier diskret auf -- jede Teilfunktion ein eigenes, anfassbares Bauteil -- und machen jede Behauptung des Artikels als Oszilloskop-Messung sichtbar. (Gleiche Philosophie wie beim Spinning-Current-Projekt: Was integriert verborgen ist, extern aufbauen und messen.)
Material
Alles Kernmaterial liegt im Fundus:
| Funktion | Bauteil | Anmerkung |
|---|---|---|
| Halbbrücke | 2× IRLZ44N (TO-220) | Logic-Level, 55 V/47 A -- überdimensioniert ist hier ein Feature |
| Bootstrap-Diode | Schottky DO-41 (40 V/1 A) | schnell, geringe Flussspannung |
| Bootstrap-Kondensator | Kerko 1 µF + 100 nF parallel | aus dem Sortiment |
| Level-Shifter | 2N7000 | Klein-FET, schaltet das HS-Signal auf die Boot-Ebene |
| Gate-Totem-Pole | PN2222A + 2N3906 | npn/pnp-Paar, treibt das HS-Gate niederohmig |
| Ladungspumpe | 2--3× 1N4148 + Kerkos | Dickson-Stufen |
| Taktquelle Pumpe | NE555 | astabil, einige 10 kHz |
| PWM + Totzeit | A-Star 328PB (oder Uno) | komplementäre PWM per Timer1, s. Sketch |
| Last | TT-Motor oder Drossel + Leistungswiderstand | induktiv, sonst kein Body-Dioden-Plateau |
| Versorgung | 12 V Bank-Netzteil (V_Bus) + 5 V Logik | Strombegrenzung an! |
Aufbau 1: Bootstrap, komplett diskret
Funktionsblöcke (Schaltplan folgt):
- Halbbrücke: 2× IRLZ44N zwischen +12 V und GND, Schaltknoten in der Mitte, Last gegen GND (Halbbrücken-Betrieb reicht -- das High-Side-Problem ist dasselbe wie in der Vollbrücke).
- Boot-Zweig: Schottky von +12 V (V_CC) auf den Boot-Knoten, C_Boot vom Boot-Knoten zum Schaltknoten.
- Level-Shifter: 2N7000 zieht (masse-bezogenes HS-Signal) einen Pullup-Widerstand, der an der Boot-Schiene hängt -- damit „übersetzt" ein einziger Transistor das Signal auf die mitfliegende Ebene. Achtung: invertiert (im Sketch berücksichtigt).
- Totem-Pole: PN2222A/2N3906 als Emitterfolger-Paar zwischen Boot-Knoten und Schaltknoten, treibt das Gate des oberen IRLZ44N. Gate-Widerstand ~10--22 Ω.
- Low-Side: direkt vom µC-Pin über einen kleinen Vorwiderstand (IRLZ44N ist Logic-Level; für saubere Flanken später gern ein zweites Totem-Pole).
Aufbau 2: Dickson-Ladungspumpe
NE555 astabil (einige 10 kHz) treibt eine klassische Diodenkette: Koppelkondensator → 1N4148 → Speicherkondensator, zwei Stufen reichen für V_CC + ~8 V. Erst solo vermessen (Ripple, Lastverhalten), dann statt der Bootstrap-Diode als High-Side-Versorgung anschließen -- und damit die 100-%-Tastgrad-Grenze aufheben.
Der Steuer-Sketch: komplementäre PWM mit einstellbarer Totzeit
Timer1 des ATmega328 im Phase-Correct-Modus, beide Compare-Kanäle auf einer Zeitbasis: OC1A (Pin 9) nicht-invertiert fürs High-Side-Signal, OC1B (Pin 10) invertiert fürs Low-Side-Signal. Die Totzeit entsteht durch den Versatz der beiden Compare-Werte -- Hardware-genau, kein Jitter:
// Komplementäre PWM mit einstellbarer Totzeit (ATmega328, Timer1)
// Pin 9 = OC1A = HS-Signal (an Level-Shifter, dort invertiert -> INVERT_HS)
// Pin 10 = OC1B = LS-Signal (direkt/Totem-Pole)
// Poti A0 = Tastgrad, Poti A1 = Totzeit, Taster D2 = "HS dauerhaft an"
// (Bootstrap-Aushunger-Test, Experiment 4)
const uint16_t TOP = 400; // 16 MHz / (2*400) = 20 kHz PWM
const bool INVERT_HS = true; // 2N7000-Level-Shifter invertiert
void setup() {
pinMode(9, OUTPUT); pinMode(10, OUTPUT);
pinMode(2, INPUT_PULLUP);
// Timer1: Phase-Correct PWM, TOP = ICR1 (Mode 10), Prescaler 1
ICR1 = TOP;
TCCR1A = _BV(COM1A1) | (INVERT_HS ? _BV(COM1A0) : 0) // OC1A
| _BV(COM1B1) | _BV(COM1B0) // OC1B invertiert
| _BV(WGM11);
TCCR1B = _BV(WGM13) | _BV(CS10);
}
void loop() {
uint16_t duty = map(analogRead(A0), 0, 1023, 0, TOP); // 0..100 %
uint16_t dt = map(analogRead(A1), 0, 1023, 2, 40); // Totzeit-Zähler
// 1 Count = 62,5 ns; Flanken-Totzeit = dt * 62,5 ns
if (digitalRead(2) == LOW) duty = TOP; // Aushunger-Test: 100 % erzwingen
// HS endet dt Counts früher, LS beginnt dt Counts später:
uint16_t a = (duty > dt) ? duty - dt : 0;
uint16_t b = (duty + dt < TOP) ? duty + dt : TOP;
noInterrupts(); OCR1A = a; OCR1B = b; interrupts();
delay(20);
}
Der Messplan: sechs Experimente, sechs Artikel-Claims
Scope-Zuordnung (Fundus: PicoScope 4444, 3204, 5204):
- PicoScope 4444 (differenziell!): Die zwei spannendsten Signale sind erdfrei -- \(V(C_\text{Boot})\) und \(V_{GS}\) des High-Side reiten beide auf dem Schaltknoten. Genau dafür ist das 4444 mit Differenztastköpfen das richtige Werkzeug.
- 5204/3204 (single-ended, schnell): Schaltknoten, Gate-Signale, Pumpen-Ripple -- alles GND-bezogen.
⚠️ Die klassische Falle: Niemals die Masseklemme eines normalen Tastkopfs an den Schaltknoten hängen, um „mal eben" \(V_{GS,\text{HS}}\) zu messen -- das legt den Knoten über die Masseleitung an Erde und schließt beim Schalten die Halbbrücke kurz. Erdfreie Messungen gehören auf die Differenzkanäle.
| # | Experiment | Messung | Artikel-Claim |
|---|---|---|---|
| 1 | Grundbetrieb | Schaltknoten \(V(t)\) | Knoten springt 0 ↔ V_Bus, liegt nie „in der Mitte" |
| 2 | Der Kondensator-Ritt | Boot-Knoten gegen GND + Knoten | Boot-Schiene = Knoten + ~12 V, reitet mit |
| 3 | Nachladen | \(V(C_\text{Boot})\) differenziell | Sägezahn: lädt bei LS-an, entlädt je HS-Puls |
| 4 | Aushungern | Taster D2: Duty → 100 % | Boot-Spannung sackt ab, HS-Gate bricht ein -- die Bootstrap-Grenze live |
| 5 | Totzeit & Body-Diode | Knoten fein aufgelöst, induktive Last | −0,7-V-Plateau während \(t_d\) (Klemmung), Totzeit am Poti verstellen und zusehen |
| 6 | Ladungspumpe | Pumpen-Ausgang; dann Exp. 4 wiederholen | Ripple/Lastverhalten; mit Pumpe läuft 100 % Duty durch |
Bonus, wenn alles steht: Reverse Recovery der Body-Diode als Stromspitze sichtbar machen (Shunt in der Low-Side) und den Unterschied Schottky vs. 1N4148 als Boot-Diode vermessen.
Stand
Projekt angelegt, Material reserviert, Sketch bereit. Als Nächstes: Schaltplan zeichnen, Steckbrett-Aufbau, dann die Messreihe.
Weiterführendes
- H-Brücke Deep Dive -- die Theorie, die hier auf dem Steckbrett landet
- Spinning Current -- gleiche Philosophie am Hall-Sensor