// ============================================================================ // presentation.typ — KiCad: vom Schaltplan zum Gerber (4 Layer als Standard) // // Bauen: make presentation.pdf bzw. typst compile presentation.typ // // Screenshots: // Die Folien enthalten Platzhalter (`shot(...)`), die genau beschreiben, // welche KiCad-Aufnahme fehlt. So wird's ersetzt: // 1. Screenshot in KiCad machen (Fenster vorher auf ~16:9-Zuschnitt bringen) // 2. Als PNG speichern unter assets/.png // (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 alle 15 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 fr4 = luma(226) // FR4-Kern #let prepreg = luma(238) // Prepreg // ---- Helfer ----------------------------------------------------------------- // Quellenzeile am Folienboden (wie in presentation01.typ). #let src(body) = { v(0.3em) block( width: 100%, fill: paper.darken(3%), inset: (x: 6pt, y: 3.5pt), radius: 2pt, text(size: 9.5pt, fill: luma(145))[#text(fill: accent)[Quellen:] #body], ) } // Screenshot-Platzhalter: beschreibt die fehlende Aufnahme + Zieldatei. // Ersetzen durch: #img("assets/.png", width: .., caption: [..]) #let shot(name, what, tip: none) = block( breakable: false, width: 100%, stroke: (paint: luma(190), thickness: 1pt, dash: "dashed"), fill: wash, radius: 3pt, inset: (x: 0.6em, y: 0.5em), { text(font: mono, size: 0.58em, weight: "bold", fill: ember, tracking: 0.08em)[ SCREENSHOT → assets/#(name + ".png") ] v(0.12em) text(size: 0.72em)[#what] if tip != none { v(0.08em) text(size: 0.62em, fill: luma(110))[#tip] } }, ) // Schichtband: lückenlos gestapelt (Grid mit row-gutter 0 = kein Par-Abstand). #let _layer(fill, h, round: none) = rect( width: 100%, height: h, fill: fill, stroke: 0.5pt + luma(150), radius: if round == none { 0pt } else { round }, ) #let _stack(..layers) = grid(columns: (1fr,), row-gutter: 0pt, ..layers) // Legendenzeile: Farbfeld + Text. #let _sw(c, note) = grid( columns: (14pt, 1fr), column-gutter: 0.45em, align(horizon, rect(width: 14pt, height: 9pt, fill: c, stroke: 0.5pt + luma(160), radius: 1.5pt)), align(horizon, text(size: 8.5pt)[#note]), ) // Querschnitt 4-Layer: Stack links, Legende rechts. #let stack-4() = grid( columns: (1.15fr, 1fr), gutter: 1.8em, _stack( _layer(mask.lighten(40%), 8pt, round: (top-left: 2pt, top-right: 2pt)), _layer(cu, 11pt), _layer(prepreg, 7pt), _layer(accent, 11pt), _layer(fr4, 18pt), _layer(accent-soft, 11pt), _layer(prepreg, 7pt), _layer(cu, 11pt), _layer(mask.lighten(40%), 8pt, round: (bottom-left: 2pt, bottom-right: 2pt)), ), grid( row-gutter: 3pt, _sw(mask.lighten(40%), [Lötstopp]), _sw(cu, [Kupfer 35 µm — Signale]), _sw(prepreg, [Prepreg ≈ 0,2 mm]), _sw(accent, [In1.GND — Masse]), _sw(fr4, [FR4-Kern ≈ 1,0 mm]), _sw(accent-soft, [In2.PWR — Versorgung]), ), ) // Prozesskasten für die Werkzeugkette (Stil wie diagrams.typ::_pipebox). #let _kbox(title, ..lines, highlight: false) = block( width: 100%, stroke: ( paint: if highlight { accent } else { luma(205) }, thickness: if highlight { 1.1pt } else { 0.6pt }, ), fill: if highlight { accent.lighten(94%) } else { paper }, radius: 3pt, inset: (x: 5pt, y: 6pt), align(center)[ #text(size: 10pt, weight: "bold")[#title] #v(2pt) #for l in lines.pos() [ #text(size: 8.5pt, fill: luma(110))[#l] #v(1pt) ] ], ) #let _arrow = text(fill: accent)[→] // Werkzeugkette in zwei Reihen. #let workflow-pipeline() = block(width: 100%, { grid( columns: (1fr, 10pt, 1fr, 10pt, 1fr, 10pt, 1fr), _kbox("Schaltplan", "Eeschema:", "Symbole & Werte"), _arrow, _kbox("ERC", "Verbindungen &", "Flags prüfen"), _arrow, _kbox("Footprints", "Symbol ↔ Gehäuse", "zuweisen"), _arrow, _kbox("PCB-Import", "Netzliste &", "Ratsnest in Pcbnew"), ) align(center, text(fill: accent, size: 0.85em)[↓]) grid( columns: (1fr, 10pt, 1fr, 10pt, 1fr, 10pt, 1fr, 10pt, 1fr), _kbox("Platzieren", "Umriss &", "Signalfluss"), _arrow, _kbox("Routen", "Leitungen & Vias"), _arrow, _kbox("Zonen", "GND-Flächen"), _arrow, _kbox("DRC & 3D", "Regeln prüfen"), _arrow, _kbox("Gerber", "Plotten & Bohren", "→ Fertigung", highlight: true), ) }) // ---- Folientext ------------------------------------------------------------- #show: presentation.with( title: "KiCad", subtitle: "Platinen-Design in der Praxis: vom Schaltplan zum Gerber-Export — 4 Layer als Standard", author: "Your Name", ) #slide(title: "Ablauf")[ - *Überblick*: Suite · Projekt · Werkzeugkette · Bauteile - *Workflow*: Schaltplan → Layout → Fertigungsdaten - *4 Layer*: Stackup · Masse · Rückstrompfade - *Praxis*: Einstieg · USB-C & 5 V · EMV · 0-Ω-Retter - *Bestückung*: Löten · Werkzeug · PCBA - *Fertigung*: DRC · Gerber · Kosten #v(0.6em) Danach: Worauf besteht besonderes Interesse? ] // Big-Picture-Folie: der komplette Weg von der Idee zum fertigen Gerät, // bewusst einfach gehalten (Einstieg fürs Publikum ohne Vorwissen). #slide(title: "Von der Idee zur Platine")[ #grid( columns: (1fr, 10pt, 1fr, 10pt, 1fr, 10pt, 1fr), _kbox("1 · Schaltplan", "Schaltung zeichnen"), _arrow, _kbox("2 · Layout", "Platine entwerfen"), _arrow, _kbox("3 · Export", "Gerber-Dateien"), _arrow, _kbox("4 · Bestellen", "hochladen + Stückliste", highlight: true), ) #align(center, text(fill: accent, size: 0.85em)[↓]) #grid( columns: (1fr, 10pt, 1fr, 10pt, 1fr, 10pt, 1fr), [], [], _kbox("5 · Versand", "Platine kommt per Post"), _arrow, _kbox("6 · Löten", "Bauteile auflöten"), _arrow, _kbox("7 · Test", "läuft alles?"), ) #v(0.8em) Heute: Schritte 1–3 in KiCad — ab 4 übernimmt die Fertigung. ] // =================================================================== #section("KiCad-Überblick", note: "Werkzeuge & Workflow") // =================================================================== #slide(title: "Was ist KiCad?")[ - *Freie Open-Source-EDA-Suite* (GPLv3): Schaltplan + Leiterplatte - Ein Projekt, ein Dateisatz: `.kicad_pro` · `.kicad_sch` · `.kicad_pcb` \ — Textformate, git-tauglich - Integriert: Symbol- & Footprint-Editor · SPICE · 3D-Viewer · DRC/ERC · \ GerbView · `kicad-cli` - Windows / Linux / macOS — Version 9.x #v(0.5em) #src[Offizielles Handbuch: docs.kicad.org] ] #slide(title: "Werkzeugkette")[ #workflow-pipeline() #v(0.5em) - *Iterativ*: Änderung im Schaltplan → `PCB aus Schaltplan aktualisieren` - Erst ERC sauber → dann Layout ] #slide(title: "Projekt & Schaltplan")[ - `Datei → Neu → Projekt` → `.kicad_pro` + leere Schematik - Eeschema: Symbole platzieren (`A`) · verdrahten (`W`) - Annotieren: Referenzen (R1, C3 …) eindeutig - Beispiel: Versorgung + MCU-Modul mit Entkopplung #v(0.5em) #grid( columns: (1fr, 1fr), gutter: 1.2em, shot("01-projektmanager", [KiCad-Startfenster, leeres Beispielprojekt, Icon-Leiste]), shot("02-schaltplan", [Eeschema: fertiger Beispielschaltplan inkl. Titelblock]), ) ] #slide(title: "Bauteile & Lieferbarkeit")[ - *Direkt im Schaltplan auswählen*: konkretes, bestellbares Bauteil — „irgendein 100 nF“ ist okay, aber nicht "der Schaltregler, aber in der 5V Variante" - Lieferbarkeit & Preis: LCSC · Mouser · DigiKey - Manchmal auch geschickt: check bei jlc-assembly - Lagerstand · Preis bei 1 / 10 / 100 Stück - Gehäuse: 0805 statt 0603 (Handlöten) - Schönster Schaltplan nützt nichts *ohne Bauteile* \ (Mindestmengen · Versand) - Nur Lagerware etablierter Distributoren — keine Broker-Teile #v(0.5em) #src[LCSC-Nummer als Feld ans Symbol → fertige BOM] ] #slide(title: "ERC — Schaltung prüfen")[ - `Prüfen → Elektrische Regeln prüfen` - Findet: offene Pins · unverbundene Drähte · fehlende `PWR_FLAG` - Warnungen *beheben* — nicht wegklicken - ERC grün → Footprints → Layout #v(0.5em) #shot("03-erc", [ERC-Dialog mit Ergebnisliste und „0 Verstöße“], tip: [Menü: Prüfen → Elektrische Regeln prüfen]) ] // =================================================================== #section("Layout-Workflow", note: "Der Standard-Workflow") // =================================================================== #slide(title: "Footprints zuweisen & importieren")[ - `Werkzeuge → Footprints zuweisen`: Symbol → Gehäuse - Filter: Abmessungen · Pins · Bohrbild - Mechanische Maße vorher im Datenblatt prüfen - Pcbnew: `PCB aus Schaltplan aktualisieren` → Footprints + Ratsnest #v(0.5em) #grid( columns: (1fr, 1fr), gutter: 1.2em, shot("04-footprint-zuweisung", [Dialog „Footprints zuweisen“: Symbol / Footprint / Vorschau]), shot("05-update-pcb", [Dialog „PCB aus Schaltplan aktualisieren“ mit Änderungsliste]), ) ] #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), \ Via 0,6/0,3 mm, Abstandsregeln - Umriss auf *Edge.Cuts* (z. B. 80 × 50 mm, Ecken runden) - Platzieren nach *Signalfluss*: - Connectoren & Befestigungen fixieren (sperren) - ICs → Entkopplungs-Cs an Versorgungspins ], shot("06-floorplan", [Pcbnew: Umriss + platzierte Footprints mit Ratsnest]), ) ] #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( "07-routing", [Leiterbahn beim Routen, Lagen-Widget auf „F.Cu“], tip: [Live-Demo-fähig halten: gleiche Ansicht später am Beamer], ), ) ] #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 - *Stitch-Vias* nahe kritischen Bauteilen \ (Entkopplung · Quarze · Spannungsregler) - Nach jeder Änderung: `B` (Zonen auffüllen) → erst dann DRC #v(0.5em) #shot( "08-zone", [Zonen-Eigenschaften: Netz GND, Lage B.Cu, Füllparameter], tip: [Rechtsklick auf die Fläche → „Flächen…“], ) ] #slide(title: "Prüfen & Exportieren")[ - *DRC — nie vergessen!* Nach dem Layout + *nochmal vor dem Export* - Abstände · offene Verbindungen · Masken- & Bohrabstände - *3D-Viewer*: Gehäuse- & Montage-Kollisionen - Export: Gerber X2 + Excellon → ZIP → Fertigung #v(0.5em) #grid( columns: (1fr, 1fr), gutter: 1.2em, shot("09-drc", [DRC-Dialog, Ergebnisliste „0 Verstöße“]), shot("10-3d-viewer", [3D-Betrachter: fertige Platine mit Bauteilen]), ) ] // =================================================================== #section("4-Layer", note: "Stackup, Masse & Versorgung") // =================================================================== #slide(title: "2 oder 4 Lagen?")[ #grid( columns: (1.6fr, 1fr), gutter: 1.4em, [ - *2 Lagen? — eher nein*: 4-Layer-Aufpreis gering, Nutzen groß - *Referenzebene unter jedem Signal* \ → geschlossene Rückstromschleifen · weniger Abstrahlung - *Impedanzkontrolle* (USB · Ethernet · RF) - Versorgung als eigene Lage - 2 Lagen: nur Adapter- & Breakout-Boards - Fast immer reicht die Billigvariante des Stackups als Standard. ], stack-4(), ) ] #slide(title: "Stackup in KiCad einrichten")[ - Board-Setup → *Stapelaufbau*: - Innenlagen *In1.Cu / In2.Cu* anlegen - Kupferdicken & Prepreg eintragen · Lagen benennen (In1.GND …) - *Impedanz* im selben Dialog: Ziel (50 Ω Single · 90 Ω diff) \ → empfohlene Bahnbreite - Netzklassen & Abstände wie gehabt · Thermal-Reliefs für Planes #v(0.4em) #grid( columns: (1fr, 1fr), gutter: 1.2em, shot("11-stackup-4l", [Board-Setup → Stapelaufbau: 4 Kupferlagen, Dicken, Dielektrika]), shot("12-impedanz", [Impedanz-Anzeige mit berechneten Werten je Signallage]), ) ] #slide(title: "Layout-Aufgaben bei 4 Layern")[ #grid( columns: (1.1fr, 1fr), gutter: 1.4em, [ - *GND-Ebene durchgehend halten* \ — Schlitze & Splitting = Rückstromfallen - *Rückstrom-Via (GND) direkt neben* dem Signal-Via - *Stitching-Vias* GND ↔ GND regelmäßig verteilen - Entkopplung: Pad → Via → Plane, so kurz wie möglich - Versorgung: Via-Paare an In2 ], shot( "13-4l-fertig", [4-Layer-Board, nur In1.GND sichtbar: durchgehende Massefläche mit Stitching-Vias], tip: [Lagen-Liste links: nur In1.Cu + Vias einblenden], ), ) ] // =================================================================== #section("Praxis-Fragen", note: "Erfahrungswerte fürs erste Board") // =================================================================== #slide(title: "Wie fange ich an?")[ - *Klein anfangen*: eine Platine, ein Ziel \ (z. B. Versorgung + MCU-Modul — das Vortrags-Beispiel) - *Bewährtes kopieren*: Referenzdesigns · Open-Source-Boards - Reihenfolge: Schaltplan → ERC → Layout → DRC → Gerber - Revision 1 = Lernprojekt: *2–3 Anläufe* sind normal ] #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* (Rd) \ — 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* (kein 2. Board am Stecker) #v(0.4em) #src[Rd (5,1 kΩ): USB-IF, USB Type-C Spec] ] #slide(title: "EMV als Anfänger?")[ - *Bewusste EMV-Optimierung: zu früh* (Filter · Shields · Slots …) - Grundset bringt schon den Großteil: - durchgehende *GND-Referenzfläche* (deshalb 4 Layer) - *Entkopplungs-Cs* direkt an jeden Versorgungspin - Einplanen: *2–3 Revisionen* + *Yellow-Wire* für Rev. 1 ] #slide(title: "Wie flexibel designen?")[ - Jumper · Bestückoptionen · „entweder/oder“-Footprints? - *Eher gar nicht* — nächste Platine ist schnell & günstig - Flexibilität kostet: Platz · Zeit · Komplexität - *Ausnahme: ab ~100+ Stück* → Varianten lohnen \ (Bestückvarianten · Strapping) ] #slide(title: "Retter in der Not: 0 Ω & 1 R")[ - *0 Ω in Serie* zu Versorgungs- & heiklen Signalleitungen - Notfall: austauschen · überbrücken · Yellow-Wire - Gehäuse: *0805 / 0603 — nicht kleiner* (handlötbar) - *1 R in 0805 als Sicherung*: in Versorgungszweige — \ geht durch statt abzufackeln ] // =================================================================== #section("Bestückung & Equipment", note: "Löten, Werkzeug & PCBA") // =================================================================== #slide(title: "Bestückung: klein nach groß")[ - *Klein nach groß* — sonst kommt der Lötkolben nicht mehr dran - *Zoom nicht übertreiben*: Bildschirm ≠ Realität - *Erst SMD, dann THT* — Stecker blockieren sonst SMD-Plätze - SMD in einem Rutsch: Lötpaste → setzen → Hotplate / Heißluft - Bestückungsdruck? *Nein* — erst ab ~10 000 Stück + AOI ] #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ö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 ], ) ] #slide(title: "Factory-Bestückung (PCBA)")[ - *Lohnt sich? — ja, öfter als man denkt* \ (z. B. JLCPCB · AISLER) - V. a. bei *feinen Gehäusen*: 0402 · QFN · BGA - Aus KiCad: *BOM* + *Pick-and-Place* \ (`Datei → Fertigungsoutputs`) - Split: *SMD ab Werk · THT & Mechanik selbst* ] // =================================================================== #section("Prüfung & Fertigung", note: "DRC, Gerber, Bohrdaten & Kosten") // =================================================================== #slide(title: "Endkontrolle")[ - *Innenlagen sichtbar machen*: GND wirklich geschlossen? \ Versorgungszonen komplett? - *DRC* mit Herstellerrules: Clearance · Annular Ring · Bohrabstand - *3D-Check* + STEP-Export (`Datei → Exportieren → STEP`) - Faustregel: erst Zonen auffüllen (`B`) · dann DRC ] #slide(title: "Gerber & Bohrdaten")[ - `Fertigungsoutputs → Plotten…`: *Gerber X2* - Kupfer-Lagen · Lötstopp · Bestückungsdruck · Edge.Cuts - Bohrdaten separat (Excellon) → beides ins ZIP - Kontrolle in *GerbView*: jede Lage durchschauen #v(0.5em) #grid( columns: (1fr, 1fr), gutter: 1.2em, shot("14-plot", [Plot-Dialog: Gerber X2, Layer-Liste mit Haken]), shot("15-gerbview", [GerbView mit geladenen Lagen (F.Cu, B.Cu, Masken)]), ) ] #slide(title: "Was kostet eine Platine?")[ #table( columns: (auto, 1fr), 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], ) #v(0.4em) - *Kleinmengen = Fixkosten*: Setup · Panel · Versand - Preis-Treiber: *Fläche · Lagenzahl · Mindestabstände* (HDI = teuer) · Menge #v(0.3em) #src[Richtwerte — aktuell immer im Preisrechner prüfen (jlcpcb.com, aisler.net)] ] #slide(title: "China oder EU?")[ #grid( columns: (1fr, 1fr), gutter: 1.2em, panel(c: ember)[ *China — JLCPCB, PCBWay, SEEED* - sehr günstig · riesige Optionsvielfalt - Versand 1–2 Wochen - lange Transportwege ], panel(c: accent)[ *EU — AISLER, Beta layout, Würth* - Faktor 2–5 teurer · schnell & unkompliziert - deutschsprachiger Support · Gewährleistung - kurze Wege → *Umwelt & Local Buying* ], ) #v(0.5em) - China: günstiges Prototyping · EU: Zeit, Service, CO₂ ] #slide(title: "Screenshot-Checkliste")[ #set text(size: 11.5pt) Alle Platzhalter in dieser Folienvorlage — Aufnahme 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*], [01], [projektmanager], [Projekt-Manager mit leerem Beispielprojekt], [02], [schaltplan], [Eeschema: fertiger Beispielschaltplan], [03], [erc], [ERC-Dialog, Ergebnisliste], [04], [footprint-zuweisung], [Dialog „Footprints zuweisen“], [05], [update-pcb], [Dialog „PCB aus Schaltplan aktualisieren“], [06], [floorplan], [Pcbnew: Umriss + platzierte Footprints + Ratsnest], [07], [routing], [Routing aktiv, Lagen-Widget unten links], [08], [zone], [Zonen-Eigenschaften (GND, B.Cu)], [09], [drc], [DRC-Dialog mit Ergebnis], [10], [3d-viewer], [3D-Ansicht der fertigen Platine], [11], [stackup-4l], [Board-Setup → Stapelaufbau mit 4 Kupferlagen], [12], [impedanz], [Impedanzwerte im Stapelaufbau-Dialog], [13], [4l-fertig], [4-Layer-Board, nur In1.GND sichtbar], [14], [plot], [Plot-Dialog mit Gerber X2 und Layer-Liste], [15], [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 - `gerber-format.com` — Gerber-Spezifikation (Ucamco) - Design-Rules der Fertigung (JLCPCB · PCBWay · AISLER) \ — vor dem Layout ins Board-Setup ] #slide(title: "Diskussion")[ - Was zeigen wir *live*? (Layout-Demo ~15 min) - Besonderes Interesse? Kosten · PCBA · EMV · Impedanz · Gehäuse? #v(1em) #align(center, text(size: 1.3em, weight: "bold")[Danke — Fragen?]) ]