PCB von BMP drucken

OP #8053700
Lesenswert?

Ich fertige meine PCB mit der Toner-Transfer-Methode. Dabei wichtig ist dass Bahnen breite nicht zu klein ist . Auch Abstände zwischen den Bahnen sollten nicht zu klein sein. Ich Plotte im KICAD meine Platine im Format Postscript. Die File übergebe na ich an CorelDraw X5 Graphic. Von CorelDraw exportiere ich BMP Bild. Das BMP Bild bearbeite ich mit meinem Programm. Ich habe mein altes Programm für Manipulation von Bmp Image unter Visual Studio noch mal bearbeitet. Sehe den Screenshot. Fangen wir von der oberen rechten Ecke. Gehen wir in Formatierungs Richtung. Einheiten in Millimeter oder Inch. Width und Height vom PCB. Es wird angenommen, dass Height immer den größere Anzahl von Dots in X- und Y-Achsen vom Bmp Bild. Also ist das unabhängig von der aktuellen Lage vom Bild. Man kann auch hier Autosize aktivieren. Voraussetzung dafür ist, dass diese Information im Bild erhalten ist. Das geladenes Bild wird gedehnt auf die definierte dpi. Voreinstellung ist 900 dpi. Für das neue Bild können auch Nachbarndots einbezogen werden (das Schwarze wird größer...). Danach läuft alles in der Reihenfolge von Oben nach unten in der linken Kolumne vom Screenshot. Alle Operationen sind durch CheckBox aktiviert. „BMP image formating“: Das geladenes Bild wird wie beschrieben formatiert, sonst wird ein geladenes Bild ohne Formatierung bearbeitet. „delete white border“: Weißer Umrand vom BMP wird gelöscht. „Edges Isolation:“ nur Geschichte (habe ich vergessen). „black minimum „und „white minimum“: wenn in diesem Bereich wird Schwarz in Weiß oder Weiß in Schwarz umgewandelt. Das soll kleine Auswüchse liquidieren (z.B. Kleines Weißes Loch auf Schwarzem). „black enlarge“ und „white enlarge“: Schwarz oder Weiß wird vergrößern mit Anhaltung von Minimalabstand. „smoothen edges“: Schwarz wird vergrößern auf Art vom Schneeball. Leider ohne Kontrolle vom Abständen Schwarz-Weiß. Es wird immer ein Bild in X-Achse bearbeitet. Danach (wenn definiert…) wird das Bild um 90 Grad gedreht und die andere Achse bearbeitet. Anzahl von solchen Drehungen wird durch „number of loops“ definiert.

Angehängte Dateien:
#8053716
Lesenswert?

B. P. schrieb:

Auch Abstände zwischen den Bahnen sollten nicht zu klein sein. Ich Plotte im KICAD meine Platine im Format Postscript. Die File übergebe na ich an CorelDraw X5 Graphic. Von CorelDraw exportiere ich BMP Bild. Das BMP Bild bearbeite ich mit meinem Programm.

Klingt irgendwie maximal umständlich. Warum nicht KiCad so konfigurieren, daß es gleich eine brauchbare Druckvorlage (Leiterbahnbreiten etc.) ausgibt und diese dann auf einem postscriptfähigen Drucker oder, wenn nicht vorhanden, via Ghostscript auf einen anderen Drucker ausgeben?

OP #8053727
Lesenswert?

Harald K. schrieb:

Klingt irgendwie maximal umständlich. Warum nicht KiCad so konfigurieren

Mit dem Programm kann man jedes BMP-Bild auch vom Screenshot (.pdf)bearbeiten. Bei der Entwicklung in Kicad muss man sich keine Gedanken über Bahnbreiten machen.Ich habe sehr viele Optionen gemacht. Aber wesentlich weniger sind notwendig. Alle Möglichkeiten sind geöffnet. Etwas zu aktivieren über CheckBox ist ganz einfach.

#8053740
Lesenswert?

B. P. schrieb:

Bei der Entwicklung in Kicad muss man sich keine Gedanken über Bahnbreiten machen.

Hat KiCAD keinen Design Rules Check oder benutzt du den nur nicht? Der läuft ins Leere, wenn man hinterher wieder mit einem Graphikprogramm an den Leiterbahnen rumfummelt.

