CNC de yazı yazdırma

Başlatan Mucit23, 20 Ekim 2016, 23:57:04

Mucit23

Selamlar,

Bu sene tasarım dersini üsten aldım önümüzdeki yıl uğraşmamak için. İyimi ettik kötümü ettik pek emin değilim ama aldık vereceğiz mecburen.

Ödev olarak Bu sene Yazı yazan robot istiyorlar. Klavyeden girilen Texti Bir kalem kullanarak A4 kağıda çizecek bir düzenek kurmam lazım. Sürem daha var ama araştırma yapmam lazım. Özellikle aklımdaki bazı soruların cevabını bulursam projeyi rahatlıkla yapabilirim. @z hocam bu konularda tecrüben çok, konuya dahil olursan sevinirim.

Öncelikle İki eksen CNC düzeneği kurmam lazım. Bunun dışında Bir adet servo ile kalemi indirip kaldıracağım.  Bu konuda pek sıkıntı yaşamam mekanik açıdan her türlü atölye imkanlarına sahibim.

Step Sürücü olarak A4988 kullanırım muhtemelen Mikroişlemci olarakda şuan ne olduğu önemli değil. Arduino vs kullanılabilir. Benim sıkıntım yazılımda çünkü G kodu işlemeyeceğim. Aslında G kodu nasıl işlenir onuda bilmiyorum. Hiçbir bilgim yok bu konuda.

Mesela Örneğin arduinonun Terminalinden Bir string gönderdik Arduinoya. Bunu sırasıyla yazacak fakat gönderilen her bir karaktere göre kalemi tutan kafayı nasıl hareket ettiririm. Bunun için nasıl bir algoritma kurmam gerekir bu konularda bilgiye ihtiyacım var. Açıkçası bunun yazılımını kendim yazmak istiyorum.

Sormak istediklerim şunlar.

1-) Bu tür sistemlerde örneğin X eksenini Yazılımsal olarak şu kadar hareket ettir nasıl diyoruz? Sürüclerde STEP ve DIR girişi var. Çalışma mantığını biliyorum ama kodda işler nasıl işliyor birisi anlatsa güzel olacak.
2-)G kodu işlemek nasıl olur?
3-) İçeride bir karakteri kağıda çizmek için step motoru nasıl yönlendirmem gerekiyor?

İnternette bakıyorum insanlar bir arduino kullanarak derme çatma bir mekanizma kullanarak bu işi çok basit bir şekilde yapıyorlar. Aslında benim hedefim Step motorları istediğim gibi kumanda edecek algoritmalar kurmak. Öğrenmek. Şu dakika elimde bir sürü step motor var. Sürücü olarakta yarın birkaçtane A4988 modülü sipariş edeceğim.  Bunları kullanarak Hiç XY mekanizması kullanmadan Step motoru şukadar sağa döndür şu kadar sola döndür gibi algoritmalar kurmak istiyorum. @z hocam sizin videolarınızı izlediğimde bu işi çok kolay bir şekilde yaptığınızı görüyorum. Bu konuda yardım edermisiniz?

z

#1
Bunu ödev vermişler galiba. email-facebook vs kanallardan acaip bunalttı arkadaşlar. Kaynak kodu isteyenler para teklif edenler.

Hepsine şu açıklamayı yaptım.

1) Githubda benzer bir proje görmüştüm.

2) Step motoru X0Y0 noktasındann X1Y1 noktasına lineer ilerleten rutini yazacaksınız. Bunun için iki noktası belli doğrunun eğim denkleminden gidebilirsiniz ya da bölme algoritmasından türetilmiş Bresenham Algoritmasını kullanabilirsiniz.

Bir sonraki adım ise Trajectory Profil.

Hızlı bir makine ihtiyacınız yoksa bunu es geçebilirsiniz.
Yok hızlı olsun derseniz. Başlangıç hızı belli, ivmesi belli bir doğrusal hareket denklemi kullanarak x0y0 noktasından x1y1 noktasına trapez hız grafiği ile hareket edeceksiniz. Bunu aşamayı atlarsanız sabit adımlama modunu kullanırsınız ve hızınız düşer.

Bunları yaptığınızda motion kontrol yazılımını hallettiniz demektir.

Geriye vektörlerin üretilmesi işi kalıyor. Eğer yazı ve çizimler zaten vektörel formatta ise  x0y0 x1y1 değerlerini doğrudan hızlı bir iletim yolundan mcu'ya ileteceksiniz.

Yazı ve çizimler Vektörel formatta değilse o zaman ya siz vektörler üreteceksiniz ya bmp to vector çevirici kullanaksınız ya da vektör kontroldan vazgeçip raster tarama yaparak satır satır yazı oluşturcaksınız. Ancak bu durumda z ekseni çok fazla hareket yapar ve çizim hızınız çok düşebilir.

G kodlarını işin içine sokarsanız işi uzatırsınız.

Eğer G kodlarını işin içine sokacaksanız yazı vs çizimleri G koda çeviren bir ara yazılım kullanacaksınız. Daha sonra da MCU tarafında ya da PC tarafında G kod yorumlayıcı yazacaksınız.

İşin püf noktası, iletişim rutinleri, step motor palslerinin üretilmesi, yörünge hesabı, yorumlama vs hepsi senkronize olmalı gerekiyorsa veriler bufferlanmalı ve hiç kimse bir bir önündekinin  veri çıktısını hazırlanması için beklememeli. Aksi takdirde motorlar cazur cuzur ses yapar. Mekanizma titrer. Demek istediğim fabrikadaki üretim bandının sürekli akışı gibi  bu düzenekte de veriler akıcı olmalı.

Bu konuda tüm yardımım bu kadar olabilir.

Bu işlere bulaşmadan da yapabilirsiniz.

G kodlarına göre motorları çeviren MACH3 programı var.
Gene yazı vs yi G kodlarına çeviren programlar var. Bunları bir araya getirirseniz de işiniz görülebilir. Youtube videosunda izlediğiniz cihazın kotrol kartını (STM32F103C8 MCU Kiti) ve PC exe programı verebilirim ama ödev yerine geçeceğini sanmıyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Alıntı yapılan: z - 21 Ekim 2016, 00:29:00
Bunu ödev vermişler galiba. email-facebook vs kanallardan acaip bunalttı arkadaşlar. Kaynak kodu isteyenler para teklif edenler.

Arkadaşlar çalışıyor demek. buda iyi birşey.

Herneyse abi G kodu felan olmayacak. O işe girersek hazır kütüphane kullanıp geçerdim herhalde. Benim amacım string olarak karakterleri terminalden gönderip yazdırtmak. Mikroişlemci ne yapacaksa kendi kendine Harflerden gerekli kordinatları çıkarması gerekiyor.

Ben şuanda motion control işiyle ilgileniyorum. Bu işi düzgün yaparsam eğer gerisi gelecek.

Ödev bahane aslında ben Özellikle Motion Control işiyle ilgileniyorum. Şuanda bahsettiğiniz Üst seviye konulara henüz hakim değilim. Alttan alarak öncelikle step motoru tam sürme işini öğrenmem lazım. Bu konular daha çok merakımda.

Mesela Step motoru istediğim kadar nasıl döndürürüm? Temelde X0Y0 dan X1Y1'e gitmeye çok uzağım. Eğim denklemi vs o aşamalara gelmeden önce Step motoru istediğim kadar nasıl döndürürüm gibi basit bir soruyu cevaplamam lazım. Bunun için nasıl bir algoritma kurmam gerekir bunları bilmiyorum. Bu konuları kafamda oturtmuş değilim. Örneğin basitçe (Sürüş modunu dikkate almadan) Step motoru 200 adım hareket ettirmek istersek, A4988'in Step pinine 200 puls uygulamak yeterlimi? Bu işi düzgün bir şekilde yapmak lazım. Bir for döngüsünde 200 puls uygulamak kolay çünkü.


z

for (n=0; n<1600;n++)
{
    Output(1);
    Delay(t1);
    Output(0);
    Delay(t2);
}

En temel motor döndürme işlemi.

Bu basit fonksiyon, 8 mikrostep değerine ayarlanmış sürücü ile 200 adımlık motora tam 1 tur attırır.

t1+t2 toplam delay değeri de motor adımları arasındaki zamanı yada adımlama frekansını belirler.

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

engerex

Alıntı yapılan: Mucit23 - 21 Ekim 2016, 01:02:42
...

Ben şuanda motion control işiyle ilgileniyorum. Bu işi düzgün yaparsam eğer gerisi gelecek.

Ödev bahane aslında ben Özellikle Motion Control işiyle ilgileniyorum....
Eğer işi hakkıyla yapacaksan G kodlarına girmelisin. Yine string ile çalışacaksın. Aslında basit sayılır. Kullanacağın başlıca g komutları g0, g1 dairesel hareket yapacaksan g2 ve g3. X ekseninde boşta 15 mm gideceksen g0 x15 işleyerek gideceksen g1 x15 bunu çözümleyeceksin. m3 görünce kalemi aşağıya indir m5 görünce kaldır. Çokta zor değil.

100 dolarlık bir makinede g kodu kullanıyor 1 milyon dolarlık makinede.

Mucit23

A4988 sipariş ettim. Gelsin çalışmalara baslayacam.

Hocam bu ödev için düşünürsek aslında ben o kadar ilerlemek istemiyorum. G kodlarina kadar gelip bir cnc yazılımı yapma taraftarı değilim. Çünkü bu konuda çok fazla yazılım yapılmış. Ben sadece step motorda motion kontrol kısmını iyice öğrenmek istiyorum. 

Eğer g kodlari kullanirsak sadece bilgisayar Yazılımı hazırlamam gerekir. Donanımı hazir kullandığımı varsayarsak bilgisayarda hazırlayacağım program girilen karakterlere göre uygun g kodu üretmesi lazım.  Bir karakteri nasıl çözümleyip g kodlarina dönüştürürüm? Bu mcu kısmında da lazım olacak.

engerex

Şöyle sorayım.
Yazı yazdırmak istiyordunuz. Yazı hangi uygulamada yazılacak ve bunlar nasıl ve hangi koordinat bilgilerine dönüşecek Hazır uygulamalar mı kullanacaksınız?
Koordinat bilgilerini MCUya hangi uygulama ile göndereceksiniz? Mach3 benzeri uygulama mı kullanacaksınız?
MCU'yu kendiniz mi programlayacaksınız? Yoksa hazır çözümlere mi yöneleceksiniz?

Mucit23

Hocam söyle cevaplayayim. Yazi temel bir font esas alınarak yazılacak.  Bu yüzden bütün işlemi mcu ile halletmek istiyorum. Ben terminalden yazilacak metni girip gnöderdikten sonra mcu tek başına işi halletmesi lazım. 

Eger g kodu kullanilacaksa bu sefer pc tarafında yazilim yazmam gerekir. Çünkü pc den karakterleri çözümleyip g koduna çevirmem gerekir. Bu durumdayken donanimda hazir bir sürücü veya arduino için hazır bir yazılım kullanabilirim

diot

en basit kalemle yazı yazdırma procesi ... Biraz ord.prof zihni sinir projesine benziyor ama bir kir olur.
https://www.youtube.com/watch?v=s_W0cPu5Gqs

EMP_Otto

Motion kontrol  kokusu alıyorum. 8-)
Takipteyim...
Bu işler zordur,özveri ister...

gumush

Beklenti nedir bilmiyorum ama sadece yazi yazmak ise o zaman iki eksen step suruculu bir sisteme ihtiyac olmayabilir.
Scara tipinde tasarim ucuz ve basit bir cozum olabilir. RC servolarini kullanirsiniz cok pratiktirler. Ekstra surucu vs kontrolune gerek kalmaz. Her konum icin ileri kinematik hesaplattiracaksiniz o kadar. Kalem icinde acik , kapali seklinde iki durum belirlemek gerekecek.
Sadece harfler olacagindan basitce alfabenin oldugu bir lookup table'da hemen hemen bir haftasonunda altindan kalkabileceginiz bir cozum olabilir.
Odevde tanim onemli, istenenleri elde etmek icin kullandiginiz yolunda ne oldugu , nasil sectiginiz , ne kadar ucuz yada ne kadar hizli olabilecegide degerlendirilir sanirim. Gereksinimleri karsilayan en ucuz , kisa , kolay yol bence en iyi notu alir :)
Hikmet Gumus  izmir

tekosis

sadece yazı yazdırmak adına şu şekilde halledilebilir sanıyorum.

* - alt fonksiyon şeklinde her harfe ait bir hareket tablosu çıkartılır(2x7 dot matrix yada daha yüksek çözünürlüklü bir fonksiyon)

* her kelime için ana program önce başlangıç yerini belirler sırasıyla harfleri çağırır.

* - her harf fonksiyonun sonunda kalem harfin sağ alt köşesine gider, 1mm veya yazının boyutuna göre o kadar sağa doğru boşluk bırakır.

* - bir sonraki harf kendi fonksiyonuna göre bir önceki harfin devamından itibaren yazar.

* - ana program satır başlarını ve kağıt sonunu takip eder sağ tarafta yer kalmadı ise alt satıra indirir.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

sezgin05

Hocam benim tavsiyem de Gcode üzerinden. İlk önce aşağıdaki linkten Her karakter için Gcode oluştur. Yapacağın program ilgili kodu oluştursun ve bir arduino arabirim ile sürücülere aktarsın. Arduino dedim çünkü bununla ilgili paylaşım çok var.Github veya thingiverse gibi açık kaynak paylaşım sitelerinde Marlin Firmware editlenmiş.
http://microtechstelladata.com/TextToNCcode.aspx

Mucit23

Hocam epeyce bi araştırma  yaptım.  Ama şu durumda sıfırdan sizin dediginiz gibi mikroislemciye  yazılım  yapmak çok  gereksiz geliyor. Çünkü  internette bununla  ilgili çok  güzel  yazılımlar var .  Ve ücretsiz. Muhtemelen  donanım tarafını arduino ve grlb kütüphanesi  ile  halledicem. Sizin verdiğiniz  yazılımı  henüz  bakamadım  pc başına  geçince  bakayim ama şunları  yapabilmem lazım.  Bilgisayarda yazacağım bir programda textbox'a bir string girilip yazdır diyince makinenin cnc nin hemen yazmaya başlaması  lazım.  Bilgisayar  Yazılımı  ile ugrasmak  daha kolay geliyor bana. En azından  bu şekilde  sadece pc yazılımı  ile uğraşıcam.

Hocam pc yazılımına g kodlari üretebilmem lazım.  Bu işi çözersem fazla birsey kalmıyor geriye

sezgin05

Hocam linki incelediğinzde sorularınızın cevabını alacaksınız. Textboxda kullanmayı düşündüğünüz bütün karakterler için bir adet gcode paketi oluşturun ve program onları çağırsın. Gerisini arduino halleder.