2 adet step motoru aynı anda çalıştırma

Başlatan bulutay, 24 Temmuz 2014, 22:45:07

bulutay

arkadaşlar cnc için 3 yada iki adet step motorun aynı anda çalışması gerekiyor. tecrübesi olan arkadaşlar dan yardım bekleniyor.

sezgin05

#1
Evet cnc lerde birden fazla step motorun aynı anda çalıştırılması gerekebilir. Bunun 2 yöntemi vardır. 1.si tek 2X gücünde sürücüye paralel bağlı 2 adet 1X gücünde step motoru bağlamak. 2.si ise 2 adet 1X gücünde sürücünün girişlerini paralel bağlayarak 2 adet 1X gücünde step motoru ayrı ayrı sürmek.Uygulamalar arasında maliyet dışında pek bir şey değişmez.

gumush

Kontrol karti kullanilarsaniz eksen sayisi yeterli ise istediginiz ekseni coklayabilirsiniz.

Ornegin 4 eksen kartiniz var 3 eksen cnc'nizde x eksenini 2 motorlu yapacaksiniz. Bu durumda 4.eksene bu motoru takacaksiniz. Mach3 icinde slave olarak ayarlayinca ayni ekseni birden fazla motorla kullanabileceksiniz.
Hikmet Gumus  izmir

bulutay

arkadaşlar teşekkürler ama ögrenmek istedigim step motor çoklama degil. iki step motorun aynı anda çalışmasından kastım. biri 200 adım aterken digeri de 50 adım atacak.

magnetron

@bulutay ,

bahsettiğin şeyin adı interpolasyon

en basitinden bir interpolasyon x ve y eksenlerinin
freze bıçağını bir derece açıyla hareket ettirmesidir örneğin

bu durumda x ve y eksenlerinin hızları şöyle bulunur

diyelim X ve Y ilgili eksende gitmesi gereken yol
FEEDAUTO ise trajectory üzerindeki yani gidilen yoldaki hız
bu durumda FEEDX FEEDY X ve Y eksenlerinin hızları

       hip = X*X + Y*Y
        hipo = karekök ( hip)
   FEEDX= ((FEEDAUTO*X) / hipo);
   FEEDY= ((FEEDAUTO*Y) / hipo);

bu arada yaptığın hardware'in resmini koyarsan memnun olurum
bende aynı konuda uğraşıyorum
4 x 200 KHz puls üreten bir kart da ben tasarladım
bu kartla 4 eksen sürebiliyorum
ama vakit bulup sistem software 'ini bitiremedim henüz

Salih

Alıntı yapılan: bulutay - 25 Temmuz 2014, 15:36:10
arkadaşlar teşekkürler ama ögrenmek istedigim step motor çoklama değil. iki step motorun aynı anda çalışmasından kastım. biri 200 adım aterken digeri de 50 adım atacak.

O zaman iki motor için iki ayrı sürücü kartın olacak.
İki sürücüye uygulayacağın palsleri aynı anda başlatacaksın.

bulutay

benim yazdıgım sistemde nerdeyse pic de hiç bir şey yok. 3 adet ileri 3 adet de geri metodu var. o kadar. diger her şey pc de olup bitiyor. sizin dediginiz gibi her motor için bir pic , picleride kontrol eden bir pic yani 4 adet pic ile 3 adet motor dairesel ve dogrusal interpolasyon yaptırılarak rahatça sürülebilir.

teşekkürler.


bulutay

kartı kendim yapabiliyorum. yaptıgım kart da interpolasyon yoktu. önce x ekseni hareket ediyor. daha y ekseni hareket ediyor. daha sonra z ekseni hareket ediyor. bu da tek bir pic le çalışıyor. ama dairesel yada dogrsal interpolasyon yaptırabilmek için 4 pic gerekiyor. yeni fark ettim bu olayı. tek bir pic le olmuyor. aynı anda degil ama aynı zamanda hareket saglanabiliyor. zaten iki eksen  yeterli interpolasyon için

Salih

Tek pic le yapabilirsin. Önemli olan pals üretme algoritman. Bu algoritma da palsleri aynı anda
üretmeye başlarsan problem çözülür.

bulutay

pals üretme algoritmasını pic de yapıp diger iki sinyal göndermek üzerine yogunlaştım. şu anda bana kolay gelen bu. verdiginiz linkteki sürücülere baktım. evet. teşekkürler. ama benim ihtiyacımı karşılamıyor ikisi de . pic de algoritma çalıştıktan sonra mesela b1 ve b2 high oldugunda diger pic deki metotlar çalışacak gibi

iyildirim

Alıntı yapılan: bulutay - 25 Temmuz 2014, 16:44:13
kartı kendim yapabiliyorum. yaptıgım kart da interpolasyon yoktu. önce x ekseni hareket ediyor. daha y ekseni hareket ediyor. daha sonra z ekseni hareket ediyor. bu da tek bir pic le çalışıyor. ama dairesel yada dogrsal interpolasyon yaptırabilmek için 4 pic gerekiyor. yeni fark ettim bu olayı. tek bir pic le olmuyor. aynı anda değil ama aynı zamanda hareket saglanabiliyor. zaten iki eksen  yeterli interpolasyon için

Motor sürücüleri ni de kendiniz yapmak isteseniz dahi 4 ayrı PIC kullanmak bana pek mantıklı gelmedi. Uygun mcu seçimi ile hem motor kontrolünü hem de puls-dır konusunu tek mcu içerisinde halletmek mümkün.

Özellikle de motor sürücülerini hazır kullandığınız durumda, PIC ile sadece motor sürücüler için puls-dir sinyalleri ürettiğiniz  durumda tek bir PIC içerisinde olayı çözümlemek daha iyidir. Gereksiz iletişim rutinlerinden ve gecikmelerden de kaçınmış olursunuz.

İnterpolasyon konusunda daha önce de dediğim gibi genellikle Bresenham gibi algoritmalar kullanılır. Doğrusal interpolasyon için her bir eksen için bir timer kullanmak gibi çözümler olsada, özellikle akselerasyon kısmında senkronizasyonu sağlamak sıkıntı oluşturur. Ki dairesel interpolasyon da düşünüldüğünde Bresenham kullanmak en basit, en iyi  yoldur..

Stl dosyalarını işlemek gibi şeylerden bahsetmişsiniz.
Amaç bu ise cam proses denen işlemleri PC de işleyip G-code u PC de ürettikten sonra oluşan g-code u mcu da işlemek en sağlıklı çözüm bana göre. Sadece mcu üzerinde hiç olmazsa bir kaç yüz ms lik bir buffer oluşturusanız gayet güzel çalışır.
G-code işlemede asıl olan g0-g1-d2-g3 gibi kodları işlemek, g40-41-42 gibi kodların dışında ki her komutu bu komutların ardışık olarak işletilmesi ile karşılayabilirsiniz.

İşlemci olarak da önerim en azından 16 bitlik PIC ler veya 32 bit ARM-PIC olur..

bulutay

S.A.

g0-g1-d2-g3  bu kodları pc tarafında işledigimiz zaman çok kolay oluyor. interpolasyonda ara deger bulma metodu ile yapıldıgı zaman çok basit bir şekilde oluyor. takıldıgım nokta for döngüsünde . for döngüsünün serial port.write dan gönderilen veri kadar dönmesi gerekiyor. pic tarafında bir türlü olmadı. konu açtım bakalım. c# ile yazıyorum. pc tarafı tamam gibi. ama pic tarafı biraz zorluyor.

bulutay


engerex