Các cạnh bảng elip trong KiCAD hoặc CircuitPro?


11

Tôi đang cố gắng sử dụng KiCAD để thiết kế PCB phải phù hợp với trường hợp hiện có. Một mặt của PCB cần được định hình là một đoạn cung hình elip cụ thể. Tôi có thể tìm ra các tham số của hình elip mong muốn, nhưng tôi không thấy cách thực sự vẽ Edge Cut như vậy trong KiCAD.

Điều này có thể xảy ra trong KiCAD hay tôi đang sử dụng phần mềm sai cho việc này? Bảng sẽ được tạo trên LPKF ProtoMat, vì vậy tôi sẽ sử dụng phần mềm CircuitPro để tạo hướng dẫn cuối cùng cho máy vẽ (chưa biết cách hoạt động của nó).

Vì vậy, câu hỏi của tôi là liệu tôi nên suy nghĩ về thiết kế hình dạng bảng trong KiCAD, hoặc để nó cho đến một bước sau?

Cảm ơn bạn.


Điều này là có thể với KiCad và tôi đã tạo ra những phác thảo như vậy trước đây. Bây giờ tôi đang sử dụng điện thoại di động, tuy nhiên tôi có thể viết câu trả lời khi có sẵn.
abdullah kahraman

@abdullahkahraman: Tôi đánh giá cao sự sáng suốt của bạn.
Val Blant

Câu trả lời:


25

Tôi nghĩ một ví dụ đáng giá một triệu từ, vì vậy tôi muốn làm một hướng dẫn về điều này.

Đây là hộp tôi sẽ tạo ra một phác thảo cho:

nhập mô tả hình ảnh ở đây

Dưới đây là ví dụ bản vẽ PCB từ biểu dữ liệu của hộp:

nhập mô tả hình ảnh ở đây

Sau khi mở Pcbnew, chọn lớp cho các cạnh. Trong phiên bản hiện tại của KiCad (BZR4008), nó được gọi là "Edge.Cuts". Đầu tiên, tôi sẽ vẽ các cạnh trên và dưới, là 62 mm. Sau đó, các cạnh trái và phải, là 32 mm. Tôi đang sử dụng công cụ dưới đây có một chú giải công cụ "Thêm dòng đồ họa hoặc đa giác".

nhập mô tả hình ảnh ở đây

Bây giờ mọi thứ đều ổn, tôi có thể vẽ các hình dạng khác:

nhập mô tả hình ảnh ở đây

Đây là công cụ chúng ta sẽ sử dụng cho việc đó:

nhập mô tả hình ảnh ở đây

Công cụ này về cơ bản là một vòng tròn một phần. Để sử dụng nó, nhấp vào điểm sẽ là trung tâm của vòng tròn của bạn, sau đó với chuột, bạn sẽ đặt bán kính với sự trợ giúp trực quan của KiCad. Một điều rất hữu ích là thay đổi con trỏ để nó hiển thị tọa độ đầy đủ, với nút hiển thị bên dưới:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Chỉ vì một ví dụ, chúng ta hãy làm cho cạnh hướng ra bên ngoài:

nhập mô tả hình ảnh ở đây

Thật không may, bạn không thể thực hiện các hình elip chính xác bằng phương pháp này. Bạn phải sử dụng nhúng đồ họa, hoặc các phương pháp gần đúng cho điều đó, được đề cập bởi Nick Alexeev.


4

Theo ý tôi, ân huệ tiết kiệm của KiCad là các tệp mà nó tạo ra có thể đọc được và định dạng tệp được ghi lại một cách hợp lý. Các tọa độ X và Y được chỉ định bằng mười phần nghìn inch, được tham chiếu đến (0,0) ở phía trên bên trái. Một phác thảo bảng có thể được đại diện bởi các phân đoạn dòng và vòng cung bán nguyệt.

Thật đơn giản để thao tác các tệp .brd của Kicad bằng ngôn ngữ kịch bản bạn chọn (ví dụ: Python). Nếu tôi là bạn, có lẽ tôi sẽ viết một tập lệnh tính toán các phân đoạn dòng piecewise để xấp xỉ phác thảo hình elip của bạn và viết các phân đoạn dòng vào tệp .brd của bạn.


Đó chính xác là những gì tôi đã làm. Cảm ơn Rob! Tôi sẽ đăng một mô tả đầy đủ về giải pháp một chút.
Val Blant

4

Tôi mất vài ngày để tiêu hóa tất cả thông tin này, nhưng tôi đã kết thúc với 2 giải pháp cho vấn đề này. Tôi sẽ mô tả cả hai giải pháp ở đây.

Tôi muốn cảm ơn Lorenzo và Rob Gilliom từ diễn đàn người dùng kicad, những người đã cung cấp cho tôi tất cả các ý tưởng và thông tin mà tôi cần để đưa ra các giải pháp bên dưới ( http://tech.groups.yahoo.com/ nhóm / kicad-users / message / 15220 ).

= Tùy chọn 1 =

Nếu bạn muốn nhập một phân đoạn hình elip duy nhất và thiết kế phần còn lại của bảng trong KiCAD, thì tập lệnh Ruby này có lẽ là cách dễ nhất để đi:

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

Để sử dụng tập lệnh này, chỉ cần lưu một .kicad_pcbtệp trống trong Kicad và sau đó chèn các dòng được tạo bởi tập lệnh này sau phần cuối cùng trước dấu ngoặc kép.

Mở tệp bảng mới trong KiCAD và tận hưởng hình elip của bạn được nội suy bởi các phân đoạn dòng :). Sử dụng 256 điểm làm cho hình elip mượt mà đến mức bạn không thể biết nó bao gồm các dòng trong KiCAD.

