Bordes de la placa elíptica en KiCAD o CircuitPro?

11

Estoy tratando de usar KiCAD para diseñar una PCB que debe caber en un caso existente. Un lado de la PCB debe formarse como un segmento de arco elíptico específico. Puedo descifrar los parámetros de la elipse deseada, pero no veo cómo dibujar ese corte de borde en KiCAD.

¿Es esto posible en KiCAD o estoy usando el software incorrecto para esto? La placa se realizará en LPKF ProtoMat, por lo que utilizaré el software CircuitPro para crear las instrucciones finales para el trazador (todavía no sé cómo funciona).

Entonces, mi pregunta es si debería pensar en el diseño de la forma del tablero en KiCAD, o dejarlo hasta un paso posterior.

Gracias.

Val Blant
fuente
Esto es posible con KiCad y he creado tales esquemas de tablero anteriormente. Ahora estoy en el móvil, sin embargo, puedo escribir una respuesta cuando esté disponible.
Abdullah Kahraman
@abdullahkahraman: agradecería su comprensión.
Val Blant

Respuestas:

25

Creo que un ejemplo vale más que un millón de palabras, así que quería hacer un tutorial sobre esto.

Aquí está el cuadro para el que voy a crear un esquema:

ingrese la descripción de la imagen aquí

Aquí hay un ejemplo de dibujo de PCB de la hoja de datos de la caja:

ingrese la descripción de la imagen aquí

Después de abrir Pcbnew, seleccione la capa para los bordes. En la versión actual de KiCad (BZR4008), se llama "Edge.Cuts". Primero, voy a dibujar los bordes superior e inferior, que son 62 mm. Luego los bordes izquierdo y derecho, que son de 32 mm. Estoy usando la herramienta a continuación que tiene una información sobre herramientas de "Agregar línea gráfica o polígono".

ingrese la descripción de la imagen aquí

Ahora que todo está bien, puedo dibujar las otras formas:

ingrese la descripción de la imagen aquí

Aquí está la herramienta que vamos a utilizar para eso:

ingrese la descripción de la imagen aquí

Esta herramienta es básicamente un círculo parcial. Para usarlo, haga clic en el punto que será el centro de su círculo, luego, con el mouse, establecerá el radio con una ayuda visual del KiCad. Una cosa muy útil es cambiar el cursor para que muestre las coordenadas completas, con el botón que se muestra a continuación:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Solo por el ejemplo, hagamos que el borde mire hacia afuera:

ingrese la descripción de la imagen aquí

Desafortunadamente, no puedes hacer elipses correctos con este método. Tienes que usar la incrustación gráfica, o los métodos de aproximación para eso, que fueron mencionados por Nick Alexeev.

abdullah kahraman
fuente
4

La gracia salvadora de KiCad, en mi opinión, es que los archivos que crea son legibles por humanos y el formato del archivo está razonablemente bien documentado. Las coordenadas X e Y se especifican en diezmilésimas de pulgada, con referencia a (0,0) en la esquina superior izquierda. El contorno de un tablero se puede representar mediante segmentos de línea y arcos de medio punto.

Es sencillo manipular los archivos .brd de Kicad utilizando el lenguaje de script que elija (por ejemplo, Python). Si yo fuera usted, probablemente escribiría un guión que calcula los segmentos de línea por partes para aproximar su contorno elíptico y escribiría los segmentos de línea en su archivo .brd.

Robar
fuente
Eso es exactamente lo que terminé haciendo. Gracias Rob! Publicaré una descripción completa de la solución en un momento.
Val Blant
4

Me tomó un par de días digerir toda esta información, pero terminé con 2 soluciones a este problema. Describiré ambas soluciones aquí.

Quisiera agradecer a Lorenzo y Rob Gilliom del foro de usuarios de kicad, que me han brindado todas las ideas e información que necesitaba para reunir las soluciones a continuación ( http://tech.groups.yahoo.com/ group / kicad-users / message / 15220 ).

= Opción 1 =

Si desea importar un solo segmento elíptico y diseñar el resto del tablero en KiCAD, entonces este script Ruby es probablemente la forma más fácil de hacerlo:

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

Para usar este script, simplemente guarde un .kicad_pcbarchivo en blanco en Kicad y luego inserte las líneas generadas por este script después de la última sección antes de la llave de cierre.

Abra el nuevo archivo de tablero en KiCAD y disfrute de su elipse interpolada por segmentos de línea :). El uso de 256 puntos hace que la elipse sea tan suave que no se puede ver que consiste en líneas en KiCAD.