p.s. Die KI sagt, dass KiCAD einen integrierten DRC besitzt.

: Bearbeitet durch User
#8053743
Lesenswert?

Wow, das ist schon arg umständlich. Dass dazu auch noch vergessen wird, was bestimmte Checkboxen überhaupt machen, ist sehr vertrauenerweckend.

Wahrscheinlich hast du letztendlich Schwellenwertoperationen, erosion und dilation maximal umständlich implementiert. Die Idee ist soweit schon richtig, aber wahrscheinlich könnte das alles von etwas methodischerer Herangehensweise profitieren.

#8053881
Lesenswert?

B. P. schrieb:

Bei der Entwicklung in Kicad muss man sich keine Gedanken über Bahnbreiten machen.

Äh, wie bitte? Man mach ein richtiges Layout, mit den richtigen Leiterbahnbreiten, und kann das entweder so, wie es ist, zu Papier bringen, oder es so, wie es ist einem Fertiger übergeben, der einem daraus eine professionell gefertigte Platine herstellt. Ein und das gleiche Layout, zwei Anwendungen.

Die Idee, ein Layout anzufertigen, und dann mühsam nachträglich an Leiterbahnbreiten und Abständen herumzufrickeln ... auf die muss man auch erst mal kommen.

(Firma: Starfleet) #8054041
Lesenswert?

Die Literatur aus den Vorhergehenden Jahrhundert ist voll mit Prints von Layouts, da macht die nachbearbeitung von birmaps durchaus Sinn, bspw.: https://www.buchfreund.de/de/d/p/83567271/das-bauplan-bastel-buch-2-amateur-bibliothek

IMHO könnte man das Bitmap zuerst vektorizieren.

https://de.wikipedia.org/wiki/Vektorisierung_(Grafik)

Wenn jeder Leiterzug dann ein Vektor resp. eine Kette von Vektoren ist, kann man diese in "Striche unterschiedliche Stärke" umwandeln und so das Layout für die oben genannte Tonertransfermethode passend neu erzeugen.

Ja, es gibt eine Zeit vor KiCAD.

(Firma: Starfleet) #8054048
Lesenswert?

Interessantes Beispiel, da braucht es IMHO noch Nachbearbeitung an den "Kontaktstellen" (siehe Anhang). Aber möglicherweise fällt das bei der Tonertransfermethode nicht auf.

PS: Für bitmaps sollte *.PNG das bessere Format als *.JPG sein, JPG könnte mit Artefakten das Layout verändern.

PS1: https://www.mikrocontroller.net/articles/Platinenherstellung_mit_der_Tonertransfermethode

PS2: da mal ein Klassiker der Achtziger mit gedruckten Platinenvorlage, die Elektronik-Bauplan-Reihe in der DDR: https://i.ebayimg.com/images/g/wK0AAOSwm-FdeRno/s-l500.jpg

Angehängte Dateien:
: Bearbeitet durch User
#8054054
Lesenswert?

Bradward B. schrieb:

Die Literatur aus den Vorhergehenden Jahrhundert ist voll mit Prints von Layouts,

Wenn man das für nötig hält. Der Threadstarter aber erzeugt Layouts mit KiCad, und kann aus irgendeinem Grund dort nicht einfach die richtige Leiterbahnbreite einstellen, wie sein Bild "G1" zeigt.

Wenn man etwas mit KiCad geübt ist, ist es auch einfacher, ein gescanntes Layout nachzuzeichnen, als zu versuchen, aus dem Scan mit Bildbearbeitung noch etwas rauszuholen. KiCad unterstützt das Abzeichnen von Layouts; man kann eine Bitmap als Hintergrund laden, und dann darauf zeichnen. Das wurde mit KiCad 7 oder 8 eingeführt.

(Firma: Starfleet) #8054056
Lesenswert?

Klaus schrieb:

Für solche Workflows wurde wohl die Redewendung "von hinten durch die Brust ins Auge" erfunden.

Nein.

eher "Kopieren von einseitigen Platinen mit Hausmitteln".

