diff --git a/src/cheatsheets/Schaltungstheorie.typ b/src/cheatsheets/Schaltungstheorie.typ index cd5a139..a4460f5 100644 --- a/src/cheatsheets/Schaltungstheorie.typ +++ b/src/cheatsheets/Schaltungstheorie.typ @@ -1,9 +1,11 @@ -#import "../lib/common_rewrite.typ" : * #import "@preview/mannot:0.3.1" #import "@preview/zap:0.5.0" #import "@preview/cetz:0.4.2" -#import "../lib/circuit.typ" : * #import "@preview/unify:0.7.1": num,qty,unit +#import "@preview/cetz-plot:0.1.3" + +#import "../lib/common_rewrite.typ" : * +#import "../lib/circuit.typ" : * #set math.mat(delim: "[") #show math.equation.where(block: true): it => math.inline(it) @@ -164,6 +166,13 @@ $L_"ges" = L_1 parallel L_2$, $C_"ges" = C_1 parallel C_2$, $C_"ges" = C_1 + C_2$, + + $U_"ges" = U_1 + U_2$, + $U_"ges" = U_1 = U_2$, + $I_"ges" = I_1 = I_2$, + $I_"ges" = I_1 + I_2$, + [In $U$-Richtung Addieren], + [In $I$-Richtung Addieren], ) ] @@ -189,6 +198,108 @@ ) ] + // Lineare Quelle + #bgBlock(fill: colorEineTore)[ + #subHeading(fill: colorEineTore)[Lineare Quelle] + + #align( + center+horizon, + cetz.canvas({ + import cetz.draw: * + import cetz-plot: * + plot.plot(size: (3, 3), name: "plot", + axis-style: "school-book", + x-label: "u", y-label: "i", + x-tick-step: none, y-tick-step: none, + axes: ("u", "i"), + x-min: -1, x-max: 2, x-grid: "both", + y-min: -2, y-max: 1, y-grid: "both", { + plot.add(((-2, -3), (3,2))) + plot.add-anchor("u0", (1,0)) + plot.add-anchor("i0", (0,-1)) + }) + + content("plot.u0", $U_0$, anchor: "south", padding: .2) + content("plot.i0", $-I_0$, anchor: "east", padding: .2) + + mark("plot.u0", 0deg, symbol: "+", fill: black) + mark("plot.i0", 0deg, symbol: "+", fill: black) + + line("plot.i0", (horizontal: "plot.u0", vertical: "plot.i0"), "plot.u0", stroke: (dash: "dashed", paint: rgb("#005c00"))) + + content((horizontal: "plot.u0", vertical: "plot.i0"), anchor: "south-west", text(rgb("#005c00"))[$R$], padding: 0.1) + }) + ) + + $U_0$: LL-Spannung ($i = 0 => u = U_0$) \ + $I_0$: KS-Strom ($u = 0 => i = -I_0$) + + $R_i$: Innenwiderstand $R_i = U_0/I_0$ + + #table( + columns: (1fr, 1fr), + fill: (x, y) => if calc.rem(x, 2) == 1 { tableFillLow } else { tableFillHigh }, + inset: 3mm, + align(center, [*$u$-gesteuert*]), + align(center, [*$i$-gesteuert*]), + + align( + horizon+center, + zap.circuit({ + import zap : * + import cetz.draw + + zap.resistor("R1", (1, 0), (1, -1.5), fill: none, width: 0.8, height: 0.3) + zap.isource("I0", (0, 0), (0, -1.5), fill: none, scale: 0.6, i: (content: $-I_0$, distance: 6pt, label-distance: -11pt, anchor: "west", invert: true)) + node("N0", "R1.in") + node("N0", "R1.out") + + wire("I0.out", "R1.out", (rel: (0.5, 0))) + wire("I0.in", "R1.in") + wire("R1.in", (rel: (0.5, 0)), i: (content: $i$, invert: true)) + + cetz.draw.content((0.62, -0.75), [$R$]) + cetz.draw.set-style(mark: (end: ">", fill: black, scale: 0.6)) + cetz.draw.content((1.7, -0.75), [$u$]) + cetz.draw.line((1.5, -0.1), (1.5, -1.4), stroke: 0.5pt) + }) + ), + align( + horizon+center, + zap.circuit({ + import zap : * + import cetz.draw + + zap.vsource("U0", (0, 0), (0, -1.5), fill: none, scale: 0.6, u: (content: $U_0$, distance: -4pt, label-distance: -8pt, anchor: "south-west", invert: true)) + zap.resistor("R1", (0, 0), (1.75, 0), fill: none, width: 0.8, height: 0.3, + i: (content: $i$, invert: true, distance: 0.3) + ) + wire((0, -1.5), (1.75, -1.5)) + + cetz.draw.content((0.62, -0.75), [$R$]) + cetz.draw.set-style(mark: (end: ">", fill: black, scale: 0.6)) + cetz.draw.content((1.95, -0.75), [$u$]) + cetz.draw.line((1.75, -0.1), (1.75, -1.4), stroke: 0.5pt) + }) + ), + + [ + $u = R_i i + u_0$ \ + + ], + [ + $i = 1/R_i u - I_0$ + ], + + table.cell(colspan: 2)[ + #align($-->$) + ], + table.cell(colspan: 2)[ + $<--$ + ], + ) + ] + // Quell Wandlung #bgBlock(fill: colorEineTore)[ #subHeading(fill: colorEineTore)[Quelle Wandlung] @@ -245,14 +356,14 @@ $R_i=1/G_i$ - $r(i) = R_i i + U_0$ + $u = r(i) = R_i i + U_0$ ], [ $I_0 = U_0 G_i$ $G_i=1/R_i$ - $g(u) = G_i u + I_0$ + $i = g(u) = G_i u + I_0$ ] ); ] @@ -786,12 +897,16 @@ $E_L = Phi^2/2L = (L i^2)/2$ ], [ - $C$: Admetanz $hat(=) G$ + $C$: Admittanz $hat(=) G$ ], [], [ $L$: Impedanz $hat(=) R$ ] ) + + Admittanz: $Y = I/U$\ + Impedanz: $Z = U/I$ + ] // Reaktive Dual Wandlung @@ -836,18 +951,26 @@ U_"ges"^2 = U_1^2 + 2 U_1 U_2 + U_2^2 \ tan(phi) = (U_2 sin(phi))/(U_1 + U_2 cos(phi)) $ + ] - *Levi's Lustig Leistung* + #bgBlock(fill: colorComplexAC)[ + #subHeading(fill: colorComplexAC)[*Levi's Lustig Leistung*] - $(P =) space underline(S) = underline(U) dot underline(I)^*$\ + $P = 1/2 U dot I^*$\ #table( columns: (auto, 1fr, auto), fill: (x, y) => if calc.rem(y, 2) == 0 { tableFillLow } else { tableFillHigh }, [Scheinleitsung], [$(P_s =) space abs(underline(S))$], [$["VA"]$], - [Wirkleistung], [$(P_w =) space P = "Real"(underline(S)) $], [$["W"]$], - [Blindleistung], [$(P_b =) space Q = "Imag"(underline(S))$], [$["var"]$] + [Wirkleistung], [$(P_w =) space P = "Re"{} $], [$["W"]$], + [Blindleistung], [$(P_b =) space Q = "Im"{}$], [$["var"]$] ) + + Bei Wiederstand: $R$ + + $P_w = U_m^2 / 2R = (I_m^2 R)/2$ + + $U_"eff" = U_m/sqrt(2), I_"eff" = I_m / sqrt(2)$ ] // Komplexe Zahlen diff --git a/src/lib/common_rewrite.typ b/src/lib/common_rewrite.typ index e19e38f..71d53be 100644 --- a/src/lib/common_rewrite.typ +++ b/src/lib/common_rewrite.typ @@ -28,7 +28,7 @@ } #let tableFillHigh = white -#let tableFillLow = color.lighten(gray, 30%) +#let tableFillLow = color.lighten(gray, 50%) #let sinTable = [ #let data = json("../sintable.json") diff --git a/src/lib/fetModel.typ b/src/lib/fetModel.typ index 6661e0d..8639b6a 100644 --- a/src/lib/fetModel.typ +++ b/src/lib/fetModel.typ @@ -1,4 +1,6 @@ #import "@preview/zap:0.5.0" +#import "@preview/cetz-plot:0.1.3" + #set page(width: auto, height: auto) @@ -240,3 +242,49 @@ rect((2.5, -1.2), (3, -1.5), fill: rgb("#fffc61"), stroke: none, name: "siO2") content("siO2", [oxide], anchor: "west", padding: 0.3) }) + +#let FetPlot() = { + let u_gs = 1 + let beta = 1 + + cetz.canvas({ + import cetz-plot: plot + import cetz: draw.content + + cetz.draw.set-style(axes: ( + shared-zero: false, + overshoot: 0.2, + x: (mark: (end: ">", fill: black, scale: 0.6)), + y: (mark: (end: ">", fill: black, scale: 0.6)), + )) + + plot.plot( + size: (2, 2), + name: "plot", + axis-style: "school-book", + x-min: 0, + x-tick-step: none, + y-tick-step: none, + x-label: $U_"GS"$, + y-label: $U_"DS"$, + { + plot.add-fill-between(domain: (1, 6), ((1, 0), (1, 5)), u_gs => u_gs - u_t) + + plot.add(domain: (0, 5), fill: true, axes: ("y", "x"), _ => 1) + + plot.add(domain: (1, 6), fill: true, u_gs => u_gs - u_t) + + plot.add-anchor("I", (0.5, 2.5)) + plot.add-anchor("II", (4.5, 1.5)) + plot.add-anchor("III", (2.5, 3.5)) + + plot.add-anchor("ut", (u_t, 0)) + } + ) + content("plot.ut", $U_t$, anchor: "north", padding: 0.1) + + content("plot.I", [I]) + content("plot.II", [II]) + content("plot.III", [III]) + }) +} \ No newline at end of file