Si solo desea una parte de la elipse (un borde de su PCB, por ejemplo), es trivial agregar un cuadro delimitador al script anterior y descartar todos los puntos que se encuentran fuera del cuadro.


= Opción 2 =

Otro enfoque sería diseñar su placa por completo en Inkscape (o cualquier otra cosa que pueda exportar gráficos vectoriales), y encontrar una manera de importar eso en KiCAD.

Lorenzo ha proporcionado una solución que puede ir de Inkscape a Gerber aquí: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Luego pude construir sobre la solución de Lorenzo para hacer un script Ruby que omita la etapa de Gerber y genere líneas de archivo de tablero KiCAD directamente.

El proceso es así:

  1. Diseña tu tablero en Inkscape
  2. Exportar a HPGL
  3. Convierta HPGL a GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Generar líneas de archivo de placa: gpt2pcbnew file.hpgl.gpt

Aquí está la fuente del 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]}")
  }  
}

Al igual que en la Opción 1, las líneas generadas van a un archivo de tablero en blanco guardado en KiCAD.

Esta solución aprovecha el hecho de que el formato HPGL es muy similar en su construcción a los archivos de Gerber, en el sentido de que es una serie de coordenadas con "pluma hacia arriba" o "pluma hacia abajo", que corresponde a los códigos D01 y D02 en Gerber.

En este caso, Inkscape hace todo el trabajo duro de la conversión de splines bezier a segmentos de línea.

= Opción 2 Limitaciones =

Hay un par de limitaciones con este enfoque:

  1. Parece que Inkscape no puede exportar rectángulos a HPGL. Obviamente, puede solucionar esto construyendo sus propios rectángulos.
  2. Actualmente no puedo obtener el tamaño correcto de los objetos exportados. Los objetos terminan aproximadamente dos veces más grandes en KiCAD. Estaré trabajando en una solución a esto pronto.
Val Blant
fuente
3

Tuve un problema similar con Kicad hace un tiempo, siempre tiene soporte limitado para formas no estándar o simplemente no está bien documentado. Lo que terminé haciendo fue dibujar mi forma (almohadilla no estándar en mi caso) con Gimp y convertirla en un módulo utilizando la herramienta integrada. Luego abrí este archivo de módulo y cambié la capa a las capas de cobre. Ábralo nuevamente en Kicad y tendrá formas no estándar de su elección en cualquier capa. No es ideal, pero funciona.


Pasos:

  1. Crea un dibujo en Gimp
  2. Use el componente bitmap2 incluido con Kicad para convertirlo en un componente
  3. Abra el módulo en gedit / notepad y edite la información de la capa de acuerdo con el siguiente documento (Sección 3.4):

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

4.Guarde los cambios y abra el módulo en Pcbnew

Resultados (no se me ocurrió otra forma de hacer un borde circular no cubierto por la máscara de soldadura, en realidad es una almohadilla SMD con componentes dentro):

ingrese la descripción de la imagen aquí

s3c
fuente
Hmm: parece un enfoque interesante, pero no estoy seguro de lo que quieres decir con "abrí este archivo de módulo y cambié la capa a capas de cobre". Pensé que los pads tienen una capa objetivo, en lugar del módulo en sí. ¿Podría ampliar un poco cómo pasa de un módulo de la forma deseada a un dibujo real en la capa de su elección? ¡Gracias!
Val Blant
Respuesta actualizada
s3c
1
Puede crear un borde circular solo con la herramienta de círculo, luego, dado que el área ya está llena de cobre, puede eliminar la máscara de soldadura dibujando un círculo pero esta vez en la capa Máscara frontal.
Abdullah Kahraman
Esa es una sugerencia bastante buena, quería un módulo que pudiera colocar rápidamente en varios diseños, supongo que ambos funcionarían. +1
s3c
1

He trabajado con OrCAD, Eagle, Altium. No he trabajado con KiCAD. Entonces, lo siguiente es una suposición educada.

Por lo general, los programas de diseño tienen funciones para dibujar arcos circulares, pero no tienen una función integrada para dibujar elipses. Puede aproximar una elipse con arcos circulares ( más aquí ). También puede dibujar una elipse con un programa de dibujo e intentar importar un DXF en el programa de diseño (no sé qué tan bien KiCAD puede soportar esto).

Al final, el fab PCB probablemente se aproximará a las curvas con polígonos de todos modos.

Nick Alexeev
fuente