Ist in der Restauration nicht unüblich auch die "alten" Herstellverfahren zu verwenden, warum bspw. die Platine eines Oldtimers erst in KiCAD einhäumern und den Chinesen zum Fertigen geben, wenn man es auch mit Hausmitteln kann.

#8054057
Lesenswert?

Bradward B. schrieb:

Ist in der Restauration nicht unüblich auch die "alten" Herstellverfahren zu verwenden, warum bspw. die Platine eines Oldtimers erst in KiCAD einhäumern

Ich sehe nicht, dass der TE irgendwas Altes restauriert. Aber selbst wenn, dann tut er ja genau das, was Du screhibst: Er hämmert es in KiCAD ein, nur um dann dessen Output nochmal maximal umständlich zu bearbeiten.

(Firma: Starfleet) #8054058
Lesenswert?

Wenn man das für nötig hält. Der Threadstarter aber erzeugt Layouts mit KiCad, und kann aus irgendeinem Grund dort nicht einfach die richtige Leiterbahnbreite einstellen, wie sein Bild "G1" zeigt.

Ob es mit der Bahnbreite allein getan ist, für Tonertransfer muss auch die Lötaugenbreite etc. angepasst werden. Der TO denkt halt in Kupferflächen und wie die für seine Prozessschritte angepasst werden müssen. Vielleicht hat ja KiCAD DRC und Anpassungen für "Toner-Transfer-Technologie", ich glaube eher nicht.

Ist in der Restauration nicht unüblich auch die "alten" Herstellverfahren zu verwenden, warum bspw. die Platine eines Oldtimers erst in KiCAD einhäumern

Ich sehe nicht, dass der TE irgendwas Altes restauriert.

Was nicht bedeutet, das er es nicht tut. Eine Recherche mit etwas Spekulation legt schon nahe das der TO eher im Bereich Einzelstückfertigung unterwegs ist und eher mit dem "mechanischen Gewerke" verbunden ist. Oder jemand anderes als der TO der noch mit der Toner Transfer Methode arbeitet hat Interesse an "Bitmap-pimping-tools".

PS: wenn schon in KiCAD, dann könnte man auch Teardrops zur Kontaktierung der Lotaugen verwenden, sollte einige der gezeigten Fehlstellen vermeiden lassen.

: Bearbeitet durch User
Beitrag #8054059 wurde vom Autor gelöscht.
#8054079
Lesenswert?

B. P. schrieb:

G1 vor Bearbeitung und G2 nach Bearbeitung.

Naja, G1, dieses abgeblich in KiCad neu erstellte Layout sollte unbedingt ordentliche Leiterbahnbreiten bekommen, von Anfang an. Statt 0,2mm oder 0,3 geht hier bestimmt deutlich mehr (Freiraum 0,2mm). Speziell der außen umlaufenden Leiterbahnzug (evtl. "GND") kann leicht auf 0,8 oder mehr erhöht werden. Und wenn man das Layout gar zweiseitig macht, benannte "GND" flächig auf die 2. Seite bringt, dann wird alles richtig gut. 5 Stück der Leiterplatte dann bei Jlcpcb, kosten keine 5 Euro, incl. Versand (global standard direct line, 10-14 Tage warten).

Das o.g. Programm mag nützlich sein für gescannte alte Papiervorlagen. Aber auch diese kann man mit genausoviel Zeitaufwand neu erstellen. Die Zeiten von Hohlnieten-Durchkontaktierungen und ÄtzBADezimmer sind zum Glück vorbei.

Beitrag #8054152 wurde von einem Moderator gelöscht.
#8054163
Lesenswert?

Ein Postprocessing vor der Fertigung ist durchaus üblich und wird von den professionellen Herstellern auch gemacht.

Aber natürlich nicht auf Bitmap-Ebene, das ist der falsche Ansatz.

Das sollte man mit Vektor-Formaten machen und dann auch in einem Vektorformat an den Drucker übergeben. Ordentliche Drucker können z.B. bei Postscript-Ausgabe an den Rändern optimieren weil sie ihre interne Auflösung und deren Grenzen/Schwächen ganz genau kennen. Das geht mit Pixel-Layout nicht.

Am besten wäre also wohl ein Gerber-Postprocessor. Hier gibts ne fertige Library die die Basis für sowas darstellen könnte: https://github.com/jaseg/gerbonara

