Takim capi kompanzasyonu

Başlatan z, 16 Haziran 2022, 18:24:20

z



Resimde siyah nesneyi levhadan kesip cikaracak cnc yaziliminda yesil renkteki kose koordinatlari bellidir.

r yaricapli bir takimla bu kesimi yapabilmek icin kirmizi yolu takip etmek gerekiyor.

Yesil noktalarin koordinatini verdigimizde kirmizi noktalarin koordinatini nasil bir algoritma ile hesaplayabiliriz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

devrecii

#1
Pek açıklayıcı olmadı ama yol gösterici olacaktır.  Bütün noktaların doğu gidiş yönü bulunduktan sonra, her noktanın bağlı olduğu  cizgilerin  diki toplamına   V+= Toplam* R/( dot(N1,N2 ))


iyildirim

Öncelikle kesim noktalarından oluşan poligonun CW veya CCW olduğu ve G41/42 komutlarına göre içten/dıştan kompanzasyon yapılacağı tespit edilir.

Sonrası @devrecii 'nin de dediği gibi takım yarıçapı kadar dik uzağına paralel çizgiler çizilip yeni bir poligon oluşturulur.
Cizilen paralel çizgiler orijinal poligonun sırasında ardışıkları ile kesiştiği nokta hesaplanır.
Bunun için line intersection algoritmaları nette var.

İsterseniz kesişme noktalarını G2/3 ile döndürüp hızı sıfıra indirmemek te mümkün olur.


z

#3
Yok kafam almiyor. Bu soru yillardir kafamin bir kosesinde. Aciklamaniz yeterli olmadi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

iyildirim

Resimdeki yeşil noktalar bir poligon tarif eder.
Poligonu oluştururken sırası ve CW veya CCW olduğu/yönü önemli.

Poligonu saat yönünde tarif etmiş olalım. Başlangıç noktası da sol üst köşe olsun diyelim.

Orijinal poligondan resimde siyah ile çizilmiş line'ları üretelim.
En üstteki yatay line'ın eğimini bulalım. 0 derece. Buna 90 derece dik, @devrecii'nin çiziminde üst yatay çizgiye dik vektör üzerinde, takım yarıçapı kadar ilerleyip orjinal line'a paralel bir line çizelim.

Aynı işlemi diğer line'lar içinde yapalım.
Elimizde orijinal line'dan takım yarı çapı kadar daha büyük ama köşeleri birleşmemiş takım yolunu tarif eden line'lar oldu. Resimdeki kırmızı çizimin köşelerdeki dairelerinin şilindiği durum.

Oluşturduğumuz yeni line'ları line-line intersection algoritması kullanıp keşisim noktalarını hesaplayalım.
Bu hesaplanan kesişim noktaları da kırmızı çemberlerin merkezi ile gösterilen noktalar olur.




esensoy

Hocam verilenlerde eksik var,
CAM programlarına o noktalardan hangi sırayla geçeceği bildirilir,
Hangi yönde gitmesi gerektiği de bildirilir,
Ayrıca içten mi dolanacak dıştan mı dolanacak bunlar da bildirilir,

Bu verilenler olmadan yapan CAM programı görmedim,
Bu verilenlerle de çözülüyordur herhalde?
En tehlikeli an "zafer" anıdır.

devrecii

Hocam şu mavi okları oluşturabiliyorsun, burada sorun yok değil mi ? Noktalar bu ok yönunde itelenecek ve genisleyecek , ama sorun okların
yanlış yönu göstermesi okların yonunu iç çarpım "cross" ile dogruluğunu bulmak gerekirse ters cevirmek.

https://www.dosya.tc/server36/8xv4pe/genislet.rar.html

Böyle deneme yaptım kod sadece VectorNormalHsp(void) orası, diğer yerler windwsla ilgili gayet kücük bir kod açıklama satırı ekledim, bakabilirisn.

z

Bu sorunla 30 sene once karsilasmis ve cozum getirememistim. Bugune kadar arada bir aklima gelir ama pes ederdim.

Simdi kendi PCB kazima programimi yazabilirim artik.

Devreci cok makbule gecti.

Bu problem sorun oldugu icin kazima programimi cok farkli sekilde yaziyordum.

Eger kafa yormak istersen bir de su soruma bak. Belki forumda daha once sormusum ve tartisilmistir.

PCB kazima isleminde illaki cizilen yollarin kenarindan kazimak gerekmez. Onerdigim yontem pcb nin cok cok hizli yapilmasina izin verir. Prototip yaparken yollarin illaki cizildigi gibi gorunmesine gerek yok.

