KiCAD或CircuitPro中的椭圆板边缘?


11

我正在尝试使用KiCAD设计必须适合现有外壳的PCB。PCB的一侧需要成形为特定的椭圆弧段。我可以弄清楚所需椭圆的参数,但看不到如何在KiCAD中实际绘制这样的Edge Cut。

在KiCAD中是否可能这样做,或者我为此使用了错误的软件?该板将在LPKF ProtoMat上制成,因此我将使用CircuitPro软件为绘图仪创建最终说明(尚不知道其工作原理)。

所以我的问题是我是否应该考虑在KiCAD中设计板的形状,还是将其留待以后进行?

谢谢。


KiCad可以做到这一点,而我之前已经创建了这样的电路板轮廓。我现在在移动设备上,但是有空时我可以写一个答案。
阿卜杜拉·卡拉曼2013年

@abdullahkahraman:非常感谢您的见解。
巴兰特

Answers:


25

我认为一个例子价值一百万个单词,所以我想为此编写一个教程。

这是我要为其创建轮廓的框:

在此处输入图片说明

这是包装盒数据表中的PCB图纸示例:

在此处输入图片说明

打开Pcbnew之后,选择边缘层。在当前版本的KiCad(BZR4008)中,它称为“ Edge.Cuts”。首先,我将绘制62mm的上下边缘。然后,左边缘和右边缘为32毫米。我正在使用下面的工具,其工具提示为“添加图形线或多边形”。

在此处输入图片说明

现在一切都很好,我可以绘制其他形状:

在此处输入图片说明

这是我们将用于此的工具:

在此处输入图片说明

该工具基本上是一个局部圆。要使用它,请单击将成为圆心的点,然后使用鼠标在KiCad的视觉帮助下设置半径。一个非常有用的事情是更改光标,使其显示完整的坐标,并显示以下按钮:

在此处输入图片说明

在此处输入图片说明

只是为了举例说明,让我们让边缘朝外:

在此处输入图片说明

不幸的是,您无法使用此方法制作正确的椭圆。您必须使用图形嵌入,或者近似的方法,这是Nick Alexeev提到的。


4

在我看来,KiCad的省钱之处在于它创建的文件是人类可读的,并且文件格式有充分的文档记录。X和Y坐标以千分之一英寸为单位,以左上角的(0,0)为参考。板轮廓可以用线段和半圆弧表示。

使用您选择的脚本语言(例如Python)操作Kicad的.brd文件非常简单。如果您是我,我可能会写一个脚本来计算分段线段以近似椭圆轮廓,并将这些线段写入.brd文件。


这正是我最终要做的。谢谢罗伯!我将稍后发布该解决方案的完整说明。
巴兰特

4

我花了几天的时间来消化所有这些信息,但是我以两种解决方案结束了这个问题。我将在这里描述两种解决方案。

我要感谢kicad用户论坛的Lorenzo和Rob Gilliom,他们为我提供了将下面的解决方案组合在一起的所有想法和信息(http://tech.groups.yahoo.com/组/ kicad用户/邮件/ 15220)。

=选项1 =

如果要导入单个椭圆段并在KiCAD中设计电路板的其余部分,那么使用Ruby脚本可能是最简单的方法:

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

为了使用此脚本,只需.kicad_pcb在Kicad中保存一个空白文件,然后在右括号前的最后一节之后插入由该脚本生成的行。

在KiCAD中打开新的板文件,并享受由线段:)插入的椭圆。使用256个点可使椭圆变得如此平滑,以至于您不能说出它由KiCAD中的线组成。

如果只需要椭圆的一部分(例如,PCB的一个边缘),则在上面的脚本中添加一个边界框并舍弃位于该框之外的所有点是很简单的。


=选项2 =

另一种方法是完全在Inkscape中(或任何其他可以导出矢量图形的)设计电路板,然后找到一种将其导入KiCAD的方法。

Lorenzo提供了一种可以从Inkscape到Gerber的解决方案,网址为:http : //tech.groups.yahoo.com/group/kicad-users/message/15229

然后,我能够基于Lorenzo的解决方案构建一个Ruby脚本,该脚本绕过Gerber阶段并直接生成KiCAD板文件行。

过程如下:

  1. 在Inkscape中设计板
  2. 导出到HPGL
  3. 将HPGL转换为GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. 生成板文件行: gpt2pcbnew file.hpgl.gpt

这是gpt2pcbnew脚本的来源:

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

就像选项1中一样,生成的行进入保存在KiCAD中的空白板文件中。

该解决方案利用了HPGL格式在结构上与Gerber文件非常相似这一事实,从某种意义上说,它是一系列带有“ pen up”或“ pen down”的坐标,对应于Gerber中的D01和D02代码。

因此,在这种情况下,从贝塞尔曲线样条转换为线段的所有艰苦工作都是由Inkscape完成的。

=选项2的局限性=

这种方法有两个限制:

  1. 看来Inkscape无法将矩形导出到HPGL。您显然可以通过构造自己的矩形来解决此问题。
  2. 我目前无法正确获取导出对象的大小。对象最终在KiCAD中的尺寸大约是其两倍。我将尽快解决这个问题。

3

一段时间以前,我在Kicad上也遇到过类似的问题,它曾经对非标准形状提供了有限的支持,或者只是没有很好的记录。我最终要做的是用Gimp绘制形状(在我的情况下是非标准垫),并使用内置工具将其转换为模块。然后,我打开此模块文件,并将层更改为铜层。在Kicad中将其打开备份,您可以在任何层上选择非标准形状。不理想,但可以。


脚步:

  1. 在Gimp中创建工程图
  2. 使用Kicad随附的bitmap2component将其转换为组件
  3. 在gedit / notepad中打开模块,然后根据以下文档(第3.4节)编辑层信息:

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

4.保存更改并在Pcbnew中打开模块

结果(无法想到其他任何方法来制作未被焊料掩膜覆盖的圆形边缘,它实际上是一个内部带有组件的SMD焊盘):

在此处输入图片说明


嗯-这看起来是一种有趣的方法,但是我不确定“打开此模块文件并将层更改为铜层”的含义。我认为垫具有目标层,而不是模块本身。您能否扩展一下从所需形状的模块到所选图层上的实际图形的方法?谢谢!
巴兰特

答案已更新。
s3c

1
您可以仅通过圆形工具创建圆形边缘,然后,由于该区域已经充满了铜,您可以通过绘制一个圆形来移除阻焊层,但是这次是在前掩膜层上。
阿卜杜拉·卡拉曼

这是一个很好的建议,我希望我可以将其快速放入各种设计中的模块,想必两者都能奏效。+1
s3c

1

我曾与OrCAD,Eagle,Altium合作。尚未使用KiCAD。因此,以下是一个有根据的猜测。

通常,布局程序具有绘制圆弧的功能,但没有内置的绘制椭圆的功能。您可以近似带有圆弧的椭圆(更多信息请参见)。您也可以使用制图程序绘制椭圆,然后尝试将DXF导入布局程序(不知道KiCAD可以多么支持该功能)。

最后,无论如何,PCB晶圆厂可能会近似于带有多边形的曲线。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.