2 eksen vektörel çizgi çizen robot kart tasarımı

Başlatan kosantospa, 26 Mart 2015, 00:46:22

kosantospa

    merhabalar,
    benim projem autocadde çizilen bir vektörel çizgiye gören hareket eden bir robot yapmak. iki motorlu bir düzeneği başka birinden aldım. araştırmalarım bunun için kullanılan programın genelde mach programı ve bunun kartları kullanılmış. çizimin G codelarını bu programda çıkarttıktan sonra usb ya da farklı bir şekilde bu karta nasıl yollayabilirim program nasıl olmalı? iki motor sürücü ve bunlarla bilgisayar arasında iletişim için bir mcu olacak şekilde düşündüm ben. bu mcu pic 18f4550 olabilir mi ? ya da farklı bir yol öneren var mı ?
  herkese iyi çalışmalar

Mucit23

USB bir seçenek, Olabilir, 18F4550 olur

Veya SD kart olabilir. Çıktıyı SD karta yükleyip aracın SD kart içerisinden bilgileri okuması sağlanabilir. Buda bir seçenek.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

kosantospa

peki g codelara göre hareket etmesi için nasıl bir program yazmak gerekiyor ?

Mucit23

Onu ben bilmem

Okuduğun G kodlarını yorumlayıp elde ettiğin kordinat değerlerine göre sistemi yönlendirmen gerekir.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

askin

Sevgili kosantosba ;
Bu proje deneysel (çok hassasiyet gerektirmeyen) bir proje mi olacak? yoksa, robotun belli bir hassasiyette istediğin noktaya gidecek profesyonel bişey mi olacak, bunu açıklarsan hangi yoldan gitmemiz gerektiğine karar verebiliriz.

1. yöntem : Mach programından aldığın  G kodlarını 433mhz veya 900mhz verici ile robotuna gönderebilir veya USB, SD vs kullanabilirsin. işlemci ye gelecek (örn. X57.2 Y112.9) sağ motor=X  sol motor=Y motorların dönüş oranlarını hesaplarsın (tekerlek çapına göre ayarlaman gerekli) 

2. yöntem :   Karttan okuduğun yada kablosuz gelen X,Y değerlerini yada Autocat gibi vektörel çizgiyi takip etmesi gereken açı ve yol değerlerini aracının üzerindeki MCU ile hesaplayıp robotunu istediğin bir konuma vektörel (doğrusal), belli bir çapta dairesel  yada çember, yay, spline yani Autocat'ta gördüğün her şekli robotuna aktarabilirsin.
Ayrıca Autocad dan DXF çıktısı alıp dosyayı herhangi bir word programı ile açarsan  çizdiğin çizgilerin koordinat, vektör, açı, yay değerlerini bu dosyada bulabilirsin.  Özetlemek gerekirse; DXF dosyasındaki değerleri motorlarının dönme değerlerine göre ayarlamak gerek.

Ama önce yukarıdaki soruyu cevaplarsan sanırım ben ve diğer arkadaşların daha çok yardımı olacaktır.

kosantospa

çok hassas olmasa da çizilen şekli fazla bozmadan çizmeliyim. sadece şekil çizme olacak. tasarım dersi projem ürün imalatı gibi hassas olmasına gerek yok. elimde iki motorlu bir düzenek var. 3d printer ya da cnc gibi fakat iki eksenli sadece çizgi çizecek. autocadten alınan dxf çıktısıyla hareket edebiliyorsam ayrı bir program kullanmama gerek kalmaz bağlantı olarak usb kullanmayı düşünüyorum kablosuz olması daha da yük ve maliyet bindirir diye düşünüyorum. sd kart usbye göre daha mı zor olur kolay mı ? iletişim konusunda belli bir kısıtlama yok o yüzden en basitinin seçmek istiyorum.
dxf çıktılarını nasıl kullanabilirim ? programı yazarken çizgi yay eğri gibi tanımlamalar yapıp bunun değerlerine göre mi hareket ettirmeliyim ?
daha önce MikroC ile pic programı yazdım fakat bu tarz bir şeyi ilk defa yapmaya çalışıyorum.
yardımlarınız için teşekkür ederim.

askin


- Autocat-DXF konusuna gelince; DXF dosyasının içinde ihtiyacından çok fazla bilgi var, ihtiyacın olan bilgiyi filtre edip belli bir formata sokacak bir program yazılmalı ama önce iyi bir Autocad kullanıcısı olman gerek, muhtemelen o aşamada da değilsin.

