Tepi papan elips di KiCAD atau CircuitPro?

11

Saya mencoba menggunakan KiCAD untuk mendesain PCB yang harus sesuai dengan case yang ada. Satu sisi PCB perlu dibentuk sebagai segmen busur elips tertentu. Saya bisa mengetahui parameter elips yang diinginkan, tapi saya tidak melihat cara menggambar Edge Cut di KiCAD.

Apakah ini mungkin di KiCAD, atau saya menggunakan perangkat lunak yang salah untuk ini? Papan akan dibuat pada LPKF ProtoMat, jadi saya akan menggunakan perangkat lunak CircuitPro untuk membuat instruksi final untuk plotter (belum tahu cara kerjanya).

Jadi pertanyaan saya adalah apakah saya harus berpikir tentang desain bentuk papan di KiCAD, atau membiarkannya sampai langkah selanjutnya?

Terima kasih.

Val Blant
sumber
Ini dimungkinkan dengan KiCad dan saya telah membuat garis besar papan sebelumnya. Saya menggunakan ponsel sekarang, namun saya dapat menulis jawaban saat saya tersedia.
abdullah kahraman
@abdullahkahraman: Saya menghargai wawasan Anda.
Val Blant

Jawaban:

25

Saya pikir contoh bernilai jutaan kata, jadi saya ingin membuat tutorial tentang ini.

Inilah kotak yang akan saya buat garis besar untuk:

masukkan deskripsi gambar di sini

Berikut ini adalah contoh gambar PCB dari lembar data kotak:

masukkan deskripsi gambar di sini

Setelah membuka Pcbnew, pilih layer untuk tepinya. Dalam versi KiCad saat ini (BZR4008), itu disebut "Edge.Cuts". Pertama, saya akan menggambar tepi atas dan bawah, yaitu 62 mm. Lalu ujung kiri dan kanan, yaitu 32 mm. Saya menggunakan alat di bawah ini yang memiliki tooltip "Tambahkan garis grafik atau poligon".

masukkan deskripsi gambar di sini

Sekarang semuanya baik-baik saja, saya bisa menggambar bentuk lainnya:

masukkan deskripsi gambar di sini

Inilah alat yang akan kita gunakan untuk itu:

masukkan deskripsi gambar di sini

Alat ini pada dasarnya adalah lingkaran parsial. Untuk menggunakannya, klik pada titik yang akan menjadi pusat lingkaran Anda, lalu dengan mouse, Anda akan mengatur radius dengan bantuan visual dari KiCad. Yang sangat membantu adalah mengubah kursor sehingga menunjukkan koordinat penuh, dengan tombol yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Hanya sebagai contoh, mari kita membuat tepi menghadap ke luar:

masukkan deskripsi gambar di sini

Sayangnya, Anda tidak dapat membuat elips yang benar dengan metode ini. Anda harus menggunakan embedding grafis, atau metode perkiraan untuk itu, yang disebutkan oleh Nick Alexeev.

abdullah kahraman
sumber
4

Anugrah keselamatan KiCad, menurut pendapat saya, adalah bahwa file yang dibuatnya dapat dibaca oleh manusia dan format file tersebut didokumentasikan dengan cukup baik. Koordinat X dan Y ditentukan dalam seperseribu inci, dirujuk ke (0,0) di kiri atas. Garis papan dapat diwakili oleh segmen garis dan busur setengah lingkaran.

Sangat mudah untuk memanipulasi file .brd Kicad menggunakan bahasa skrip pilihan Anda (misalnya Python). Jika saya jadi Anda, saya mungkin akan menulis skrip yang menghitung segmen garis piecewise untuk memperkirakan garis besar elips Anda dan menulis segmen garis ke dalam file .brd Anda.

rampok
sumber
Itulah yang akhirnya saya lakukan. Rob terima kasih! Saya akan memposting deskripsi lengkap dari solusi dalam sedikit.
Val Blant
4

Butuh beberapa hari untuk mencerna semua info ini, tetapi saya mengakhiri dengan 2 solusi untuk masalah ini. Saya akan menjelaskan kedua solusi di sini.

Saya ingin mengucapkan terima kasih kepada Lorenzo dan Rob Gilliom dari forum pengguna kicad, yang telah memberi saya semua ide dan informasi yang saya perlukan untuk menyatukan solusi di bawah ini ( http://tech.groups.yahoo.com/ grup / kicad-pengguna / pesan / 15220 ).

= Opsi 1 =

Jika Anda ingin mengimpor segmen elips tunggal dan mendesain seluruh papan di KiCAD, maka skrip Ruby ini mungkin cara termudah untuk dilakukan:

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

Untuk menggunakan skrip ini, cukup simpan .kicad_pcbfile kosong di Kicad dan kemudian masukkan baris yang dihasilkan oleh skrip ini setelah bagian terakhir sebelum kurung tutup.

Buka file papan baru di KiCAD dan nikmati elips Anda diinterpolasi oleh segmen garis :). Menggunakan 256 poin membuat elips begitu halus sehingga Anda tidak bisa mengatakan itu terdiri dari garis-garis di KiCAD.