Nếu bạn chỉ muốn một phần của hình elip (ví dụ một cạnh của PCB), việc thêm một hộp giới hạn vào tập lệnh ở trên và loại bỏ tất cả các điểm nằm ngoài hộp.


= Tùy chọn 2 =

Một cách tiếp cận khác là thiết kế bảng của bạn hoàn toàn trong Inkscape (hoặc bất cứ thứ gì khác có thể xuất đồ họa vector) và tìm cách nhập bảng đó vào KiCAD.

Lorenzo đã cung cấp một giải pháp có thể đi từ Inkscape đến Gerber tại đây: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Sau đó, tôi đã có thể xây dựng dựa trên giải pháp của Lorenzo để tạo tập lệnh Ruby bỏ qua giai đoạn Gerber và tạo trực tiếp các dòng tệp bảng KiCAD.

Quá trình diễn ra như sau:

  1. Thiết kế bảng của bạn trong Inkscape
  2. Xuất sang HPGL
  3. Chuyển đổi HPGL sang GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Tạo dòng tập tin bảng: gpt2pcbnew file.hpgl.gpt

Đây là nguồn cho gpt2pcbnewkịch bản:

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

Giống như trong Tùy chọn 1, các dòng được tạo đi vào một tệp bảng trống được lưu trong KiCAD.

Giải pháp này thúc đẩy thực tế là định dạng HPGL rất giống với cấu trúc của nó với các tệp Gerber, theo nghĩa là nó là một chuỗi tọa độ với "pen up" hoặc "pen down", tương ứng với mã D01 và D02 trong Gerber.

Vì vậy, tất cả công việc khó khăn của việc chuyển đổi từ các spline bezier sang các phân đoạn dòng được Inkscape thực hiện trong trường hợp này.

= Hạn chế 2 tùy chọn =

Có một vài hạn chế với phương pháp này:

  1. Có vẻ như Inkscape không thể xuất hình chữ nhật thành HPGL. Bạn rõ ràng có thể giải quyết điều này bằng cách xây dựng các hình chữ nhật của riêng bạn.
  2. Tôi hiện không thể có được kích thước của các đối tượng xuất khẩu ngay. Các đối tượng kết thúc lớn gấp đôi trong KiCAD. Tôi sẽ sớm nghiên cứu giải pháp cho vấn đề này.

3

Tôi đã gặp vấn đề tương tự với Kicad một thời gian trước, nó từng bị hạn chế hỗ trợ cho các hình dạng không chuẩn hoặc nó chỉ không được ghi chép tốt. Điều cuối cùng tôi đã làm là vẽ hình dạng của mình (không phải là tiêu chuẩn trong trường hợp của tôi) với Gimp và chuyển đổi nó thành một mô-đun bằng công cụ tích hợp. Sau đó tôi mở tập tin mô-đun này và thay đổi lớp thành các lớp đồng. Mở nó trở lại trong Kicad và bạn có hình dạng không chuẩn của sự lựa chọn của bạn trên bất kỳ lớp nào. Không lý tưởng nhưng nó hoạt động.


Các bước:

  1. Tạo một bản vẽ trong Gimp
  2. Sử dụng bitmap2component đi kèm với Kicad để chuyển đổi nó thành một thành phần
  3. Mở mô-đun trong gedit / notepad và chỉnh sửa thông tin lớp theo tài liệu sau (Phần 3.4):

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

4. Lưu các thay đổi và mở mô-đun trong Pcbnew

Kết quả (không thể nghĩ ra bất kỳ cách nào khác để tạo ra một cạnh tròn không được bao phủ bởi sellermask, đó thực sự là một miếng đệm SM với các thành phần bên trong nó):

nhập mô tả hình ảnh ở đây


Hmm - đây có vẻ là một cách tiếp cận thú vị, nhưng tôi không chắc ý của bạn là gì khi "mở tệp mô-đun này và thay đổi lớp thành các lớp đồng". Tôi nghĩ rằng các miếng đệm có một lớp mục tiêu, chứ không phải là chính mô-đun. Bạn có thể mở rộng một chút về cách bạn đi từ một mô-đun có hình dạng mong muốn sang một bản vẽ thực tế trên lớp bạn chọn không? Cảm ơn!
Val Blant

Trả lời cập nhật.
s3c

1
Bạn có thể tạo cạnh tròn chỉ bằng công cụ hình tròn, sau đó, vì khu vực này đã được lấp đầy bằng đồng, bạn có thể loại bỏ mặt nạ hàn bằng cách vẽ một vòng tròn nhưng lần này là trên lớp Mặt nạ trước.
abdullah kahraman

Đó là một gợi ý khá hay, tôi muốn một mô-đun mà tôi có thể nhanh chóng thả vào các thiết kế khác nhau, đoán cả hai sẽ hoạt động. +1
s3c

1

Tôi đã làm việc với OrCAD, Eagle, Altium. Không làm việc với KiCAD. Vì vậy, sau đây là một phỏng đoán có giáo dục.

Thông thường, các chương trình bố trí có các chức năng để vẽ các cung tròn, nhưng không có chức năng tích hợp để vẽ các hình elip. Bạn có thể ước chừng một hình elip với các cung tròn ( thêm ở đây ). Bạn cũng có thể vẽ hình elip bằng chương trình soạn thảo và thử nhập DXF vào chương trình bố cục (không biết KiCAD có thể hỗ trợ tốt như thế nào).

Cuối cùng, fab PCB, có lẽ, sẽ xấp xỉ các đường cong với đa giác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.