- Bu şartlar altında, nereden başlaman gerektiğini anlatmaya çalışayım.
Elimizde iki motor var sol motorumuz X olsun Sağ motorumuz Y olsun.
X=100,Y=100
solmotora 100 pals, sağmotora 100 pals verirsek robotumuz düz bir çizgide gidecektir.
peki 45derecelik bir açı ile gitmesini istersek?
O zaman palsların biri diğerinin iki katı olmalı.
Matık olarak açıklıyorum çünki motorlarını ve tekerlek çaplarını bilmiyoruz. Bunları sen deneyerek yada hesaplayarak bulacaksın.

X=1, Y=2  (motorlara palsları gönderdik)
yukarıdaki işlemi 100 kere tekrarladık
bulunduğumuz noktadan X=100 birim Y=200 birim ilerlemiş olduk.

Bu aşamaya geldiğinde elde ettiğin sonuçları paylaşırsan, bir sonraki adımda tekrar görüşürüz.

Sağlıcakla kal. 

kosantospa

  ikisine de 100 100 verirsek 45 derece ile gitmez mi ? düz çizgi için birinin durup sadece diğerinin gitmesi gerekir mantık olarak sanki ?




askin

haklısın...  bir özürlü sandalyesinin iki tekerini de 100 - 100 çevirirsek 45 derece gider !!!
bence şu motor düzeneğinin resmini paylaşırsan, neyi ne kadar çevirdiğimizde  nereye gideceği konusunda hemfikir olalım,
aksi halde forumu kirletmek istemeyiz değil mi ?

kosantospa

#9
 hocam şimdi anladım durumu resmi eklesem yanlış anlaşılmaya mahal bırakmazdım hata bende kusura bakmayın.
2 motor birde ortada kalem var 5 volt verince kalem havaya kalkıyor. proje açıklamasında 2 eksen diye konuştuk ama kalemin indir kaldır özelliği de eklenirse daha bir hoş olur. sınavlarım başladığı için iki hafta ara vermem gerekecek. yanlış yönlendirdiğim için tekrar özür dilerim

askin


İşte şimdi oldu...

- Projemiz 'mini CNC' internette araştırırsan bu projeye ait yüzlerce döküman, çalışma ve örnek bulabilirsin, O zaman bizim görevimiz seni doğru yönlendirmek olacak.

- İlk ihtiyacımız, bu step motorları sürmek için bir sürücü devresi, Bildiğin gibi step motorları pic ile direkt olarak çalıştıramayız, transistörlede olmaz; çünkü step motorların akımlarının sınırlandırılması gerekli, demek ki step motorların nasıl çalıştığı hakkında biraz bilgi edineceğiz.   

En basit ve ucuz step motor sürücüsü L297-298 çiftidir (ben hiç çalıştıramamıştım, SMA-SLA hangisi şimdi hatırlamıyorum öyle bir sürücü entegresi kullanmıştım) ikinci aşamamız ise motorlarımızın özelliklerine göre sürücü devremizi hazırlamak olmalı.

- Sürücü devremiz bittiğinde programladığımız pic ile motorlarımıza hareket yeteği kazandırmış olacağız, pic hafızasının aldığı kadar, eprom, usb, SD yada LPT portu olan bir bilgisayardan sınırsız sayıda G kodu (MACH) çalıştırabiliriz.

Yol haritamız belli olduğuna göre bir an önce çalışmaya başlamak lazım, takıldığımız yerde yardım gelecektir.

Hadi kolay gelsin.

kosantospa

hocam tekrar tekrar teşekkür ederim. gerçekten mükemmel yardım ediyorsunuz. dediğim gibi sınavlarım başlıyor. aradan sonra dediğiniz gibi  devreye başlayacağım. iyi çalışmalar

kosantospa

hocam devreyi bu şekilde kurdum şimdilik motorlar hareket ediyor sağa sola. başta a4988 sürücüsünü kullanmak istedim fakat onları yaktım şimdi l298n sürücü devresiyle çalıştırıyorum. millere bağlayınca biraz ısınıyor çalışırken ama soğutucu demiri büyütüp fan baglayacagım.

G code olayını nasıl yapabiliriz ? tek motor için yazdığım kod bu butona basınca bir yön basmayınca diğer yöne gidiyor deneme amaçlı yaptım bunu zaten.


#define         input1         portb.rb7
#define         input2         portb.rb6
#define         input3         portb.rb5
#define         input4         portb.rb4



void ayar()
{
   ADCON1 |= 0x0F;             // AN pinleri dijital I/O yapılandırıldı
   CMCON  |= 7;                // Comparators (karşılaştırıcılar) pasif edildi

   trisb = 0;                  // b portu çıkış yapıldı
   portb = 0;                  // b portu sıfırlandı
    trisd.rd0 = 1;
     portd.rd0 = 0;
}

void main() {
    ayar();

      while(1)
    { //yön
       while(PORTD.RD0==0)  {
       
       
     //10
          input1 = 1;
          input2 = 0;
          input3 = 1;
          input4 = 0;
         delay_ms(10);

          //6
         input1 = 0;
         input2 = 1;
         input3 = 1;
         input4 = 0;
         delay_ms(10);
          //5
         input1 = 0;
         input2 = 1;
         input3 = 0;
         input4 = 1;
         delay_ms(10);
          //9
         input1 = 1;
         input2 = 0;
         input3 = 0;
         input4 = 1;
         delay_ms(10);
         }
         delay_ms(100);
           //yön2
          while(PORTD.RD0==1)
          {
              //10
          input1 = 1;
          input2 = 0;
          input3 = 1;
          input4 = 0;
         delay_ms(10);
            //9
         input1 = 1;
         input2 = 0;
         input3 = 0;
         input4 = 1;
         delay_ms(10);
          //5
         input1 = 0;
         input2 = 1;
         input3 = 0;
         input4 = 1;
         delay_ms(10);
           //6
         input1 = 0;
         input2 = 1;
         input3 = 1;
         input4 = 0;
         delay_ms(10);



          }

    }
  }

askin

Sevgili KoşanTospa
Her şeyi başkasından beklemek yerine araştırıp uğraştığın için seni tebrik ederim.
Görüyorum ki belli bir aşamaya gelmişsin, öncelikle biraz temel bilgi vermek istiyorum, elimizde bir motor ve sürücüsü var (bu senin devren - hazır aldığın sürücü her neyse artık) ihtiyacımız olan şey iki giriş. Birinci giriş DIR-Direction (yön) ikinci giriş ise PULSE-Adım sinyali, DIR=High 5v iken, Low olan Pulse ucuna (buton diyelim) basıp bıraktığımızda motorumuz bir adım atmış olur, DIR=Low iken Puls butonuna bastığımızda ise motor ters yöne döner, sende zaten bu noktaya gelmişsin.

G-code olayına gelince durum biraz daha karmaşık hal alıyor, diyelim ki makinemize bir daire çizdireceğiz (saat 12 yönündeyiz) X=2 adım Y=1 adım çeyrek daireye yaklaştıkça X=1 Y=2 adım olacak verdiğim değerler gerçek değerler değil ama ortada senkronize bir hareket olduğunu anlatmaya çalışıyorum. Çeyrek daireyi geçtiğimizde ise X teki motorumuz ters yönde  dönmesi gerekiyor (yani High olan Direction sinyali Low olmalı) makineni bitirip çalıştırdığında konuya daha iyi hakim olacaksın.

Şimdi gelelim bu kompleks olayı nasıl aşacağız? mach3 diye bir program var, bu program bahsettiğimiz işi yapıyor, programı sitesinden indirdiğinde deneme olarak 150 satırlık bir bilgiyi gönderebiliyor, eğer programı satın alırsan başka ama bunu aşmanın yolları var...  sen anladın onu !!! 

Çalışan bir program edindiğini varsayarak devam ediyorum. Programımız 25pin LPT portunu kullanıyor, programın içinde hangi pinin hangi motora DIR-PULSE sinyali göndereceğini belirliyorsun, deneme aşamasında ilgili pinlere LED bağlayarak sisteminin doğru çalıştığına emin olduktan sonra geriye iki sistemi birleştirmek kalıyor.

Aşağıda verdiğim linkte basit bir anlatım yapılmış, buradan başlayarak google de (mach3 CNC) diye arama yaparsan binlerce döküman ve bilgiye ulaşabilirsin.

http://www.mekatroncnc.com.tr/mach3trkilavuz.pdf

Sağlıcakla kal, iyi çalışmalar. 

kosantospa

    cevabınız için teşekkürler hocam.
yön adım kısımlarını yazılımda hallettim yani bir tarafa dönmek için bir kod dizisi diğer taraf için bir kod dizisi oluşturdum. Adım kadar hassas değil zaten yavaş çalışıyor. bir tur yaklaşık 1mm falan çiziyordur. mach 3 için paralel portlu bilgisayara sahip değilim. zaten devre de standartlarda olmadı. devremi usbden bilgisayara bağlayıp  bilgisayar arayüzünde g codeları işleyebildiğim kadar işleyip kısıtlıda olsa bir sistem elde etmeyi düşünüyorum.
   umarım başarılı olurum. :)

Powered by EzPortal