diff --git a/assets/04_properties.png b/assets/04_properties.png new file mode 100644 index 0000000..1e745b9 Binary files /dev/null and b/assets/04_properties.png differ diff --git a/assets/05_footprint_assign.png b/assets/05_footprint_assign.png new file mode 100644 index 0000000..bf1bffe Binary files /dev/null and b/assets/05_footprint_assign.png differ diff --git a/assets/06_update_pcb.png b/assets/06_update_pcb.png new file mode 100644 index 0000000..10b891e Binary files /dev/null and b/assets/06_update_pcb.png differ diff --git a/assets/07_routing.png b/assets/07_routing.png new file mode 100644 index 0000000..adc352a Binary files /dev/null and b/assets/07_routing.png differ diff --git a/assets/10_drc.png b/assets/10_drc.png new file mode 100644 index 0000000..6e0084f Binary files /dev/null and b/assets/10_drc.png differ diff --git a/assets/12_stackup.png b/assets/12_stackup.png new file mode 100644 index 0000000..6fbcca8 Binary files /dev/null and b/assets/12_stackup.png differ diff --git a/assets/13_2layer_jlc.png b/assets/13_2layer_jlc.png new file mode 100644 index 0000000..d2831ff Binary files /dev/null and b/assets/13_2layer_jlc.png differ diff --git a/assets/13_4layer_jlc.png b/assets/13_4layer_jlc.png new file mode 100644 index 0000000..13558c8 Binary files /dev/null and b/assets/13_4layer_jlc.png differ diff --git a/presentation.typ b/presentation.typ index 38c3adb..1673ae2 100644 --- a/presentation.typ +++ b/presentation.typ @@ -1,5 +1,5 @@ // ============================================================================ -// presentation.typ — KiCad: vom Schaltplan zum Gerber (4 Layer als Standard) +// presentation.typ - KiCad: vom Schaltplan zum Gerber (4 Layer als Standard) // // Bauen: make presentation.pdf bzw. typst compile presentation.typ // @@ -11,14 +11,14 @@ // (Name steht im Platzhalter, z. B. assets/07-routing.png) // 3. Die `shot(...)`-Zeile durch ein Bild ersetzen, z. B. // #img("assets/07-routing.png", width: 76%, caption: [Routing in Pcbnew]) -// Die Folie „Screenshot-Checkliste“ am Ende listet die fehlenden Aufnahmen. +// Die Folie "Screenshot-Checkliste" am Ende listet die fehlenden Aufnahmen. // ============================================================================ #import "template.typ": * // ---- Palette-Erweiterung (nur für die Querschnitts-Diagramme) -------------- #let cu = ember // Kupfer -> Terrakotta aus der Deck-Palette -#let mask = accent // Lötstopp -> Petrol („blaue Platine“) +#let mask = accent // Lötstopp -> Petrol ("blaue Platine") #let fr4 = luma(226) // FR4-Kern #let prepreg = luma(238) // Prepreg @@ -58,6 +58,15 @@ }, ) +// Ganze Folie für einen Screenshot: großes Bild + kleine Bildunterschrift. +#let shot-slide(title, path, height: 250pt, caption: none) = slide(title: title)[ + #align(center, image(path, height: height)) + #if caption != none [ + #v(0.2em) + #align(center, text(size: 0.75em, fill: luma(110))[#caption]) + ] +] + // Schichtband: lückenlos gestapelt (Grid mit row-gutter 0 = kein Par-Abstand). #let _layer(fill, h, round: none) = rect( width: 100%, @@ -95,11 +104,11 @@ grid( row-gutter: 3pt, _sw(mask.lighten(40%), [Lötstopp]), - _sw(cu, [Kupfer 35 µm — Signale]), + _sw(cu, [Kupfer 35 µm - Signale]), _sw(prepreg, [Prepreg ≈ 0,2 mm]), - _sw(accent, [In1.GND — Masse]), + _sw(accent, [In1.GND - Masse]), _sw(fr4, [FR4-Kern ≈ 1,0 mm]), - _sw(accent-soft, [In2.PWR — Versorgung]), + _sw(accent-soft, [In2.PWR - Versorgung]), ), ) @@ -153,14 +162,14 @@ #show: presentation.with( title: "KiCad", - subtitle: "Vom Schaltplan zur fertigen Platine — 4 Layer als Standard", + subtitle: "Vom Schaltplan zur fertigen Platine - 4 Layer als Standard", author: "Your Name", ) #slide(title: "Ablauf")[ - *Was ist KiCad?* · Projekt & Schaltplan - *Layout*: Platzieren · Routen · Zonen · Prüfen - - *4 Layer* statt 2 — warum + - *4 Layer* statt 2 - warum - *Praxis*: USB-C & 5 V · 0-Ω-Retter · Löten - *Fertigung*: Gerber · Kosten · China vs. EU #v(0.6em) @@ -191,7 +200,7 @@ _kbox("7 · Test", "läuft alles?"), ) #v(0.8em) - Heute: Schritte 1–3 in KiCad — ab 4 übernimmt die Fertigung. + Heute: Schritte 1-3 in KiCad - ab 4 übernimmt die Fertigung. ] // =================================================================== @@ -205,7 +214,7 @@ [ - Leiterplattendesignsoftware - Schaltplan und Layout - - git support — Projektdateien sind Text + - git support - Projektdateien sind Text - Windows / Linux / Mac - vom CERN, open source ], @@ -221,18 +230,18 @@ ] #slide(title: "Projekt & Schaltplan")[ - - An Beispielschaltungen aus dem Datenblatt orientieren — platzieren, verdrahten - - Sorgfalt und Zeit investieren — sauber gruppieren, nach Funktion: + - An Beispielschaltungen aus dem Datenblatt orientieren - platzieren, verdrahten + - Sorgfalt und Zeit investieren - sauber gruppieren, nach Funktion: - Stecker & Montage - - Stromversorgung — geht an alle anderen Gruppen + - Stromversorgung - geht an alle anderen Gruppen - Zentraler Prozessor + Debug - - Funktionale Gruppen — z. B. Schaltergruppe 1: Schalter + Sensor + LED + … + - Funktionale Gruppen - z. B. Schaltergruppe 1: Schalter + Sensor + LED + ... ] #slide(title: "Beispiel: gruppierte Schaltung")[ #align(center, image("assets/02_schaltplan.png", height: 278pt)) #v(0.2em) - #align(center, text(size: 0.75em, fill: luma(110))[Jede Funktionsgruppe bekommt ihren eigenen Kasten — so bleibt der Plan lesbar.]) + #align(center, text(size: 0.75em, fill: luma(110))[Jede Funktionsgruppe bekommt ihren eigenen Kasten - so bleibt der Plan lesbar.]) ] #slide(title: "Bauteile & Lieferbarkeit")[ @@ -240,9 +249,9 @@ columns: (1.15fr, 1fr), gutter: 1.2em, [ - - Direkt beim Zeichnen konkret aussuchen — was es gibt und was lieferbar ist - - „irgendein 100 nF" ist okay — „der Schaltregler, aber in der 5-V-Variante" nicht - - Check: LCSC · Mouser · DigiKey — Lagerstand, Preis bei 1 / 10 / 100 Stück + - Direkt beim Zeichnen konkret aussuchen - was es gibt und was lieferbar ist + - "irgendein 100 nF" ist okay - "der Schaltregler, aber in der 5-V-Variante" nicht + - Check: LCSC · Mouser · DigiKey - Lagerstand, Preis bei 1 / 10 / 100 Stück - LCSC-Nummer als Feld ins Symbol → fertige Stückliste - Schönster Schaltplan nützt nichts *ohne Bauteile* ], @@ -250,42 +259,48 @@ ) ] -#slide(title: "ERC — Schaltung prüfen")[ +#slide(title: "ERC - Schaltung prüfen")[ - `Prüfen → Elektrische Regeln prüfen` - Findet: offene Pins · vergessene Drähte · fehlende `PWR_FLAG` - - Warnungen *beheben* — nicht wegklicken + - Warnungen *beheben* - nicht wegklicken - ERC grün → weiter zum Layout #v(0.4em) - #img("assets/03_erc.png", width: 62%, caption: [ERC-Dialog: 10 Fehler — genau die müssen weg]) + #img("assets/03_erc.png", width: 62%, caption: [ERC-Dialog: 10 Fehler - genau die müssen weg]) ] // =================================================================== #section("Layout-Workflow", note: "Der Standard-Workflow") // =================================================================== -#slide(title: "Footprints zuweisen & importieren")[ +#slide(title: "Footprints zuweisen")[ - `Werkzeuge → Footprints zuweisen`: Symbol → Gehäuse - Mechanische Maße vorher im Datenblatt prüfen - - Pcbnew: `PCB aus Schaltplan aktualisieren` — Bauteile landen auf der Platine - #v(0.5em) - #grid( - columns: (1fr, 1fr), - gutter: 1.2em, - shot("05_footprint_zuweisung", [Dialog „Footprints zuweisen“: Symbol / Footprint / Vorschau]), - shot("06_update_pcb", [Dialog „PCB aus Schaltplan aktualisieren“ mit Änderungsliste]), - ) ] +#shot-slide( + "Footprint Chooser", + "assets/05_footprint_assign.png", + height: 255pt, + caption: [Filter + Vorschau: passt das Gehäuse zum Symbol?], +) + +#shot-slide( + "PCB aus Schaltplan aktualisieren", + "assets/06_update_pcb.png", + height: 255pt, + caption: [`Tools → Update PCB from Schematic` (F8) - Bauteile landen auf der Platine], +) + #slide(title: "Setup, Umriss & Platzieren")[ #grid( columns: (1.5fr, 1fr), gutter: 1.4em, [ - - *Board-Setup*: Netz-Klassen (Signal 0,25 mm · PWR 0,5–0,8 mm), \ + - *Board-Setup*: Netz-Klassen (Signal 0,25 mm · PWR 0,5-0,8 mm), \ Via 0,6/0,3 mm - Umriss auf *Edge.Cuts* (z. B. 80 × 50 mm) - Platzieren nach *Signalfluss*: - - Stecker & Befestigung zuerst — festpinnen + - Stecker & Befestigung zuerst - festpinnen - ICs hin → Entkopplungs-Cs direkt an die Versorgungspins ], shot("07_floorplan", [Pcbnew: Umriss + platzierte Footprints mit Ratsnest]), @@ -293,25 +308,21 @@ ] #slide(title: "Routen")[ - #grid( - columns: (1.3fr, 1fr), - gutter: 1.4em, - [ - - `X` — *kritische Signale zuerst*: Takt · PWM · Analog - - Kurze Wege, wenige Vias - - `V` beim Routen → Via, Lagewechsel - - PWR breiter (Netz-Klasse) · GND → Massefläche - - Raster: 1,27 / 0,635 mm (THT) · 0,25 mm (SMD) - ], - shot( - "08_routing", - [Leiterbahn beim Routen, Lagen-Widget auf „F.Cu“], - tip: [Live-Demo-fähig halten: gleiche Ansicht später am Beamer], - ), - ) + - `X` - *kritische Signale zuerst*: Takt · PWM · Analog + - Kurze Wege, wenige Vias + - `V` beim Routen → Via, Lagewechsel + - PWR breiter (Netz-Klasse) · GND → Massefläche + - Raster: 1,27 / 0,635 mm (THT) · 0,25 mm (SMD) ] -#slide(title: "Zonen — GND-Fläche")[ +#shot-slide( + "Routen in Pcbnew", + "assets/07_routing.png", + height: 250pt, + caption: [F.Cu - die dünnen Linien (Ratsnest) zeigen, welche Verbindungen noch fehlen], +) + +#slide(title: "Zonen - GND-Fläche")[ - Werkzeug *Kupferfläche*: Netz *GND* · Lage wählen \ (4 Layer: In1.GND · 2 Layer: B.Cu) - Thermische Reliefs für Pads @@ -322,23 +333,25 @@ #shot( "09_zone", [Zonen-Eigenschaften: Netz GND, Lage B.Cu, Füllparameter], - tip: [Rechtsklick auf die Fläche → „Flächen…“], + tip: [Rechtsklick auf die Fläche → "Flächen..."], ) ] #slide(title: "Prüfen & Exportieren")[ - - *DRC — nie vergessen!* Nach dem Layout + *nochmal vor dem Export* + - *DRC - nie vergessen!* Nach dem Layout + *nochmal vor dem Export* - *3D-Viewer*: kollidieren Gehäuse & Stecker? - Export: Gerber X2 + Bohrdaten → ZIP → Fertigung #v(0.5em) - #grid( - columns: (1fr, 1fr), - gutter: 1.2em, - shot("10_drc", [DRC-Dialog, Ergebnisliste „0 Verstöße“]), - shot("11_3d_viewer", [3D-Betrachter: fertige Platine mit Bauteilen]), - ) + #shot("11_3d_viewer", [3D-Betrachter: fertige Platine mit Bauteilen]) ] +#shot-slide( + "DRC", + "assets/10_drc.png", + height: 195pt, + caption: [16 Warnungen - jede anschauen und verstehen, nicht wegklicken], +) + // =================================================================== #section("4-Layer", note: "Stackup, Masse & Versorgung") // =================================================================== @@ -348,7 +361,7 @@ columns: (1.6fr, 1fr), gutter: 1.4em, [ - - *4 Lagen als Standard* — Aufpreis klein, Nutzen groß + - *4 Lagen als Standard* - Aufpreis klein, Nutzen groß - Massefläche unter jedem Signal → weniger Abstrahlung - Impedanzkontrolle (USB · Ethernet · Funk) - Versorgung als eigene Lage @@ -359,17 +372,26 @@ ) ] +#shot-slide( + "Preis: 2 Lagen", + "assets/13_2layer_jlc.png", + height: 165pt, + caption: [JLCPCB, 50 × 50 mm, 5 Stück: 20,56 \$ - davon 16,56 \$ für "Via Covering", eine Option, die man selten braucht], +) + +#shot-slide( + "Preis: 4 Lagen", + "assets/13_4layer_jlc.png", + height: 165pt, + caption: [Gleiche Größe: 8,00 \$ (Aktion) - vier Lagen sind hier billiger als zwei], +) + #slide(title: "Advanced: Stackup in KiCad einrichten")[ - Board-Setup → *Stapelaufbau*: Innenlagen anlegen, benennen, Dicken eintragen - *Impedanz* im selben Dialog: Ziel 50 Ω → empfohlene Bahnbreite - Netzklassen & Abstände wie gehabt #v(0.4em) - #grid( - columns: (1fr, 1fr), - gutter: 1.2em, - shot("12_stackup", [Board-Setup → Stapelaufbau: 4 Kupferlagen, Dicken, Dielektrika]), - shot("13_stackup_shop", [4-Layer Setup from JLCPCB]), - ) + #img("assets/12_stackup.png", width: 92%, caption: [Physical Stackup: hier über "Copper layers" auf 4 Kupferlagen erhöhen]) ] #slide(title: "Layout-Aufgaben bei 4 Layern")[ @@ -377,7 +399,7 @@ columns: (1.1fr, 1fr), gutter: 1.4em, [ - - *GND-Ebene durchgehend halten* — Schlitze = Rückstromfallen + - *GND-Ebene durchgehend halten* - Schlitze = Rückstromfallen - *GND-Via direkt neben* dem Signal-Via - *Stitching-Vias* regelmäßig verteilen - Entkopplung: Pad → Via → Plane, so kurz wie möglich @@ -395,20 +417,22 @@ #section("Praxis-Fragen", note: "Erfahrungswerte fürs erste Board") // =================================================================== -#slide(title: "Wie fange ich an?")[ +#slide(title: "Wie starte ich?")[ - *Klein anfangen*: eine Platine, ein Ziel \ - (z. B. Versorgung + MCU-Modul — das Vortrags-Beispiel) + (z. B. Versorgung + MCU-Modul - das Vortrags-Beispiel) - *Bewährtes kopieren*: Referenzdesigns · Open-Source-Boards - - Revision 1 = Lernprojekt: *2–3 Anläufe* sind normal + - Revision 1 = Lernprojekt: *2-3 Anläufe* sind normal + - Beispiel Busanzeiger: Versorgung · Mikrocontroller · Display-Anbindung ] -#slide(title: "USB-C & 5 V — ein gutes Konzept?")[ - - *Ja — guter Standard*: robust · überall verfügbar · nur 5 V +#slide(title: "USB-C & 5 V - ein gutes Konzept?")[ + - *Ja - guter Standard*: robust · überall verfügbar · nur 5 V - *CC1 & CC2: je 5,1 kΩ nach GND* \ - — sonst liefert die Quelle keinen Strom - - A/B-Pins *gespiegelt, nicht gedreht* — Footprint prüfen - - USB-2: A6↔B6 (D+) · A7↔B7 (D−) + - sonst liefert die Quelle keinen Strom + - A/B-Pins *gespiegelt, nicht gedreht* - Footprint prüfen + - USB-2: A6↔B6 (D+) · A7↔B7 (D-) - VBUS: *nicht zurückeinspeisen* + - Schützen mit Verpoldiode + ESD-Netzwerk #v(0.4em) #src[Rd (5,1 kΩ): USB-IF, USB Type-C Spec] ] @@ -418,7 +442,7 @@ - Grundset bringt schon den Großteil: - durchgehende *GND-Fläche* (deshalb 4 Layer) - *Entkopplungs-Cs* an jeden Versorgungspin - - Einplanen: *2–3 Revisionen* + *Yellow-Wire* für Rev. 1 + - Einplanen: *2-3 Revisionen* + *Yellow-Wire* für Rev. 1 ] #slide(title: "Wie flexibel designen?")[ @@ -430,9 +454,9 @@ #slide(title: "Retter in der Not: 0 Ω & 1 R")[ - *0 Ω in Serie* zu Strom- & heiklen Signalleitungen \ - — im Notfall: austauschen · überbrücken - - Gehäuse: *0805 / 0603 — nicht kleiner* (handlötbar) - - *1 R in 0805 als Sicherung* — geht durch statt abzufackeln + - im Notfall: austauschen · überbrücken + - Gehäuse: *0805 / 0603 - nicht kleiner* (handlötbar) + - *1 R in 0805 als Sicherung* - geht durch statt abzufackeln ] // =================================================================== @@ -440,35 +464,35 @@ // =================================================================== #slide(title: "Bestückung: klein nach groß")[ - - *Klein nach groß* — sonst kommt der Lötkolben nicht mehr dran - - *Erst SMD, dann THT* — Stecker blockieren sonst SMD-Plätze + - *Klein nach groß* - sonst kommt der Lötkolben nicht mehr dran + - *Erst SMD, dann THT* - Stecker blockieren sonst SMD-Plätze - *Zoom nicht übertreiben*: Bildschirm ≠ Realität - SMD in einem Rutsch: Lötpaste → setzen → Hotplate / Heißluft - - Bestückungsdruck? *Nein* — erst ab ~10 000 Stück + - Bestückungsdruck? *Nein* - erst ab ~1 000 Stück ] -#slide(title: "Equipment — was lohnt sich?")[ +#slide(title: "Equipment - was lohnt sich?")[ #grid( columns: (1fr, 1fr), gutter: 1.2em, panel(c: accent)[ *Kaufen (ja)* - - *Lötkolben* — temperaturgeregelt, feine Spitzen - - *Hotplate* — SMD-Lötpaste im kleinen Reflow - - *Heißluftfön* — Rework · QFN/DFN + - *Lötkolben* - temperaturgeregelt, feine Spitzen + - *Hotplate* - SMD-Lötpaste im kleinen Reflow + - *Heißluftfön* - Rework · QFN/DFN - *Lötpaste & Lötzinn* ], panel(c: ember)[ *Eher nicht / später* - - Reflow-Ofen — Hotplate reicht - - Automatischer Picker — Pinzette tut's - - Großes Mikroskop — USB-Mikroskop reicht + - Reflow-Ofen - Hotplate reicht + - Automatischer Picker - Pinzette tut's + - Großes Mikroskop - USB-Mikroskop reicht ], ) ] #slide(title: "Factory-Bestückung (PCBA)")[ - - *Lohnt sich — öfter als gedacht* (JLCPCB · AISLER) + - *Lohnt sich - öfter als gedacht* (JLCPCB · AISLER) - V. a. bei *feinen Gehäusen*: 0402 · QFN · BGA - Aus KiCad: *BOM* + *Pick-and-Place* \ (`Datei → Fertigungsoutputs`) @@ -487,7 +511,7 @@ ] #slide(title: "Gerber & Bohrdaten")[ - - `Fertigungsoutputs → Plotten…`: *Gerber X2* + - `Fertigungsoutputs → Plotten...`: *Gerber X2* - Kupfer · Lötstopp · Bestückungsdruck · Umriss - Bohrdaten (Excellon) separat → beides ins ZIP - Kontrolle in *GerbView*: jede Lage durchschauen @@ -506,16 +530,16 @@ stroke: (bottom: 0.5pt + luma(210)), inset: (x: 4pt, y: 2.5pt), [*Stückzahl*], [*Richtwert (kleine 4-Layer-Platine, China)*], - [1–5], [ca. 10–25 € — fast nur Grundgebühr, Panel & Versand], - [10], [kaum teurer als 5 — Setup einmal bezahlt], - [100], [ca. 1–2 € pro Stück], - [1000], [ca. 0,3–0,8 € pro Stück], + [1-5], [ca. 10-25 € - fast nur Grundgebühr, Panel & Versand], + [10], [kaum teurer als 5 - Setup einmal bezahlt], + [100], [ca. 1-2 € pro Stück], + [1000], [ca. 0,3-0,8 € pro Stück], ) #v(0.4em) - *Kleinmengen = Fixkosten*: Setup · Panel · Versand - Preis-Treiber: *Fläche · Lagenzahl · Mindestabstände* · Menge #v(0.3em) - #src[Richtwerte — aktuell immer im Preisrechner prüfen (jlcpcb.com, aisler.net)] + #src[Richtwerte - aktuell immer im Preisrechner prüfen (jlcpcb.com, aisler.net)] ] #slide(title: "China oder EU?")[ @@ -523,14 +547,15 @@ columns: (1fr, 1fr), gutter: 1.2em, panel(c: ember)[ - *China — JLCPCB, PCBWay, SEEED* + *China - JLCPCB, PCBWay, SEEED* - sehr günstig · riesige Auswahl - - Versand 1–2 Wochen + - Versand 1-2 Wochen - lange Transportwege ], panel(c: accent)[ - *EU — AISLER, Beta layout, Würth* - - Faktor 2–5 teurer · schnell & unkompliziert + *EU - AISLER, Beta layout, Würth* + - Direkt sichtbar? Faktor 2-5 teurer · schnell & unkompliziert + - Eigentlich: Preisunterschied egal - deutschsprachiger Support · Gewährleistung - kurze Wege → besser für Umwelt & Klima ], @@ -541,40 +566,33 @@ #slide(title: "Screenshot-Checkliste")[ #set text(size: 11.5pt) - Noch fehlende Aufnahmen — machen, als `assets/.png` speichern, \ - `shot(...)` durch `img(...)` ersetzen (01–04 sind drin): + Noch fehlende Aufnahmen - machen, als `assets/.png` speichern, \ + `shot(...)` durch `img(...)` ersetzen: #v(0.4em) #table( columns: (auto, auto, 1fr), stroke: (bottom: 0.5pt + luma(210)), inset: (x: 4pt, y: 2.5pt), [*Nr*], [*Datei*], [*Motiv*], - [05], [footprint_zuweisung], [Dialog „Footprints zuweisen“], - [06], [update_pcb], [Dialog „PCB aus Schaltplan aktualisieren“], [07], [floorplan], [Pcbnew: Umriss + platzierte Footprints + Ratsnest], - [08], [routing], [Routing aktiv, Lagen-Widget unten links], [09], [zone], [Zonen-Eigenschaften (GND, B.Cu)], - [10], [drc], [DRC-Dialog mit Ergebnis], [11], [3d_viewer], [3D-Ansicht der fertigen Platine], - [12], [stackup], [Board-Setup → Stapelaufbau mit 4 Kupferlagen], - [13], [impedanz], [Impedanzwerte im Stapelaufbau-Dialog], - [14], [4l_fertig], [4-Layer-Board, nur In1.GND sichtbar], [15], [plot], [Plot-Dialog mit Gerber X2 und Layer-Liste], [16], [gerbview], [GerbView mit geladenen Lagen], ) ] #slide(title: "Quellen & Links")[ - - `docs.kicad.org` — Handbuch & Getting Started (de/en) - - `kicad.org` — Downloads · Release Notes · Blog - - `forum.kicad.info` — Community-Forum + - `docs.kicad.org` - Handbuch & Getting Started (de/en) + - `kicad.org` - Downloads · Release Notes · Blog + - `forum.kicad.info` - Community-Forum - Design-Rules der Fertigung (JLCPCB · PCBWay · AISLER) \ - — vor dem Layout ins Board-Setup + - vor dem Layout ins Board-Setup ] #slide(title: "Diskussion")[ - Was zeigen wir *live*? (Layout-Demo ~15 min) - Wovon wollt ihr mehr? Kosten · PCBA · EMV · Impedanz #v(1em) - #align(center, text(size: 1.3em, weight: "bold")[Danke — Fragen?]) + #align(center, text(size: 1.3em, weight: "bold")[Danke - Fragen?]) ]