ขอบแผ่นวงรีใน KiCAD หรือ CircuitPro


11

ฉันกำลังพยายามใช้ KiCAD เพื่อออกแบบ PCB ซึ่งจะต้องเหมาะกับกรณีที่มีอยู่ อีกด้านหนึ่งของ PCB จะต้องมีรูปร่างเป็นส่วนโค้งวงรีที่เฉพาะเจาะจง ฉันสามารถหาพารามิเตอร์ของวงรีที่ต้องการได้ แต่ฉันไม่เห็นวิธีการวาด Edge Cut ใน KiCAD

เป็นไปได้ใน KiCAD หรือฉันใช้ซอฟต์แวร์ผิดสำหรับสิ่งนี้ บอร์ดจะทำใน LPKF ProtoMat ดังนั้นฉันจะใช้ซอฟต์แวร์ CircuitPro เพื่อสร้างคำแนะนำขั้นสุดท้ายสำหรับพล็อตเตอร์ (ไม่รู้วิธีการใช้งาน)

ดังนั้นคำถามของฉันคือว่าฉันควรจะคิดเกี่ยวกับการออกแบบรูปทรงบอร์ดใน KiCAD หรือปล่อยให้มันเป็นขั้นตอนต่อไปหรือไม่?

ขอขอบคุณ.


สิ่งนี้เป็นไปได้ด้วย KiCad และฉันได้สร้างโครงร่างบอร์ดดังกล่าวมาก่อน ตอนนี้ฉันอยู่มือถือ แต่ฉันสามารถเขียนคำตอบได้เมื่อฉันว่าง
abdullah kahraman

@abdullahkahraman: ฉันขอขอบคุณความเข้าใจของคุณ
Val Blant

คำตอบ:


25

ฉันคิดว่าตัวอย่างมีค่าหนึ่งล้านคำดังนั้นฉันต้องการทำแบบฝึกหัดเกี่ยวกับเรื่องนี้

นี่คือกล่องที่ฉันจะสร้างโครงร่างสำหรับ:

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือตัวอย่างการวาด PCB จากแผ่นข้อมูลของกล่อง:

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากเปิด Pcbnew ให้เลือกเลเยอร์สำหรับขอบ ในรุ่นปัจจุบันของ KiCad (BZR4008) เรียกว่า "Edge.Cuts" อย่างแรกฉันจะวาดขอบบนและล่างซึ่งก็คือ 62 มม. จากนั้นขอบซ้ายและขวาซึ่งมีขนาด 32 มม. ฉันใช้เครื่องมือด้านล่างซึ่งมีคำแนะนำเครื่องมือของ "เพิ่มกราฟิกหรือรูปหลายเหลี่ยม"

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ทุกอย่างเรียบร้อยฉันสามารถวาดรูปร่างอื่น ๆ :

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือเครื่องมือที่เราจะใช้สำหรับสิ่งนั้น:

ป้อนคำอธิบายรูปภาพที่นี่

เครื่องมือนี้เป็นวงกลมบางส่วน หากต้องการใช้งานให้คลิกที่จุดซึ่งจะเป็นศูนย์กลางของวงกลมของคุณแล้วด้วยเมาส์คุณจะกำหนดรัศมีด้วยเครื่องช่วยการมองเห็นของ KiCad สิ่งที่มีประโยชน์มากคือการเปลี่ยนเคอร์เซอร์เพื่อให้แสดงพิกัดเต็มโดยใช้ปุ่มที่แสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

เพื่อเป็นตัวอย่างลองทำขอบหันออกไปข้างนอก:

ป้อนคำอธิบายรูปภาพที่นี่

คุณไม่สามารถทำจุดไข่ปลาที่ถูกต้องด้วยวิธีนี้โชคไม่ดี คุณต้องใช้การฝังกราฟิกหรือวิธีการประมาณสำหรับสิ่งที่ Nick Alexeev พูดถึง


4

ในความคิดของ KiCad นั้นผมคิดว่าไฟล์ที่มันสร้างนั้นสามารถอ่านได้โดยมนุษย์และรูปแบบไฟล์นั้นมีเอกสารที่ดีพอสมควร พิกัด X และ Y มีการระบุในหนึ่งหมื่นเศษของนิ้วอ้างอิงถึง (0,0) ที่ด้านซ้ายบน โครงร่างบอร์ดสามารถแสดงโดยส่วนของเส้นและส่วนโค้งครึ่งวงกลม

เป็นเรื่องง่ายที่จะจัดการไฟล์. brd ของ Kicad โดยใช้ภาษาสคริปต์ที่คุณเลือก (เช่น Python) ถ้าฉันเป็นคุณฉันอาจจะเขียนสคริปต์ที่คำนวณส่วนของเส้นตามขวางเพื่อประมาณเค้าร่างวงรีของคุณและเขียนส่วนของเส้นตรงลงในไฟล์. brd ของคุณ


นั่นคือสิ่งที่ฉันทำลงเอย ขอบคุณ Rob! ฉันจะโพสต์คำอธิบายแบบเต็มของโซลูชันในอีกสักครู่
Val Blant

4

ฉันใช้เวลาสองสามวันในการย่อยข้อมูลทั้งหมดนี้ แต่ฉันสิ้นสุดด้วยวิธีแก้ไขปัญหา 2 ข้อ ฉันจะอธิบายวิธีแก้ปัญหาทั้งสองที่นี่