#8054165
Lesenswert?

Bradward B. schrieb:

wenn schon in KiCAD, dann könnte man auch Teardrops zur Kontaktierung der Lotaugen verwenden, sollte einige der gezeigten Fehlstellen vermeiden lassen.

Wenn schon in KiCAD, dann könnte man dort direkt die richtige Leiterbahnbreite wählen. Die Fehlstellen entstehen bei der Nachbearbeitung und wer weiß, was die aus, wegen der falschen Leiterbahnbreite, völlig unpassenden Teardrops macht.

Beitrag #8054335 wurde von einem Moderator gelöscht.
Beitrag #8054366 wurde von einem Moderator gelöscht.
(Firma: Starfleet) #8054378
Lesenswert?

Jörg W. schrieb:

Dein Boykott der Zitatfunktion ist ebenfalls unnötig.

Ich sehe hier keinen Boykott und keinen Nutzen in der Wiederholung des Autoren-Pseudonyms in jeder Replik. Auch um nicht eine ad-homimem-Argumentation zu verfallen.

Vielleicht sollten wir die Benutzung der Zitatfunktion einfach in die Nutzungsbedingungen aufnehmen?

Ja, da hätte mal eine Grundlage um einen nicht unwesentlichen Anteil der Beiträge (bespielsweise alle vor ca. 2012) zu entfernen. Ob das dann noch mit dem Haftungsprivileg zu vereinbaren ist, darf bezweifelt werden.

Ja, ist off-topic hier.

Dann schieb die relevanten Teile nach mikrocontroller.net (https://www.mikrocontroller.net/forum/website)

: Bearbeitet durch User
#8055367
Lesenswert?

F. schrieb:

Wahrscheinlich hast du letztendlich Schwellenwertoperationen, erosion und dilation maximal umständlich implementiert.

Und irgendein Bug ist noch drinnen. Sonst könnten solche Fehler an den Lötaugen nicht auftreten.

Hab mal Spaßeshalber probiert, was mit OpenCV und ein paar Zeilen Python zu machen ist. Im Anhang das Resultat mit 3,5&8 Pixel Verbreiterung.

Angehängte Dateien:
#8055401
Lesenswert?

Spaßeshalber: Leiterbahnen um 100 Pixel verbreitert. Input-Bild zur Kontrolle halb-Transparent überlagert. Schaltung stimmt immer noch, Resultat ist jetzt eher ein "Vorschlag zum Freihandfräsen"

Aber man sieht schön, wie der Algorithmus arbeitet:

Zuerst "Netzliste" erstellen, sozusagen für jeden schwarzen Pixel merken, zu welcher Leiterbahn/Netz er gehört. Hört sich kompliziert an, ist in OpenCV schon fix-und-fertig vorhanden: cv2.connectedComponents(binary_image)

Dann Voronoi-Mengen bestimmen, für jedes weiße Pixel die Info welche Leiterbahn am nächsten liegt.

https://de.wikipedia.org/wiki/Voronoi-Diagramm

(fertiger Algorithmus aus scipy)

Dort wo sich das ändert, also Grenze zwischen zwei Regionen, muss weiß bleiben. (Sperrzone)

Dann jede Leiterbahn um die gewünschte Breite wachsen lassen, aber nur innerhalb ihrer eigenen Voronoi-Zone. cv2.dilate und cv2.bitwise_and mit der Sperrzone.

Sicherheitshalber nochmal cv2.connectedComponents auf das Resultat, ob die Anzahl der Leiterbahnen auch gleich geblieben ist (30 in dem Beispielbild).

Angehängte Dateien:
#8055433
Lesenswert?

Rainer W. schrieb:

Bradward B. schrieb:

Ich sehe hier ... keinen Nutzen in der Wiederholung des Autoren-Pseudonyms in jeder Replik.

Du hast es immer noch nicht begriffen, dass sich dahinter ein Link auf die Quelle befindet.

Er hat das WWW nicht verstanden, Neuland halt. Außerdem fällt quote mardern nicht so leicht auf.

Druckst du die Beträge aus, bevor du sie liest, so dass dir der Link entgeht?

Für manche ist halt immer Freitag.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren