Les bords de la carte elliptique dans KiCAD ou CircuitPro?

11

J'essaie d'utiliser KiCAD pour concevoir un PCB qui doit s'insérer dans un boîtier existant. Un côté du PCB doit être façonné comme un segment d'arc elliptique spécifique. Je peux comprendre les paramètres de l'ellipse souhaitée, mais je ne vois pas comment dessiner une telle coupe de bord dans KiCAD.

Est-ce possible dans KiCAD, ou est-ce que j'utilise le mauvais logiciel pour cela? La carte sera faite sur LPKF ProtoMat, donc j'utiliserai le logiciel CircuitPro pour créer les instructions finales pour le traceur (je ne sais pas encore comment cela fonctionne).

Ma question est donc de savoir si je devrais penser à la conception de la forme de la carte dans KiCAD, ou la laisser jusqu'à une étape ultérieure?

Je vous remercie.

Val Blant
la source
C'est possible avec KiCad et j'ai déjà créé de tels schémas de cartes. Je suis maintenant sur mobile, mais je peux écrire une réponse lorsque je serai disponible.
abdullah kahraman
@abdullahkahraman: J'apprécierais votre perspicacité.
Val Blant

Réponses:

25

Je pense qu'un exemple vaut un million de mots, donc je voulais faire un tutoriel à ce sujet.

Voici la boîte pour laquelle je vais créer un plan:

entrez la description de l'image ici

Voici un exemple de dessin PCB de la fiche technique de la boîte:

entrez la description de l'image ici

Après avoir ouvert Pcbnew, sélectionnez le calque pour les bords. Dans la version actuelle de KiCad (BZR4008), il est appelé "Edge.Cuts". Tout d'abord, je vais dessiner les bords supérieur et inférieur, qui font 62 mm. Ensuite, les bords gauche et droit, qui font 32 mm. J'utilise l'outil ci-dessous qui a une info-bulle "Ajouter une ligne graphique ou un polygone".

entrez la description de l'image ici

Maintenant que tout va bien, je peux dessiner les autres formes:

entrez la description de l'image ici

Voici l'outil que nous allons utiliser pour cela:

entrez la description de l'image ici

Cet outil est essentiellement un cercle partiel. Pour l'utiliser, cliquez sur le point qui sera le centre de votre cercle, puis avec la souris, vous fixerez le rayon à l'aide d'une aide visuelle du KiCad. Une chose très utile est de changer le curseur pour qu'il affiche les coordonnées complètes, avec le bouton ci-dessous:

entrez la description de l'image ici

entrez la description de l'image ici

Juste pour un exemple, faisons le bord face à l'extérieur:

entrez la description de l'image ici

Malheureusement, vous ne pouvez pas faire des ellipses correctes avec cette méthode. Vous devez utiliser l'incorporation graphique, ou les méthodes d'approximation pour cela, qui ont été mentionnées par Nick Alexeev.

abdullah kahraman
la source
4

La grâce salvatrice de KiCad, à mon avis, est que les fichiers qu'il crée sont lisibles par l'homme et que le format de fichier est relativement bien documenté. Les coordonnées X et Y sont spécifiées en dix millièmes de pouce, référencées à (0,0) en haut à gauche. Un contour de carte peut être représenté par des segments de ligne et des arcs semi-circulaires.

Il est simple de manipuler les fichiers .brd de Kicad en utilisant le langage de script de votre choix (par exemple Python). Si j'étais vous, j'écrirais probablement un script qui calcule les segments de ligne par morceaux pour approximer votre contour elliptique et écrire les segments de ligne dans votre fichier .brd.

Rob
la source
C'est exactement ce que j'ai fini par faire. Merci Rob! Je posterai une description complète de la solution dans un peu.
Val Blant
4

Il m'a fallu quelques jours pour digérer toutes ces informations, mais j'ai terminé avec 2 solutions à ce problème. Je décrirai les deux solutions ici.

Je voudrais remercier Lorenzo et Rob Gilliom du forum des utilisateurs de kicad, qui m'ont fourni toutes les idées et informations dont j'avais besoin pour rassembler les solutions ci-dessous ( http://tech.groups.yahoo.com/ groupe / kicad-users / message / 15220 ).

= Option 1 =

Si vous souhaitez importer un seul segment elliptique et concevoir le reste de la carte dans KiCAD, alors ce script Ruby est probablement le moyen le plus simple:

#
# 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])
}

Pour utiliser ce script, enregistrez simplement un .kicad_pcbfichier vierge dans Kicad puis insérez les lignes générées par ce script après la dernière section avant l'accolade fermante.

Ouvrez le nouveau fichier de carte dans KiCAD et profitez de votre ellipse interpolée par des segments de ligne :). L'utilisation de 256 points rend l'ellipse si lisse que vous ne pouvez pas dire qu'elle est constituée de lignes dans KiCAD.

Si vous ne voulez qu'une partie de l'ellipse (un bord de votre PCB, par exemple), il est trivial d'ajouter une boîte englobante au script ci-dessus et de supprimer tous les points qui se trouvent en dehors de la boîte.


= Option 2 =

Une autre approche serait de concevoir votre carte entièrement dans Inkscape (ou tout autre élément pouvant exporter des graphiques vectoriels) et de trouver un moyen d'importer cela dans KiCAD.

Lorenzo a fourni une solution qui peut passer d'Inkscape à Gerber ici: http://tech.groups.yahoo.com/group/kicad-users/message/15229

J'ai ensuite pu m'appuyer sur la solution de Lorenzo pour créer un script Ruby qui contourne l'étape Gerber et génère directement les lignes de fichiers de la carte KiCAD.

Le processus se déroule comme suit:

  1. Concevez votre tableau dans Inkscape
  2. Exporter vers HPGL
  3. Convertir HPGL en GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Générez des lignes de fichier de carte: gpt2pcbnew file.hpgl.gpt

Voici la source du gpt2pcbnewscript:

#
# 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]}")
  }  
}

Tout comme dans l'option 1, les lignes générées vont dans un fichier de carte vierge enregistré dans KiCAD.

Cette solution exploite le fait que le format HPGL est très similaire dans sa construction aux fichiers Gerber, en ce sens qu'il s'agit d'une série de coordonnées avec "stylo vers le haut" ou "stylo vers le bas", ce qui correspond aux codes D01 et D02 dans Gerber.

Ainsi, tout le travail acharné de conversion des splines de Bézier en segments de ligne est effectué par Inkscape dans ce cas.

= Limitations de l'option 2 =

Il y a quelques limites à cette approche:

  1. Il semble qu'Inkscape ne puisse pas exporter de rectangles dans HPGL. Vous pouvez évidemment contourner cela en construisant vos propres rectangles.
  2. Je ne suis actuellement pas en mesure d'obtenir les bonnes tailles des objets exportés. Les objets se retrouvent environ deux fois plus gros dans KiCAD. Je vais bientôt travailler sur une solution.
Val Blant
la source
3

J'ai eu un problème similaire avec Kicad il y a quelque temps, il a toujours un support limité pour les formes non standard ou il n'est tout simplement pas bien documenté. J'ai fini par dessiner ma forme (pad non standard dans mon cas) avec Gimp et la convertir en module à l'aide de l'outil intégré. J'ai ensuite ouvert ce fichier de module et changé la couche en couches de cuivre. Ouvrez-le dans Kicad et vous avez des formes non standard de votre choix sur n'importe quelle couche. Pas idéal, mais ça marche.


Pas:

  1. Créer un dessin dans Gimp
  2. Utilisez bitmap2component inclus avec Kicad pour le convertir en composant
  3. Ouvrez le module dans gedit / notepad et modifiez les informations de couche conformément au document suivant (Section 3.4):

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

4.Enregistrez les modifications et ouvrez le module dans Pcbnew

Résultats (je ne pouvais pas penser à une autre façon de faire un bord circulaire non couvert par du soldermask, c'est en fait un pad SMD avec des composants à l'intérieur):

entrez la description de l'image ici

s3c
la source
Hmm - cela ressemble à une approche intéressante, mais je ne suis pas sûr de ce que vous entendez par "ouvert ce fichier de module et changé la couche en couches de cuivre". Je pensais que les pads avaient une couche cible, plutôt que le module lui-même. Pourriez-vous développer un peu comment vous passez d'un module de la forme souhaitée à un dessin réel sur le calque de votre choix? Merci!
Val Blant
Réponse mise à jour.
s3c
1
Vous pouvez créer une arête circulaire juste à l'aide de l'outil cercle, puis, puisque la zone est déjà remplie de cuivre, vous pouvez supprimer le masque de soudure en dessinant un cercle mais cette fois sur le calque Masque avant.
abdullah kahraman
C'est une assez bonne suggestion, je voulais un module que je pourrais rapidement intégrer dans divers modèles, je suppose que les deux fonctionneraient. +1
s3c
1

J'ai travaillé avec OrCAD, Eagle, Altium. N'ont pas travaillé avec KiCAD. Donc, ce qui suit est une supposition éclairée.

En règle générale, les programmes de disposition ont des fonctions pour dessiner des arcs de cercle, mais n'ont pas de fonction intégrée pour dessiner des ellipses. Vous pouvez approximer une ellipse avec des arcs de cercle ( plus ici ). Vous pouvez également dessiner une ellipse avec un programme de dessin et essayer d'importer un DXF dans le programme de mise en page (je ne sais pas dans quelle mesure KiCAD peut le supporter).

En fin de compte, le fabricant de PCB se rapproche probablement des courbes de polygones de toute façon.

Nick Alexeev
la source