Elliptische Platinenkanten in KiCAD oder CircuitPro?

Ich versuche mit KiCAD eine Leiterplatte zu entwerfen, die in ein vorhandenes Gehäuse passen muss. Eine Seite der Leiterplatte muss als spezifisches elliptisches Bogensegment geformt werden. Ich kann die Parameter der gewünschten Ellipse herausfinden, aber ich sehe nicht, wie man einen solchen Kantenschnitt in KiCAD tatsächlich zeichnet.

Geht das in KiCAD oder verwende ich dafür die falsche Software? Das Board wird auf LPKF ProtoMat erstellt, also werde ich die CircuitPro-Software verwenden, um die endgültigen Anweisungen für den Plotter zu erstellen (weiß noch nicht, wie das funktioniert).

Meine Frage ist also, ob ich über das Design der Platinenform in KiCAD nachdenken oder es auf einen späteren Schritt verschieben sollte?

Danke dir.

Dies ist mit KiCad möglich und ich habe solche Platinenumrisse zuvor erstellt. Ich bin jetzt auf dem Handy, kann aber eine Antwort schreiben, wenn ich verfügbar bin.
@abdullahkahraman: Ich würde mich über Ihren Einblick freuen.

Antworten (5)

Ich denke, ein Beispiel sagt mehr als eine Million Worte, also wollte ich ein Tutorial dazu machen.

Hier ist die Box, für die ich eine Gliederung erstellen werde:

Geben Sie hier die Bildbeschreibung ein

Hier ist eine Beispiel-PCB-Zeichnung aus dem Datenblatt der Box:

Geben Sie hier die Bildbeschreibung ein

Wählen Sie nach dem Öffnen von Pcbnew die Ebene für Kanten aus. In der aktuellen Version von KiCad (BZR4008) heißt es "Edge.Cuts". Zuerst zeichne ich die oberen und unteren Kanten, die 62 mm lang sind. Dann die linke und rechte Kante, die 32 mm sind. Ich verwende das unten stehende Werkzeug mit dem Tooltip "Grafiklinie oder Polygon hinzufügen".

Geben Sie hier die Bildbeschreibung ein

Jetzt, da alles in Ordnung ist, kann ich die anderen Formen zeichnen:

Geben Sie hier die Bildbeschreibung ein

Hier ist das Tool, das wir dafür verwenden werden:

Geben Sie hier die Bildbeschreibung ein

Dieses Werkzeug ist im Grunde ein Teilkreis. Um es zu verwenden, klicken Sie auf den Punkt, der der Mittelpunkt Ihres Kreises sein wird, dann stellen Sie mit der Maus den Radius mit einer visuellen Hilfe des KiCad ein. Es ist sehr hilfreich, den Cursor mit der unten gezeigten Schaltfläche so zu ändern, dass er vollständige Koordinaten anzeigt:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Lassen Sie uns nur als Beispiel die Kante nach außen zeigen:

Geben Sie hier die Bildbeschreibung ein

Leider können Sie mit dieser Methode keine korrekten Ellipsen erstellen. Dazu müssen Sie die grafische Einbettung oder die von Nick Alexeev erwähnten Annäherungsmethoden verwenden.

Ich brauchte ein paar Tage, um all diese Informationen zu verdauen, aber ich endete mit 2 Lösungen für dieses Problem. Beide Lösungen beschreibe ich hier.

Ich möchte Lorenzo und Rob Gilliom vom kicad-users-Forum danken, die mir alle Ideen und Informationen zur Verfügung gestellt haben, die ich benötigte, um die folgenden Lösungen zusammenzustellen ( http://tech.groups.yahoo.com/ group/kicad-users/message/15220 ).

= Möglichkeit 1 =

Wenn Sie ein einzelnes elliptisches Segment importieren und den Rest der Platine in KiCAD entwerfen möchten, ist dieses Ruby-Skript wahrscheinlich der einfachste Weg:

#
# Generates an ellipse for Kicad. You have to copy the 
# generated lines into an existing template inside a .kicad_pcb file
#

Xo = 200.0
Yo = 150.0
MAJOR = 60.0
MINOR = 40.0
N = 256 # Number of points on the ellipse

TEMPLATE = "(gr_line (start %.2f %.2f) (end %.2f %.2f) (layer Edge.Cuts) (width 0.15))\n"

step = Math::PI * 2 / N
points = Array.new

# Calculate coordinates for all N points
(0..N).each {|s|
  x = Xo + MAJOR * Math::cos(step * s)
  y = Yo - MINOR * Math::sin(step * s)
  points << [x, y]
}

# For each pair of points, print a gr_line
points.each_cons(2) { |line| 
  printf(TEMPLATE, line[0][0], line[0][1], line[1][0], line[1][1])
}

Um dieses Skript zu verwenden, speichern Sie einfach eine leere .kicad_pcbDatei in Kicad und fügen Sie dann die von diesem Skript generierten Zeilen nach dem letzten Abschnitt vor der schließenden Klammer ein.

Öffnen Sie die neue Board-Datei in KiCAD und genießen Sie Ihre Ellipse interpoliert durch Liniensegmente :). Die Verwendung von 256 Punkten macht die Ellipse so glatt, dass Sie in KiCAD nicht erkennen können, dass sie aus Linien besteht.

