¿Bordes de tablero elípticos en KiCAD o CircuitPro?

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

¿Es esto posible en KiCAD, o estoy usando el software incorrecto para esto? La placa se fabricará en LPKF ProtoMat, por lo que usaré 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 para un paso posterior.

Gracias.

Esto es posible con KiCad y he creado tales esquemas de tablero antes. Estoy en el móvil ahora, sin embargo, puedo escribir una respuesta cuando esté disponible.
@abdullahkahraman: Agradecería su opinión.

Respuestas (5)

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 dibujo de PCB de ejemplo 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 de 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 de KiCad. Algo 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 bien de un ejemplo, hagamos que el borde mire hacia afuera:

ingrese la descripción de la imagen aquí

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

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

Me gustaría agradecer a Lorenzo y Rob Gilliom del foro de usuarios de kicad, quienes me brindaron todas las ideas e información que necesitaba para armar las soluciones a continuación ( http://tech.groups.yahoo.com/ grupo/kicad-usuarios/mensaje/15220 ).

= Opción 1 =

Si desea importar un solo segmento elíptico y diseñar el resto del tablero en KiCAD, entonces este script de 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 placa 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 decir que consiste en líneas en KiCAD.

Si desea solo 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 tablero completamente en Inkscape (o cualquier otra cosa que pueda exportar gráficos vectoriales) y encontrar una manera de importar eso a 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

Entonces pude construir sobre la solución de Lorenzo para hacer un script de Ruby que pasa por alto la etapa de Gerber y genera líneas de archivo de placa 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 Gerber, en el sentido de que es una serie de coordenadas con "pluma arriba" o "pluma abajo", que corresponde a los códigos D01 y D02 en Gerber.

Entonces, Inkscape realiza todo el trabajo duro de convertir de bezier splines a segmentos de línea en este caso.

= Limitaciones de la opción 2 =

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 los tamaños correctos de los objetos exportados. Los objetos terminan siendo aproximadamente el doble de grandes en KiCAD. Estaré trabajando en una solución a esto pronto.

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

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

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

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


Pasos:

  1. Crear un dibujo en Gimp
  2. Use bitmap2component 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 pude pensar en ninguna otra forma de hacer un borde circular que no esté cubierto por una máscara de soldadura, en realidad es una almohadilla SMD con componentes en su interior):

ingrese la descripción de la imagen aquí

Hmm, parece un enfoque interesante, pero no estoy seguro de lo que quiere decir con "abrió este archivo de módulo y cambió la capa a las capas de cobre". Pensé que las almohadillas tienen una capa de destino, en lugar del módulo en sí. ¿Podría ampliar un poco sobre cómo pasar de un módulo de la forma deseada a un dibujo real en la capa de su elección? ¡Gracias!
Respuesta actualizada.
Puede crear un borde circular simplemente 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.
Esa es una sugerencia bastante buena, aunque quería un módulo que pudiera colocar rápidamente en varios diseños, supongo que ambos funcionarían. +1

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

Por lo general, los programas de diseño tienen funciones para dibujar arcos circulares, pero no tienen funciones integradas 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 al programa de diseño (no sé qué tan bien KiCAD puede soportar esto).

Al final, la fábrica de PCB, probablemente, aproximará las curvas con polígonos de todos modos.