feat(etit-es): example exercise for 3dB and Arbeitspunkt + formatting

This commit is contained in:
orangerot 2025-08-16 14:56:53 +02:00
parent d8d7ae8c14
commit 058b94688a

View file

@ -1,4 +1,5 @@
#import "@preview/zap:0.2.1"
#import "@preview/cetz-plot:0.1.2": plot, chart
#set columns(gutter: 5pt)
#set rect(outset: 0pt)
@ -22,6 +23,15 @@
circle(pos, name: name, radius: .1, fill: white)
})
}
#let arrow(a,b,..args) = {
import zap.draw: *
line((a,.2,b), (b, .2, a), name: "line", mark: (end: (symbol: ">", fill: black)))
content("line", anchor: "east", padding: .2, ..args)
}
#columns(2, [
#section[
@ -47,12 +57,16 @@
]
#grid(columns: 2 * (1fr,), align: (right, left), gutter: 10pt,
[Parallelwiderstände], $R_1 || R_2 = 1 / (1 / R_1 + 1 / R_2)$,
[Knotenregel, $sum I = 0$], [Maschenregel $sum U = 0$],
[Parallelwiderstände], $R_1 || R_2 = 1 / (1 / R_1 + 1 / R_2) = (R_1 dot R_2) / (R_1 + R_2)$,
[Spannungsteiler], $U_2 = U dot R_2 / (R_1 + R_2)$,
[Stromteiler], $I_1 = I dot = R_2 / (R_2 + R_2)$,
[3 dB-Grenzfrequenz], $f_"3dB" = 1 / (2 pi dot C dot R)$
[Stromteiler], $I_1 = I dot R_2 / (R_1 + R_2)$, [3 dB-Grenzfrequenz], $f_"3dB" =
1 / (2 pi dot C dot R)$
)
Übertragungsfunktion normiert: $1/(1+j omega K)$ bzw $(j omega K)/(1 + j omega K)$ \
$omega_"3dB" = 1 / K => f_"3dB" = 1 / (2 pi K)$
$Z_L = j omega L, Z_C = 1 / (j omega C)$ \
$abs(H(omega)) = abs(a+b j) = sqrt(a^2 + b ^2)$
]
#colbreak()
@ -60,22 +74,27 @@
#section[
== Diode #box(zap.canvas({zap.diode("d", (0,0),(1,0))}))
$
I = I_s dot (e^(U/U_T) -1) approx 26"mv" " mit " U_T = (k_B dot T)/mono(e)
$
#v(-.5cm)
#grid(columns: 2 * (1fr,), align: (right, left), gutter: 10pt,
[], $" mit " U_T = (k_B dot T)/mono(e) approx 26"mv"$,
[Diodenstrom], $I_D &= I_s dot (e^(U_D/U_T) -1)$,
[Diodenspannung], $U_D &= U_T dot ln(I_D/I_S)$ ,
[Kleinsignal], $r_D &= U_T / I_D$
)
#zap.canvas({
import zap: *
import zap.cetz.draw: *
scale(.6)
content((-5,0), [Kleinsignalersatzschaltbild])
content((-5,-.3), [Kleinsignalersatzschaltbild])
out("A", (0,0))
out("K", (3,0))
resistor("rd", "A", "K", label: (content: $r_D$, anchor: "south", distance: 0pt))
translate((0.8,-2.5))
content((-5.8,0), [Erweitertes \ Kleinsignalersatzschaltbild])
translate((0.8,-1.5))
content((-4.2,0), [Erweitertes Kleinsignalersatzschaltbild])
translate((2.4,.4))
scale(.6)
out("A", (0,0))
out("K", (5,0))
@ -88,12 +107,36 @@ $
wire("CD.in", (rel: (0,-1)))
wire("CD.out", (rel: (0,-1)))
})
#stack(dir: ltr,[
#zap.cetz.canvas({
import zap.draw: *
plot.plot(axis-style: "school-book", name: "plot", size: (2,2), x-label: $U(V)$, y-label:
$I(A)$, x-tick-step: none, y-tick-step: none, {
plot.add(domain: (-23,15), u => if (u > 0) {(u, calc.exp(u - 2))}
else {(u,-calc.exp(-u - 10))})
plot.add-anchor("brk", (-8,0))
plot.add-anchor("UBR", (-18,0))
plot.add-anchor("UF", (14,0))
})
content("plot.brk", text(fill: black, weight: "extrabold")[\/\/])
line((rel: (0,.2), to: "plot.UBR"), (rel: (0,-.4)))
content("plot.UBR", anchor: "south", padding: 8pt, $U_"Br" "/" U_Z$)
line((rel: (0,.2), to: "plot.UF"), (rel: (0,-.4)))
content("plot.UF", anchor: "north", padding: 8pt, $U_"F"$)
})
],[
$
U_F & "Flussspannung" \
U_"Br" "/" U_Z & "Durchbruchspannung /" \
& "Zenerspannung "
$
])
]
])
#section[
#grid(columns: 2 * (1fr,), [
#stack(dir: ltr, spacing: 1fr, [
== Bipolartransistor #box[#zap.canvas({
import zap: *
import zap.draw: *
@ -105,10 +148,11 @@ content("Q.e", "E", anchor: "west", padding: (left: 5pt))
})]
#grid(columns: 2, align: (right, left), gutter: 10pt,
[Steilheit], $S = I_(C,A) / U_T$,
[Kleinsignal-Eingangs-Widerstand], $r_"BE" = beta / S$
[Kleinsignal-Eingangs-\ Widerstand], $r_"BE" = beta / S$,
[Stromverstärkung], $beta = I_C / I_B$,
[Ausgangswiderstand], $r_"CE" = (abs(U_A) + U_"CE") / I_C$,
)
],[
#grid(columns: 2 * (1fr,), [
#figure(zap.canvas({
import zap: *
import zap.cetz.draw: *
@ -137,7 +181,7 @@ capacitor("CBE", ("E"), (rel: (0,2)), stroke: red, label: (content: text(fill:re
capacitor("", ("K"), (rel: (-1,0)), stroke: red)
content((rel: (-1.5,0), to: "K"), text(fill: red, $C_"BC"$))
}),
caption: [#text(fill:red)[vollständiges] Kleinsignalersatzschaltbild])
caption: [#text(fill:red)[vollständiges] \ Kleinsignalersatzschaltbild])
], [
#figure(zap.canvas({
import zap: *
@ -163,7 +207,33 @@ diode("RBE", "B", ((), "|-", "E"))
isource("SUBE", "K", ((), "|-", "E"), label: (content: $S dot u_"BE"$, distance: 1pt))
}),caption: [Großsignalersatzschaltbild])
])
#align(right + horizon, stack(dir: ltr, [
#figure(zap.canvas({
import zap: *
import zap.cetz.draw: *
scale(.7)
out("U1E", (0,0))
out("U1A", (0,-2))
out("U2E", (5,0))
out("U2A", (5,-2))
set-style(zap: (wires: (stroke: green)))
resistor("Z1", (1.5,0), (1.5,-2), stroke: green, label: (content: text(fill: green, $Z/(1-A)$), distance: 1pt))
resistor("Z2", (5-1.5,0), (5-1.5,-2), stroke: green, label: (content: text(fill: green, $(A Z)/(A-1)$), distance: 1pt))
wire("U1E", "Z1.in")
wire("U2E", "Z2.in")
wire("U1A", "U2A")
set-style(zap: (wires: (stroke: red)))
resistor("Z","Z1.in", "Z2.in", stroke: red, label: (content: text(fill: red, $Z$), distance: 1pt))
arrow("U1E", "U1A", $u_1$, anchor: "west")
arrow("U2E", "U2A", $u_2$, anchor: "west")
}),caption: [
])
], [
Miller-Theorem: $A = u_2/u_1$\
#text(fill: red)[verbundene Impedanz $Z$] wird \
zu #text(fill: green)[zwei getrennte Impedanzen]
]))
#table(columns: 3 * (1fr,), align: center,
table.header([Ermitterschaltung], [Basisschaltung], [Kollektorschaltung]),[
@ -278,6 +348,64 @@ $)
]
== Übergangsfunktion und 3dB-Grenzfrequenz
#grid(columns: 3*(1fr,), [
#scale(80%, reflow: true)[
#zap.canvas({
import zap: *
// acvsource("UE", (0,0), (1,0))
vsource("UE", (0,0), (0,-2), u: (label:$u_e$, position: bottom))
resistor("R1", (0,0), (3,0), label: (content: $R 1 = 250 Omega$))
wire((3,0), (5,0))
resistor("RL", (3,0), (3,-2), label: (content: $R_L = 500 Omega$, anchor: "south"), distance: 0pt)
inductor("L", (5,0), (5,-2), u: (label: $u_L$, position: bottom), i: $i_L$, label: (content: $L = 850 "pH"$))
wire((0,-2), (5,-2))
})
]
$
H(omega) =& u_l / u_e = (j omega L || R_2) / (R_1 + (j omega L || R_2)) \
=& (j omega L dot R_2) / (R_1 dot R_2 + j omega L dot (R_1 + R_2)) \
=& R_2 / (R_1 + R_2) (j omega K) / (1+j omega K)
$
], [
#v(.3cm)
$
" mit " K &= L dot (R_1 + R_2) / (R_1 dot R_2) = 5,1 "ps" \
abs(H(omega)) =& R_2 / (R_1 + R_2) (omega K) / sqrt(1 + (omega K)^2) \
&=> f_"3dB" = omega_"3dB" / (2 pi) = 1 / ( 2 pi K) \
& = 1 / ( 2 pi * 5,1 "ps") = 31,2 "GHz" \
H(omega -> oo) &= R_2 / (R_1 + R_2) = 2 / 3 | 20 log(x) \
&= -3,51 "dB"
$
], [
#zap.canvas({
import zap.draw: *
plot.plot(
x-tick-step: none, y-tick-step: none,
size: (4,3),
x-label: $f " in Hz"$,
y-label: $abs(H) " in dB"$,
legend: (-1,-1),
x-min: 100,
x-max: 150000,
y-min: -40,
x-mode: "log",
x-base: 10,
y-max: 0,
x-ticks: ((100,$100 M$), (1000,$1 G$), (10000,$10 G$), (100000,$100 G$)),
y-ticks: (-40, -20, 0), {
plot.add-hline((-3.52), label: $H(omega -> oo) = -3,51 "dB"$)
plot.add-vline((31200), label: $f_"3dB" = 31,2 "GHz"$)
plot.add(((500, -40), (31200, -3.52), (150000,-3.52)))
plot.annotate({
line((1500,-30),(6000,-30),(6000,-18))
content((14000,-24), $20 "dB"/"Dek"$)
})
})
})
])
#section[
#grid(columns: (2fr, 3fr), [
== Feldeffekttransistor (FET) #box[#zap.canvas({
@ -445,4 +573,94 @@ $
])
]
== Arbeitspunkt und Lastgerade
#grid(columns: 3*(1fr,),[
#scale(80%, reflow: true, [
#zap.canvas({
import zap: *
import zap.draw: *
out("UEE", (0,0))
arrow((0,0), (0,-2), $u_e$)
ground("UEA", (0,-2))
out("", (0,-2))
capacitor("", (0,0), (2,0))
resistor("RG2", (2,0), (2,-2), label: (content: $R_"G2"$, anchor: "south"))
ground("", (2,-2))
resistor("RG1", (2,3),(2,0), i: (label: $i_a$, position: bottom), label: (content: $R_"G1"$, anchor: "south"))
wire((2,0), (3,0))
nmos("Q", (4,0.5))
wire("Q.s", (rel: (0,-2)))
ground("", (4,-2))
resistor("RD", (4,3), (4,1), i: $i_D$, label: (content: $R_D$))
wire((2,3), (6,3))
out("Ub", (6,3))
content((6,3), anchor: "west", padding: 5pt, $U_b = 2 V$)
capacitor("", (4,1), (6,1))
out("UAE", (6,1))
arrow((6,1),(6,-2), $U_a$)
ground("", (6,-2))
out("UAA", (6,-2))
})
])
],[
$
U_b = U_"DS1" + R_D dot I_D \
<=> I_D = (U_b - U_"DS1") / R_D
$
$
P 1: I_D (U_"DS1" = 0) = U_D / R_D = 16"mA" \
P 2: I_D (U_"DS1" = U_b = 2 V) = 0
$
],[
#v(-1cm)
#zap.canvas({
import zap.draw: *
plot.plot(name: "plot", size: (5,5),
x-label: $U_"DS1" "in V"$,
y-label: $I_D "in mA"$,
y-tick-step: 4,
x-tick-step: .5,
y-min: 0, y-max: 16,
x-min: 0, x-max: 2.1,
{
plot.add-anchor("AP", (1,8))
plot.add-anchor("P1", (2,0))
plot.add(((0,16), (2,0)))
plot.add(domain: (0.00001,2.1), u => 2 * calc.log(u) + 2)
plot.add(domain: (0.00001,2.1), u => 1.5 * calc.log(u) + 5)
plot.add(domain: (0.00001,2.1), u => 1 * calc.log(u) + 8)
plot.add(domain: (0.00001,2.1), u => .5 * calc.log(u) + 11)
plot.add(domain: (0.00001,2.1), u => .2 * calc.log(u) + 14)
plot.annotate({
content((2.7,3), anchor: "east", padding: 0, $U_"GS1" = 0,8 V$)
content((2.7,6), anchor: "east", padding: 0, $U_"GS1" = 0,9 V$)
content((2.7,9), anchor: "east", padding: 0, $U_"GS1" = 1,0 V$)
content((2.7,12), anchor: "east", padding: 0, $U_"GS1" = 1,1 V$)
content((2.7,15), anchor: "east", padding: 0, $U_"GS1" = 1,2 V$)
})
plot.annotate({
content((1,8), $times$)
content((1,8), anchor: "north", padding: 20pt, [AP])
content((2,0), $times$)
content((2,0), anchor: "north", padding: 20pt, [P1])
content((0,16), $times$)
content((0,16), anchor: "north", padding: 20pt, [P2])
})
})
})
])
#v(-1.3cm)
$
"Einstellen sodass " U_"GS1" = 1 V": " & R_"G1" + R_"G2" = U_D / I_D =^! (2 V) / (8"mA") = 25 k Omega \
&R_"G1" / (R_"G1" + R_"G2") =^! U_"GS1" = 1 V \
&R_"G2" / (R_"G1" + R_"G2") dot U_D =^! U_D - U_"GS1" = 1 V => R_"G1" = R_"G2" =
&12,5 k Omega
$
NOT #box(align(horizon, stack(dir:ltr, rect[1],circle(radius: 3pt))))
AND #box(rect[&])
OR #box(rect[$>=1$])