Wenn Sie nur einen Teil der Ellipse haben möchten (z. B. eine Kante Ihrer Leiterplatte), ist es trivial, dem obigen Skript einen Begrenzungsrahmen hinzuzufügen und alle Punkte zu verwerfen, die außerhalb des Rahmens liegen.


= Möglichkeit 2 =

Ein anderer Ansatz wäre, Ihr Board vollständig in Inkscape (oder irgendetwas anderem, das Vektorgrafiken exportieren kann) zu entwerfen und einen Weg zu finden, das in KiCAD zu importieren.

Lorenzo hat hier eine Lösung bereitgestellt, die von Inkscape zu Gerber wechseln kann: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Ich konnte dann auf Lorenzos Lösung aufbauen, um ein Ruby-Skript zu erstellen, das die Gerber-Stufe umgeht und KiCAD-Board-Dateizeilen direkt generiert.

Der Prozess läuft wie folgt ab:

  1. Entwerfen Sie Ihr Board in Inkscape
  2. Export nach HPGL
  3. Konvertieren Sie HPGL in GnuPlot Ascii:hp2xx -t -m gpt file.hpgl
  4. Boarddateizeilen generieren:gpt2pcbnew file.hpgl.gpt

Hier ist die Quelle für das gpt2pcbnewSkript:

#
# Convert a GPT file created by hp2xx to Pcbnew gr_lines
#

# That's the line we'll write into the board file
TEMPLATE = "(gr_line (start %.5f %.5f) (end %.5f %.5f) (layer Edge.Cuts) (width 0.15))\n"


gpt_file = ARGV.shift

segments = Array.new

