KiCAD veya CircuitPro'da eliptik tahta kenarları?


11

Mevcut bir kasaya uyması gereken bir PCB tasarlamak için KiCAD kullanmaya çalışıyorum. PCB'nin bir tarafının belirli bir eliptik ark segmenti olarak şekillendirilmesi gerekir. İstenen elipsin parametrelerini anlayabilirim, ancak KiCAD'de böyle bir Kenar Kesiminin nasıl çizileceğini görmüyorum.

KiCAD'de bu mümkün mü yoksa bunun için yanlış bir yazılım mı kullanıyorum? Pano LPKF ProtoMat üzerinde yapılacaktır, bu yüzden plotter için son talimatları oluşturmak için CircuitPro yazılımını kullanacağım (henüz nasıl çalıştığını bilmiyorum).

Yani sorularım KiCAD'de tahta şeklinin tasarımını düşünmeli miyim yoksa daha sonraki bir adıma kadar bırakmalı mıyım?

Teşekkür ederim.


KiCad ile bu mümkün ve daha önce böyle bir tahta taslakları oluşturdum. Şu anda mobil cihazdayım, ancak müsait olduğumda yanıt yazabilirim.
abdullah kahraman

@abdullahkahraman: Fikrinizi takdir ediyorum.
Val Blant

Yanıtlar:


25

Bir milyon kelimeye değecek bir örnek olduğunu düşünüyorum, bu yüzden bu konuda bir eğitim yapmak istedim.

İşte için bir taslak oluşturacağım kutu:

resim açıklamasını buraya girin

Kutunun veri sayfasından bir örnek PCB çizimi:

resim açıklamasını buraya girin

Pcbnew'i açtıktan sonra kenarlar için katmanı seçin. KiCad'in (BZR4008) geçerli sürümünde buna "Edge.Cuts" adı verilir. İlk olarak, 62 mm olan üst ve alt kenarları çizeceğim. Sonra 32 mm olan sol ve sağ kenarlar. "Grafik çizgi veya çokgen ekle" araç ipucu olan aşağıdaki aracı kullanıyorum.

resim açıklamasını buraya girin

Şimdi her şey yolunda, diğer şekilleri çizebilirim:

resim açıklamasını buraya girin

İşte bunun için kullanacağımız araç:

resim açıklamasını buraya girin

Bu araç temel olarak kısmi bir çemberdir. Kullanmak için, dairenizin merkezi olacak noktaya tıklayın, daha sonra fare ile yarıçapı KiCad'in görsel yardımı ile ayarlayacaksınız. Çok yararlı bir şey, imleci aşağıda gösterilen düğme ile tam koordinatları gösterecek şekilde değiştirmektir:

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Sadece bir örnek uğruna, kenarı dışarıya bakalım:

resim açıklamasını buraya girin

Ne yazık ki bu yöntemle doğru elips yapamazsınız. Nick Alexeev'in bahsettiği grafik yerleştirmeyi veya bunun için yaklaşım yöntemlerini kullanmalısınız.


4

KiCad'ın tasarruf zarafeti, bence, oluşturduğu dosyaların insan tarafından okunabilir olması ve dosya formatının makul derecede iyi belgelenmiş olmasıdır. X ve Y koordinatları, sol üstte (0,0) olarak belirtilen bir inçin binde biri cinsinden belirtilir. Bir pano taslağı çizgi parçaları ve yarım daire yaylar ile temsil edilebilir.

Kicad'ın .brd dosyalarını komut dosyası dilinizi (örn. Python) kullanarak değiştirmek kolaydır. Siz olsaydım, muhtemelen eliptik anahatlarınıza yaklaşmak için parçalı çizgi parçalarını hesaplayan bir komut dosyası yazardım ve çizgi parçalarını .brd dosyanıza yazardım.


Sonunda bunu yaptım. Teşekkürler Rob! Biraz çözümün tam bir açıklamasını göndereceğim.
Val Blant

4

Tüm bu bilgileri sindirmek birkaç günümü aldı, ancak bu soruna 2 çözüm buldum. Burada her iki çözümü de anlatacağım.

Aşağıdaki çözümleri bir araya getirmem için gereken tüm fikirleri ve bilgileri bana sağlayan kicad kullanıcıları forumundan Lorenzo ve Rob Gilliom'a teşekkür etmek istiyorum ( http://tech.groups.yahoo.com/ grup / kicad kullanıcıları / ileti / 15220 ).

= Seçenek 1 =

Tek bir eliptik segmenti içe aktarmak ve panonun geri kalanını KiCAD'de tasarlamak istiyorsanız, bu Ruby betiği muhtemelen en kolay yoldur:

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

Bu komut dosyasını kullanmak için, boş bir .kicad_pcbdosyayı Kicad'a kaydedin ve sonra bu komut dosyası tarafından oluşturulan satırları kapanış ayraçından önceki son bölümden sonra ekleyin.

KiCAD'de yeni tahta dosyasını açın ve çizgi parçalarının enterpolasyonlu elipsin tadını çıkarın :). 256 puan kullanmak elipsi o kadar pürüzsüz hale getirir ki KiCAD'deki çizgilerden oluştuğunu söyleyemezsiniz.