ฉันอยากจะขอบคุณ Lorenzo และ Rob Gilliom จากฟอรั่มผู้ใช้ kicad ที่ให้ความคิดและข้อมูลทั้งหมดที่ฉันต้องรวบรวมโซลูชั่นด้านล่าง ( http://tech.groups.yahoo.com/) กลุ่ม / kicad-users / message / 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" ซึ่งสอดคล้องกับรหัส D01 และ D02 ใน Gerber

ดังนั้นการทำงานอย่างหนักของการแปลงจาก bezier splines เป็นส่วนของเส้นจึงทำได้โดย Inkscape ในกรณีนี้

= ข้อ จำกัด 2 ตัวเลือก =

มีข้อ จำกัด สองสามประการเกี่ยวกับวิธีการนี้:

  1. ดูเหมือนว่า Inkscape ไม่สามารถส่งออกสี่เหลี่ยมไปยัง HPGL คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยสร้างรูปสี่เหลี่ยมผืนผ้าของคุณเอง
  2. ขณะนี้ฉันไม่สามารถรับขนาดของวัตถุที่ส่งออกได้ถูกต้อง วัตถุมีขนาดใหญ่เป็นสองเท่าใน KiCAD ฉันจะแก้ไขปัญหานี้ในไม่ช้า

3

ฉันมีปัญหาคล้ายกันกับ Kicad สักครู่มันกลับได้รับการสนับสนุนอย่าง จำกัด สำหรับรูปร่างที่ไม่ได้มาตรฐานหรือเป็นเอกสารที่ไม่ดี สิ่งที่ฉันทำลงไปคือการวาดรูปร่างของฉัน (ไม่ใช่แผ่นมาตรฐานในกรณีของฉัน) ด้วย Gimp และแปลงเป็นโมดูลโดยใช้เครื่องมือในตัว จากนั้นฉันก็เปิดไฟล์โมดูลนี้และเปลี่ยนชั้นเป็นชั้นทองแดง เปิดมันขึ้นมาใหม่ใน Kicad และคุณมีรูปร่างที่ไม่เป็นมาตรฐานตามที่คุณต้องการในทุกเลเยอร์ ไม่เหมาะ แต่ใช้งานได้


ขั้นตอน:

  1. สร้างภาพวาดใน Gimp
  2. ใช้ bitmap2component ที่มาพร้อมกับ Kicad เพื่อแปลงเป็นส่วนประกอบ
  3. เปิดโมดูลใน gedit / notepad และแก้ไขข้อมูลเลเยอร์ตามเอกสารต่อไปนี้ (ส่วน 3.4):

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

4. บันทึกการเปลี่ยนแปลงและเปิดโมดูลใน Pcbnew

ผลลัพธ์ (ไม่สามารถคิดวิธีอื่นในการสร้างขอบแบบวงกลมที่ไม่ครอบคลุมโดย soldermask จริง ๆ แล้วมันเป็นแผ่น SMD ที่มีส่วนประกอบอยู่ภายใน)

ป้อนคำอธิบายรูปภาพที่นี่


อืม - ดูเหมือนว่าวิธีการที่น่าสนใจ แต่ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "เปิดไฟล์โมดูลนี้และเปลี่ยนเลเยอร์เป็นเลเยอร์ทองแดง" ฉันคิดว่าแพดนั้นมีเลเยอร์เป้าหมายมากกว่าตัวโมดูลเอง คุณสามารถขยายไปอีกเล็กน้อยจากโมดูลรูปร่างที่ต้องการไปยังรูปวาดจริงบนเลเยอร์ที่คุณเลือกได้หรือไม่? ขอบคุณ!
Val Blant

อัปเดตคำตอบแล้ว
s3c

1
คุณสามารถสร้างขอบวงกลมโดยใช้เครื่องมือวงกลมจากนั้นเมื่อพื้นที่เต็มไปด้วยทองแดงแล้วคุณสามารถลบหน้ากากประสานโดยการวาดวงกลม แต่คราวนี้อยู่ในเลเยอร์มาสก์หน้า
abdullah kahraman

นั่นเป็นคำแนะนำที่ดีมากฉันต้องการโมดูลที่ฉันสามารถวางลงในการออกแบบที่หลากหลายได้อย่างรวดเร็ว แต่เดาว่าทั้งสองจะได้ผล +1
s3c

1

ฉันทำงานกับ OrCAD, Eagle, Altium แล้ว ยังไม่ได้ทำงานกับ KiCAD ดังนั้นต่อไปนี้คือการเดาที่มีการศึกษา

โดยทั่วไปแล้วโปรแกรมเลย์เอาต์มีฟังก์ชั่นสำหรับการวาดเส้นโค้งแบบวงกลม แต่ไม่มีฟังก์ชั่นในตัวสำหรับการวาดวงรี คุณสามารถประมาณวงรีด้วยส่วนโค้งวงกลม ( เพิ่มเติมได้ที่นี่ ) คุณสามารถวาดวงรีด้วยโปรแกรมร่างและลองนำเข้า DXF ไปยังโปรแกรมเลย์เอาต์ (ไม่ทราบว่า KiCAD สามารถรองรับสิ่งนี้ได้ดีเพียงใด)

ในท้ายที่สุด PCB fab จะประมาณโค้งกับรูปหลายเหลี่ยมอยู่แล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.