File.open(gpt_file, "r") do |file|
  # Start a new segment
  segment = Array.new 

  while (line = file.gets)
    unless ( line.strip! =~ /^#/ ) # Skip comments
      if ( line =~ /([0-9.]+) *([0-9.]+)/ )
        # Found coordinates. Save this point in the current segment
        #
        segment << line.split
      else
        # No numbers on a line means that we are done drawing the segment,
        # so we need to "lift up the pen" and move to the next segment
        #

        # Add current segment to the list of segments
        segments << segment unless segment.empty?

        # Start a new segment
        segment = Array.new
      end
    end
  end

  # Add the last segment we read
  segments << segment unless segment.empty?
end


# Print out gr_lines for all the segments
segments.each { |segment|  
  # For each pair of points print a line
  segment.each_cons(2) { |line| 
    printf(TEMPLATE, line[0][0], "-#{line[0][1]}", line[1][0], "-#{line[1][1]}")
  }  
}

Genau wie in Option 1 gehen die generierten Linien in eine leere Platinendatei, die in KiCAD gespeichert wird.

Diese Lösung macht sich die Tatsache zunutze, dass das HPGL-Format in seinem Aufbau Gerber-Dateien sehr ähnlich ist, in dem Sinne, dass es sich um eine Reihe von Koordinaten mit entweder „Stift oben“ oder „Stift unten“ handelt, was den Codes D01 und D02 in Gerber entspricht.

Die ganze harte Arbeit der Konvertierung von Bezier-Splines in Liniensegmente wird in diesem Fall also von Inkscape erledigt.

= Option 2 Einschränkungen =

Es gibt ein paar Einschränkungen bei diesem Ansatz:

  1. Es scheint, dass Inkscape Rechtecke nicht in HPGL exportieren kann. Sie können dies natürlich umgehen, indem Sie Ihre eigenen Rechtecke konstruieren.
  2. Ich bin derzeit nicht in der Lage, die Größen der exportierten Objekte richtig hinzubekommen. Die Objekte werden in KiCAD etwa doppelt so groß. Ich werde demnächst an einer Lösung dafür arbeiten.

Die Rettung von KiCad besteht meiner Meinung nach darin, dass die erstellten Dateien für Menschen lesbar sind und das Dateiformat einigermaßen gut dokumentiert ist. X- und Y-Koordinaten werden in Zehntausendstel Zoll angegeben, bezogen auf (0,0) oben links. Ein Platinenumriss kann durch Liniensegmente und Halbkreisbögen dargestellt werden.

Es ist einfach, die .brd-Dateien von Kicad mit der Skriptsprache Ihrer Wahl (z. B. Python) zu manipulieren. Wenn ich Sie wäre, würde ich wahrscheinlich ein Skript schreiben, das die stückweisen Liniensegmente berechnet, um Ihren elliptischen Umriss anzunähern, und die Liniensegmente in Ihre .brd-Datei schreiben.

Genau das habe ich schließlich getan. Danke Rob! Ich werde eine vollständige Beschreibung der Lösung in Kürze veröffentlichen.

Ich hatte vor einiger Zeit ein ähnliches Problem mit Kicad, es hat immer nur begrenzte Unterstützung für nicht standardmäßige Formen oder es ist einfach nicht gut dokumentiert. Am Ende habe ich meine Form (in meinem Fall kein Standard-Pad) mit Gimp gezeichnet und sie mit dem eingebauten Werkzeug in ein Modul konvertiert. Ich habe dann diese Moduldatei geöffnet und die Schicht auf die Kupferschichten geändert. Öffnen Sie es wieder in Kicad und Sie haben auf jeder Ebene nicht standardmäßige Formen Ihrer Wahl. Nicht optimal aber es funktioniert.


Schritte:

  1. Erstellen Sie eine Zeichnung in Gimp
  2. Verwenden Sie bitmap2component, das in Kicad enthalten ist, um es in eine Komponente zu konvertieren
  3. Öffnen Sie das Modul in gedit/notepad und bearbeiten Sie die Layer-Informationen gemäß folgendem Dokument (Abschnitt 3.4):

https://bazaar.launchpad.net/~kicad-developers/kicad/doc/view/head:/doc/help/file_formats/file_formats.pdf

4.Speichern Sie die Änderungen und öffnen Sie das Modul in Pcbnew

Ergebnisse (konnte mir keine andere Möglichkeit vorstellen, eine kreisförmige Kante herzustellen, die nicht von Lötstopplack bedeckt ist, es ist eigentlich ein SMD-Pad mit darin enthaltenen Komponenten):

Geben Sie hier die Bildbeschreibung ein

Hmm - das sieht nach einem interessanten Ansatz aus, aber ich bin mir nicht sicher, was Sie mit "diese Moduldatei geöffnet und die Ebene auf die Kupferschichten geändert" meinen. Ich dachte, dass Pads eine Zielebene haben und nicht das Modul selbst. Könnten Sie ein wenig erläutern, wie Sie von einem Modul der gewünschten Form zu einer tatsächlichen Zeichnung auf der Ebene Ihrer Wahl gelangen? Vielen Dank!
Antwort aktualisiert.
Sie können eine kreisförmige Kante einfach mit dem Kreiswerkzeug erstellen. Da der Bereich bereits mit Kupfer gefüllt ist, können Sie die Lötstoppmaske entfernen, indem Sie einen Kreis zeichnen, diesmal jedoch auf der Front Mask-Ebene.
Das ist ein ziemlich guter Vorschlag, ich wollte ein Modul, das ich schnell in verschiedene Designs einfügen könnte, aber ich denke, beide würden funktionieren. +1

Ich habe mit OrCAD, Eagle, Altium gearbeitet. Habe noch nie mit KiCAD gearbeitet. Das Folgende ist also eine fundierte Vermutung.

Typischerweise haben Layoutprogramme Funktionen zum Zeichnen von Kreisbögen, aber keine eingebaute Funktion zum Zeichnen von Ellipsen. Sie können eine Ellipse mit Kreisbögen annähern ( mehr hier ). Sie könnten auch mit einem Zeichenprogramm eine Ellipse zeichnen und versuchen, ein DXF in das Layoutprogramm zu importieren (weiß nicht, wie gut KiCAD dies unterstützen kann).

Am Ende wird die Leiterplattenfertigung wahrscheinlich sowieso Kurven mit Polygonen approximieren.