Asagida sagdaki cizim benim yontemim. Makinanin kesmesi gereken kesik sayisi cok az.
Bu algoritmayi nasil yazariz?

Benim yazdigim kod cok hantal.






Bana e^st de diyebilirsiniz.   www.cncdesigner.com

devrecii

Bu çizdiğin devrede etkisi çok ama normal bir devre için düşünürsek 2X hız kazandırır.

Mesela iki tane yan yana yol varsa bunların kenarlarında 4 defa kazıma yapacak ama senin mantığınla ortasından tek defa gittiği için iş yarı yarıya düşücek , tabi görüntüde bozulacak ,çok zor değil aslında, yan yana giden iki kesiği bulup teke düşürmek. Pixel mi tarıyorsun hocam?

elektronik kassabı

Eşlenik kırmızı ve yeşil noktaların arasındaki mesafe her zaman aynı, ama 4 farklı yön var. Değil mi? Bu yönü bulduğunuz zaman noktanın yerini de bulursunuz.

Bir köşeyi oluşturmak için 3 noktaya ihtiyaç var. Bütün bu köşeler 90 derece katları yönünde olduğu için basitçe birim çemberin hangi çeyreğinde olduğunu hesaplamanız yeterlidir. Kırmızı noktanın yeşil noktayla oluşturacağı doğrunun yönü de bunun 45 derece fazlası olacaktır.

Şöyle bir kurmaca algoritmayı düşünün.
for(i=0;i<yeşilnoktasayısı;i++){
    yön[i]=45° + 90° * köşe_kaçıncı_çeyrekte(yeşil_noktalar[mod(i-1)],yeşil_noktalar[mod(i)],yeşil_noktalar[mod(i+1)])
}
----------------------------
köşe_kacinci_çeyrekte():0,1,2,3 değerlerini üretir
-----------------------------
mod fonksiyonu ise noktaların başı ve sonundaki sürekliliği sağlamak için. Negatif sayılar için matematiksel modül işe yaramaz.

mod(i){
    i<0 ise i=i+yeşilnoktasayısı
    i>=yeşilnoktasayisi ise i=i-yeşilnoktasayısı
    return i
}

z

#10
Ne 2 misli hizlanmasi. Karmasik bir pcb dusunursen her bir yolun etrafini kazimaktansa aralarda izloasyon kesikleri atmak dehset sekilde islem yukunu azaltiyor. Takim omru de olumlu etkileniyor.

RF islerine gelmez ama siradan isler icin (DSP islemcili kartlar dahil) bu sekilde cok kart yaptim.

Evet pcb cizimini pixellere ceviriyordum.
10um 1 pixel olsun deyip mesela 100 x 100 mm pcb boyutlarini 100mm = 10000 pixel yapinca devasa bir bmp alani cikiyordu. Tabiatiyla 10000 x 10000 pixel uzerinde islem yapmak o zamanin bilgisayarlarinda cok zaman aliyordu.

Oyleki PCB cizim programinda farkli bir layerda kesim yollarini elle cizmek cok daha pratikti.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhendisbey

Takımı bir nokta değil daire olarak düşünerek hesaplarsanız ptoblem kalmaz. Çizgilerin tamamı da bu çizgilere teğet olacak. Zaten takım çapını veriyorsunuz cam programlarında da. İlerlerken, herhangi 2 noktaya teğet olursa bu sonradan değdiği çizgiye teğet hareket edecek. Çift teğetlik bitip tekrar çift teğetlik oluşursa yine yeni teğet üzerinden hareket edecek.

Mantıken bulduğum bu.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

z

Ornek cizimde koselerin 90 derece olmasi aldatmasin.

Ilerlemeler dogrusal degil herhangi bir acida hatta eliptik de olabilir.

Mesela yol dairesel kivrimli cizilmis de olabilir.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhendisbey

Tamam, yine teğet olur. Takım çapı büyük kaldığı için girilemeyen noktaya zaten CAM programlarında da girdirmez. O boşlukta en fazla 1 adet delik açabilirse sadece delik açar bırakır.

Bir de bu işin modları var. Atıyorum içini boşaltma modunda ortaya delik deler ve içeriden dışarıya doğru genişleterek iç kısmın tamamını talaş haline getirir.

Burada teğetlikten kastım daireye tek noktada değmesi yani noktasal teğetlik.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.