Jika Anda hanya menginginkan sebagian dari elips (satu sisi PCB Anda, misalnya), mudah untuk menambahkan kotak pembatas ke skrip di atas dan membuang semua titik yang terletak di luar kotak.


= Opsi 2 =

Pendekatan lain adalah mendesain papan Anda sepenuhnya di Inkscape (atau apa pun yang dapat mengekspor grafis vektor), dan menemukan cara untuk mengimpornya ke KiCAD.

Lorenzo telah memberikan solusi yang dapat beralih dari Inkscape ke Gerber di sini: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Saya kemudian dapat membangun di atas solusi Lorenzo untuk membuat skrip Ruby yang melewati tahap Gerber dan menghasilkan baris file papan KiCAD secara langsung.

Prosesnya seperti ini:

  1. Desain papan Anda di Inkscape
  2. Ekspor ke HPGL
  3. Ubah HPGL ke GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Hasilkan garis file papan: gpt2pcbnew file.hpgl.gpt

Berikut adalah sumber untuk gpt2pcbnewskrip:

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

Sama seperti di Opsi 1, baris yang dihasilkan masuk ke file papan kosong yang disimpan di KiCAD.

Solusi ini memanfaatkan fakta bahwa format HPGL sangat mirip dalam konstruksinya dengan file Gerber, dalam arti bahwa itu adalah serangkaian koordinat dengan "pen up" atau "pen down", yang sesuai dengan kode D01 dan D02 di Gerber.

Jadi semua kerja keras untuk mengubah dari splines bezier ke segmen garis dilakukan oleh Inkscape dalam kasus ini.

= Opsi 2 Batasan =

Ada beberapa batasan dengan pendekatan ini:

  1. Tampaknya Inkscape tidak dapat mengekspor persegi panjang ke HPGL. Anda jelas dapat mengatasinya dengan membangun persegi panjang Anda sendiri.
  2. Saat ini saya tidak bisa mendapatkan ukuran objek yang diekspor dengan benar. Objek berakhir kira-kira dua kali lebih besar di KiCAD. Saya akan mengerjakan solusi untuk ini segera.
Val Blant
sumber
3

Saya memiliki masalah yang sama dengan Kicad beberapa waktu lalu, ia pernah memiliki dukungan terbatas untuk bentuk non-standar atau tidak terdokumentasi dengan baik. Apa yang akhirnya saya lakukan adalah menggambar bentuk saya (pad non standar dalam kasus saya) dengan Gimp dan mengubahnya menjadi modul menggunakan alat bawaan. Saya kemudian membuka file modul ini dan mengubah lapisan ke lapisan tembaga. Buka kembali di Kicad dan Anda memiliki bentuk yang tidak standar pilihan Anda di lapisan apa pun. Tidak ideal tetapi berhasil.


Langkah:

  1. Buat gambar di Gimp
  2. Gunakan bitmap2component yang disertakan dengan Kicad untuk mengubahnya menjadi komponen
  3. Buka modul di gedit / notepad dan edit informasi layer sesuai dengan dokumen berikut (Bagian 3.4):

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

4.Simpan perubahan dan buka modul di Pcbnew

Hasil (tidak bisa memikirkan cara lain untuk membuat tepi melingkar yang tidak ditutupi oleh soldermask, itu sebenarnya adalah bantalan SMD dengan komponen di dalamnya):

masukkan deskripsi gambar di sini

s3c
sumber
Hmm - ini terlihat seperti pendekatan yang menarik, tapi saya tidak yakin apa yang Anda maksud dengan "membuka file modul ini dan mengubah layer ke layer tembaga". Saya pikir bantalan memiliki lapisan target, bukan modul itu sendiri. Bisakah Anda mengembangkan sedikit tentang bagaimana Anda beralih dari modul bentuk yang diinginkan ke gambar aktual pada lapisan pilihan Anda? Terima kasih!
Val Blant
Jawaban diperbarui.
s3c
1
Anda dapat membuat tepi lingkaran hanya dengan alat lingkaran, kemudian, karena area tersebut sudah diisi dengan tembaga, Anda dapat menghapus topeng solder dengan menggambar lingkaran tetapi kali ini pada lapisan Topeng Depan.
abdullah kahraman
Itu saran yang cukup bagus, saya ingin modul yang saya dapat dengan cepat jatuh ke berbagai desain, saya kira keduanya akan bekerja. +1
s3c
1

Saya telah bekerja dengan OrCAD, Eagle, Altium. Belum bekerja dengan KiCAD. Jadi, berikut ini adalah tebakan yang berpendidikan.

Biasanya, program tata letak memiliki fungsi untuk menggambar busur lingkaran, tetapi tidak memiliki fungsi bawaan untuk menggambar elips. Anda dapat memperkirakan elips dengan busur lingkaran ( lebih lanjut di sini ). Anda juga bisa menggambar elips dengan program penyusunan dan mencoba mengimpor DXF ke dalam program tata letak (tidak tahu seberapa baik KiCAD dapat mendukung ini).

Pada akhirnya, fab PCB akan, mungkin, memperkirakan kurva dengan poligon.

Nick Alexeev
sumber