Elipsin yalnızca bir kısmını (örneğin PCB'nizin bir kenarı) istiyorsanız, yukarıdaki komut dosyasına bir sınırlayıcı kutu eklemek ve kutunun dışında kalan tüm noktaları atmak önemsizdir.


= Seçenek 2 =

Başka bir yaklaşım, tahtanızı tamamen Inkscape'te (veya vektör grafikleri dışa aktarabilecek herhangi bir şey) tasarlamak ve KiCAD'e aktarmak için bir yol bulmak olacaktır.

Lorenzo, Inkscape'ten Gerber'e buradan gidebilecek bir çözüm sundu: http://tech.groups.yahoo.com/group/kicad-users/message/15229

Daha sonra Gerber sahnesini atlayan ve doğrudan KiCAD tahta dosya satırları üreten bir Ruby senaryosu yapmak için Lorenzo'nun çözümünü geliştirebildim.

Süreç şöyle gider:

  1. Inkscape'de tahtanızı tasarlayın
  2. HPGL'ye aktar
  3. Dönüştürmek HPGL GnuPlot Ascii: hp2xx -t -m gpt file.hpgl
  4. Pano dosya satırları oluşturun: gpt2pcbnew file.hpgl.gpt

gpt2pcbnewKomut dosyasının kaynağı şöyledir :

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

Tıpkı Seçenek 1'de olduğu gibi, oluşturulan satırlar KiCAD'e kaydedilen bir boş tahta dosyasına gider.

Bu çözüm, HPGL formatının yapımında Gerber dosyalarına çok benzer olması gerçeğinden yararlanmaktadır, bir anlamda Gerber'deki D01 ve D02 kodlarına karşılık gelen "kalem yukarı" veya "kalem aşağı" içeren bir dizi koordinattır.

Bu nedenle bezier spline'lardan çizgi segmentlerine dönüştürmenin tüm zor işleri Inkscape tarafından bu durumda yapılır.

= Seçenek 2 Sınırlamalar =

Bu yaklaşımla ilgili birkaç sınırlama vardır:

  1. Inkscape'in dikdörtgenleri HPGL'ye aktaramayacağı anlaşılıyor. Kendi dikdörtgenlerinizi oluşturarak bunu geçici olarak çözebilirsiniz.
  2. Şu anda dışa aktarılan nesnelerin boyutlarını doğru olarak alamıyorum. Nesneler KiCAD'de kabaca iki kat daha büyüktür. Yakında buna bir çözüm üzerinde çalışacağım.

3

Bir süre önce Kicad ile benzer bir sorun yaşadım, standart olmayan şekiller için sınırlı bir desteği var ya da iyi belgelenmemiş. Yaptığım şey Gimp ile şekilimi (standart olmayan ped) çizmek ve yerleşik aracı kullanarak bir modüle dönüştürmekti. Sonra bu modül dosyasını açtım ve katmanı bakır katmanlarla değiştirdim. Kicad'da tekrar açın ve herhangi bir katmanda seçtiğiniz standart olmayan şekillere sahipsiniz. İdeal değil ama işe yarıyor.


Adımlar:

  1. Gimp'de çizim oluşturma
  2. Bir bileşene dönüştürmek için Kicad ile birlikte verilen bitmap2 bileşenini kullanın
  3. Modülü gedit / notepad'de açın ve katman bilgilerini aşağıdaki belgeye göre düzenleyin (Bölüm 3.4):

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

4.Değişiklikleri kaydedin ve modülü Pcbnew'de açın

Sonuçlar (lehim maskesiyle kaplanmamış dairesel bir kenar yapmanın başka bir yolunu düşünemedim, aslında içinde bileşenleri olan bir SMD pedi):

resim açıklamasını buraya girin


Hmm - bu ilginç bir yaklaşım gibi görünüyor, ancak "bu modül dosyasını açıp katmanı bakır katmanlarına değiştirdi" ile ne demek istediğinizden emin değilim. Pedlerin modülün kendisinden ziyade bir hedef katmanı olduğunu düşündüm. İstediğiniz şekle sahip bir modülden istediğiniz katmandaki gerçek çizime nasıl geçtiğinize dair biraz genişletebilir misiniz? Teşekkürler!
Val Blant

Yanıt güncellendi.
s3c

1
Sadece daire aracıyla dairesel bir kenar oluşturabilirsiniz, daha sonra alan zaten bakırla doldurulduğundan, lehim maskesini bir daire çizerek kaldırabilirsiniz, ancak bu sefer Ön Maske katmanında.
abdullah kahraman

Bu oldukça iyi bir öneri, çeşitli tasarımlara çabucak düşebileceğim bir modül istedim, sanırım her ikisi de işe yarayacaktı. +1
s3c

1

OrCAD, Eagle, Altium ile çalıştım. KiCAD ile çalışmadım. Yani, aşağıdakiler eğitimli bir tahmindir.

Tipik olarak, yerleşim programlarının dairesel yay çizme işlevleri vardır, ancak elips çizmek için yerleşik işlevi yoktur. Dairesel yaylı bir elipse yaklaşabilirsiniz ( daha fazla bilgi ). Ayrıca bir çizim programı ile bir elips çizebilir ve bir DXF'yi düzen programına aktarmayı deneyebilirsiniz (KiCAD'in bunu ne kadar iyi destekleyebileceğini bilmiyorum).

Sonunda, PCB fab muhtemelen çokgenler ile yaklaşık eğrileri zaten olacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.