Yazılım konusu herkesin özellikle merak ettiği bir kısımdı, aslında buraya kadar geldiyseniz en basit kısmın burası olduğunu göreceksiniz. Bir çok forumda (özellikle facebooktaki sayfalarda) yazılımı kendisinin yaptığını iddia eden vatandaşlarımız mevcut, Öyle bir şey “YOK”. İnsanlar nedense çok garipler, derledikleri iki satır kodu birden kendilerinin yaptıkları düşüncelerine kapılıyorlar.

Buyurun size bitmiş, hazır, anahtar teslim, kendi “yaptığım” (derlediğim :)) kod: Marlin – 1.1.3 – ALP – 20.08.2017 (Bağlantı güncellendi, 15.09.2017)

Eğer hangi satırın ne işe yaradığını öğrenmek isterseniz yazının devamını okuyabilirsiniz, tabiki yukarıdaki hazır kodu indirerek deneme de yapabilirsiniz, eğer sorunsuz çalışırsa kullanabilirsiniz de. Bana mail gönderen herkese gönderdim ve gördüğüm kadarı ile de herkes sorunsuz çalıştırdı.

Öncelikle 3 boyutlu yazıcılar için hazırlanmış bir çok açık kaynaklı fw mevcuttur. Bende bunlardan en çok hoşuma giden “Marlin” olanını kullanıyorum ve anlatımı bunun üzerinden yapacağım. Temelde hepsi aynıdır, mantığını kavrarsanız hepsinde istediğiniz ayarlamaları yapabilirsiniz.

Marlinin resmin sitesi; http://marlinfw.org dur. Bu adresten son çıkan fw leri indirebilir kendinize göre derleyebilirsiniz.

İndirdikten sonra açmak için Arduino IDE ye ihtiyacınız vardır. Buradan indiriniz.

Kurulumu yapıp Arduinoyu açın, öncelikle kart yöneticisine (araçlar> kart> kart yöneticisi) gidip “Arduino AVR Boards” dan versiyonu 1.6.10 seçip güncelleyin, veya yüklü değilse yükleyin.

Sonrasında kartınızı “Arduino/Genuino Mega or Mega 2560” seçip, işlemciyi de “ATmega 2560 (Mega 2560)” seçin.

Kullandığınız LCD ye görede kütüphane eklemelisiniz, genellikle alabileceğiniz 2 çeşit lcd var, biri 20×4 standart lcd diğeri ise grafik lcd.

Eğer grafik lcd kullanıyorsanız buradan detaylarına bakabilir, hacks kısmından başlangıç logosunu nasıl değiştirebileceğinizi öğrenebilir ve gerekli olan arduino kütüphanesini de indirebilirsiniz. Kütüphane için; https://code.google.com/archive/p/u8glib/downloads adresinden en son çıkmış olan kütüphaneyi indirin, örn: u8glib_arduino_v1.14.zip

Sonrasında .zip içerisinden çıkardığınız U8glib klasörünü arduinonun library klasörünün içine atın.

Buraya kadar olan kısım, kodları hazır kullansanızda yapmanız gereken kısımlardı. Bundan sonrasında ise MarlinFW de bizi ilgilendiren kısımlardan ve hangi satırın ne işe yaradığından bahsedeceğiz, benim anlatımım kartezyen 3D yazıcı nasıl yapılır üzerine fakat siz delta 3D yazıcı nasıl yapılır diye arıyorsanız, mekanik kısımların aynı olduğunu söylemem fakat yazılım kısmında indirmiş olduğunuz fw nin “Marlin” klasörü içerisinde “example_configurations” klasörü mevcut, oradan TAZ4 den Delta 3D yazıcıya kadar tüm makinelerin hazırlamış kodlarına ulaşabilirsiniz.

Yazılım kısmının aslında ne kadar basit olduğunu anladınız mı? Çünkü zaten hazır, biz öyle dağları bayırları aşmıyoruz bunu yaparken.

Şimdi sırada kodlarımızı düzenlemek var, öncelikle arduinoyu tamamen kapatıp açın (kütüphanelerin gözükmesi için), sonrasındaysa ise Marlin klasöründen “Marlin.ino” dosyasını açın. Açtığınız da bu şekilde bir ekranla karşılacaksanız;

Ardından resimdeki gibi “Configuration.h” sekmesine geliniz.

Öncelikle eğer düzenlediğimiz satırların başında // varsa silin. Örn. //#define CUSTOM_MACHINE_NAME “ALP” ise bunu #define CUSTOM_MACHINE_NAME “ALP” olarak değiştirmeniz gerekli ki satır kullanıma girsin.

İletişim Hızı:

#define BAUDRATE 250000 genelde kullanılan değerdir ama ben şuan 115200 olarak ayarladım. 115200 yaparak ilerleyin.

Makine Adı:

#define CUSTOM_MACHINE_NAME “Makinenize İsim Verin” – Tırnak içerisine istediğinizi yazınız.

Extruder Sayısı:

#define EXTRUDERS 1 – Kaç tane kullanıyorsanız o kadar yazınız.

Güç Kaynağı:

#define POWER_SUPPLY 1 – Standart bir güç kaynağı kullandığımız için 1’i seçiyoruz, 0 olursa kullanmadığımız, 2 olursada XBoxlarda kullanılan adaptör veya onun gibi modlanmış adaptörlerden birini kullandığımız anlamına gelir, tabi bunların bağlantı yerleri daha farklıdır.

Termal Ayarlar:

Üst kısımda bir sürü ısı ölçerin marka model değerleri verilmiştir, kullandığınız ısı ölçere göre bir seçim yapınız. Aliexpress, banggood gibi sitelerden aldıklarımız 1 numara yani “1 : 100k thermistor – best choice for EPCOS 100k (4.7k pullup)” olarak açıklaması yapılmış olandır.

Yinede en doğru ayarı, tablanızı ısıtıp hem lcd’den ısıya bakıp hemde lazerli ısı ölçerlerle ölçerek yapabilirsiniz.

Buradaki ayarları şu şekilde yapıyoruz;

#define TEMP_SENSOR_0 1 –> Extruderımız 1. Olan
#define TEMP_SENSOR_1 0 –> 1den 4’e kadar olanlarda +4 extruder için ama biz kullanmadığımız için 0 yapıyoruz.
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_BED 1 –> Tablamız

Maksimum Isılar:

#define HEATER_0_MAXTEMP 240
#define HEATER_1_MAXTEMP 240
#define HEATER_2_MAXTEMP 240
#define HEATER_3_MAXTEMP 240
#define HEATER_4_MAXTEMP 240
#define BED_MAXTEMP 120

Isıların en fazla kaç dereceye çıkmasını isterseniz onu yapınız, ben bu şekilde tercih ettim, hazır olarak verdiğim kodlarda ise 260/150 şeklindedir.

Isı PID Ayarları:

Bizim yaptığımız makine için bu değerleri giriniz;

// Hephestos i3
#define DEFAULT_Kp 23.05
#define DEFAULT_Ki 2.00
#define DEFAULT_Kd 66.47

ENDStop Ayarları:

Switchlerimizin hepsini makinenin minimum noktalarına koyduğumuz için buradan tüm eksenleri Min olarak seçiyoruz, elbetteki bunların yönlerini değiştirebiliriz veya switchleri koyduğumuz yerleride. Fakat minimum mantığından gittiğimiz için ayalarıda bu şekilde yapınız.

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

Bu kısmıda tamamen “ture” olarak değiştiriniz. Sebebi ise endstopların çalışma mantığını ters çevirmektir, yani basılı iken mi sınırlasın yoksa basılı değilken mi? False yaparsanız basılı iken motorlar haraket eder, true yaparsanızda basılı değilken. Eğer motorlarınız basılıyken haraket ediyorsa artık hangi ayarı değiştirmeniz gerektiğini biliyorsunuz.
#define X_MIN_ENDSTOP_INVERTING true
#define Y_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING true
#define X_MAX_ENDSTOP_INVERTING true
#define Y_MAX_ENDSTOP_INVERTING true
#define Z_MAX_ENDSTOP_INVERTING true
#define Z_MIN_PROBE_ENDSTOP_INVERTING true

Adım Ayarları – KALİBRASYON:

İşte kalibrasyon dediğimiz kısım, ben burayı genelde oranlayarak hesaplıyorum, mesela değerleri 100, 100, 4000, 100 yapıp kodu makineye yüklüyorum ve X eksenine 100mm git diyorum, 125mm mi gitti? yani 1.25 fazla gitti, ters orantıdan bu eksenin 80 olması gerektiğine karar veriyor ve kodda ilgili yeri o şekilde değiştirip tekrar deniyorum.

Bunu tüm eksenler için yapıyorum ve şuan kullandığım ayarlar bu şekilde:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 100.47095761381482 }

İlki x, ikinci y, üçüncü z, dördüncü extruder.

Peki bu şekilde yapmadan nasıl yapılmakta derseniz;

X ve Y için = (adım sayısı * driver mikro adım) / (kayış adımı * kasnak diş sayısı)

Yani;

Adım Sayısı: Kullandığımız motorların data bilgilerinden adım sayısına bakmamız gerekli, genelde 200 adımdır.

Driver Mikro Adım: Bir önceki bölümde hepsini takınız demiştim, hepsi 1/16 yapmakta yani 16.

Kayış Adımı: Bunu kullandığınız kayışın bilgilerine bakarak bulabilir veya ölçebilirsiniz.

Nasıl ölçüler derseniz buyurun efenim, “P” yazan değer ihtiyacımız olandır ve GT2 adı üzerinde 2mm dir.

Kasnak Diş Sayısı: 3D printerda kullandığımız GT2 için olanlar 20 dir. Zaten aldığınız yerde de belirtirler.

Şimdi elimizde neler var, mm/s = (200 * 16) / (2 * 20) => mm/s = 3.200/40 = 80 Evet 80’i bulduk, yani hem yukarıda anlattığım ilk yöntem hemde bu yöntemi doğru sonuçlara erişmek için kullanabiliriz.

Aynısı Z ekseni içinde geçerli fakat onda farklı bir değer daha var, oda şu şekilde;

Z için = (adım sayısı * driver mikro adım) / vidalı mil adımı

Vidalı Mil Adımı: Vida adımı yani, kullandığınız mile göre değişir veya burada Z ve X te bulunduğu gibi kayış/kasnak sistemide kullanabilirsiniz, onun hesaplarıda yukarıdaki gibi zaten. Ben size yolunu anlatıyorum çünkü gelen maillerde, şurada şunu burada bunu kullanabilir miyim soruları yoğun olarak var. Tabiki kullanabilirsiniz.

Unutmadan önceki yazılarımda bunu kullanıyoruz dediğim vidalı millerin vida adımı 0,8mm dir.

Veee tabiki EXTRUDER

ÖNEMLİ EKLEME: Extruder’ı test ederken ısıtmanız gerekli, yoksa motor güvenlik amacıyla çalışmaz.

2 çeşit extruder vardır, Bowden (Direct Drive, Doğrudan) ve Gear Reduction (Dolaylı, Dişli), ikisi içinde ben size hesap yollarını veriyorum, gerisi sizde.

Bowden  = (adım sayısı * driver mikro adım) / (hob efektif çap * pi)

Bilinmeyenleri yazıyorum gerisi yukarıda olanlar.

Hob Efektif Çapı: Filamentimizi itecek olan hobbed bolt’un çapı. Bu arkadaşın adı bowden/direct drive extruderlarda “Drive Gear” olarak geçer ve piyasada MK7, MK8 gibi isimleri vardır. Hatta şöyle bir dev amme hizmeti yapayım: http://reprap.org/wiki/Drive-gear burada var olan hepsinin çapıda yazar.

Pi:  3 değil 3,1415857143 alınız.

Gear Reduction = (adım sayısı * driver mikro adım) * (büyük dişli diş sayısı / küçük dişli diş sayısı) / (hob efektif çap * pi)

Büyük dişlinin ve küçük dişlinin diş çaplarını yerlerine koyunuz, geri kalanların açıklamaları yukarıdakiler gibidir.

Öncelikle, adım sayısı ve driver mikro adımlardan yukarıda zaten bahsettim, büyük ve küçük dişlilerin diş sayısına gelirsek, mesela buradaki 45:11 olduğu yazmakta. Eğer elinizde dişli var ve bilmiyorsanız, sayın (:

Hob efektif çapı için ise mesela buradaki hobbed bolt’un ilgili yerinin çapı 6mm, değerleri yerlerine koyarak bu konuda da bir örnek yaparsak;

mm/s = (200 * 16) * (45 / 11) / ( 6 * 3,1415857143) => mm/s = 3200 * 4,09 / 18,849514286 => 694.34149875

ÖNEMLİ NOT: Küsuratlı değerleri “.” nokta ile yazın. “,” virgül ile değil.

Hız Ayarları:

Bu ayar size kalmış, maksimum haraket hızlarıdır. Ben böyle yaptım.

#define DEFAULT_MAX_FEEDRATE { 200, 200, 3.3, 25 }

Bu ayarda yine size kalmış olup maksimum hızlanma (ivmelenme) ayarıdır.

#define DEFAULT_MAX_ACCELERATION { 1100, 1100, 100, 10000 }

Yanlarında ayarların açıklaması yazmaktadır, ilkini baskı haraket hızları, ikincisi geri çekme hızı, üçüncüsü ise baskı yokken ki gezi hızıdır. Bunlar varsayılan ayarlardır. Slicer üzerinden zaten her seferinde ayarlamaktayız.

#define DEFAULT_ACCELERATION 650 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration for travel (non printing) moves

Minimum Jerk hızları

#define DEFAULT_XJERK 10.0
#define DEFAULT_YJERK 10.0
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK 5.0

Hız ayarları buraya kadar.

Z Ayarı:

Bu satırı kapatıp

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

Bu satırı açın

#define Z_MIN_PROBE_ENDSTOP

Z de endswitch kullanmaktayız çünkü ve minimumda kendileri, yeni versiyonlarda Z ekseni için çeşitli ayarlar getirdiler mesela BLTouch gibi sensörler için özel ayarlar bulunmakta.

Motor Yönleri:

Eğer motorlarınız ters yöne gidiyorsa kablolarını söküp ters çevirmek yerine bu ayarı kullanabilirsiniz.

True iken ters ise false yapın hepsi bu kadar.
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true

Home gidiş yönleri için kullandığımız ayar kısmı.

1=Maksimuma git, -1=Minimuma git. Biz minimumlara end switch koyduk.
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

Tabla Büyüklük Ayarı:

Minimumlar zaten end switchlerimiz olduğu için 0 olacak, maksimumlar ise makinenizin tabla genişliği ne ise ona göre mm olarak ayarlayınız. Bunlar benim yazımda anlattığım makinenin tabla ölçüleridir.

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 215
#define Y_MAX_POS 210
#define Z_MAX_POS 180

Eve Gitme Hızı:

// Homing speeds (mm/m)
#define HOMING_FEEDRATE_XY 2000
#define HOMING_FEEDRATE_Z 150

Ön Isıtma Ayarları:

İlk ayarlar PLA için ikinci ayarlar ABS için makineyi ısıt dediğinizde ki ısı dereceleridir.

#define PREHEAT_1_TEMP_HOTEND 200
#define PREHEAT_1_TEMP_BED 70
#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255

#define PREHEAT_2_TEMP_HOTEND 230
#define PREHEAT_2_TEMP_BED 100
#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255

LCD & SD Kart:

Buradan hangi LCD yi kullanıyorsanız ona göre ayar yapmanız gerekli, yazının en başında da bahsettiğim gibi ben grafik ekran kullandım ve ona göre bir ayar yapıyorum. Farklı LCD için de ayar aynı şekildedir.

Öncelikle LCD dil ayarını yapıyoruz. Buradan en yazan kısmı tr yaparsanız language.h sekmesideki Türkçe kısmı aktif edecektir.

#define LCD_LANGUAGE en

Karakter ayarları, Japanese olanı yazınız. Eğer LCD’niz farklıysa mesela rusça karakter için, o zaman “CYRILLIC” yazabilirsiniz.

#define DISPLAY_CHARSET_HD44780 JAPANESE

Sonrasında SD Kart ayarını yapıyoruz. Başındaki // silerek.

  • SD CARD
  • SD Card support is disabled by default. If your controller has an SD slot,
  • you must uncomment the following option or it won’t work.
  • */

#define SDSUPPORT

Sonra devam ederek “RepRapDiscount FULL GRAPHIC Smart Controller” yazan kısmı arıyoruz, bizim LCD’miz bu işte, başındaki // siliyoruz ve kullanıma açıyoruz.

// RepRapDiscount FULL GRAPHIC Smart Controller
// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
//
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Her şeyi yaptım ama ekrana görüntü gelmedi derseniz kablolarını ters takmışsınız muhtemelen veya gerekli yerden açmayı unutmuşsunuzdur.

Şimdi gelelim dil kısmına, yukarıda dediğim gibi satırı aktif edip, tr yaparsanız zaten Türkçe olacaktır.

Aynı bu şekilde:

#define LCD_LANGUAGE tr

Ama ben kendim çevirmek istiyorum derseniz o zaman, language_tr.h sekmesini seçip gerisini istediğiniz gibi düzenleyebilirsiniz. Zaten çevrilmiş bir durumda.

Bu konuyla beraber 3D Printer Nasıl Yapılır? serisini şimdilik bitiriyorum. Eğer sorularınız olursa yorum kısmında sorabilirsiniz. Ayrıca iddia ediyorum bu kadar net ve detaylı bir şekilde bırakın Türkçe anlatımı Mandarincede dahil bulamazsınız (:

Ayrıca rica ediyorum şu yazılarımı kendiniz yazmış gibi sitelerinizde veya forumlarınızda paylaşıp durmayın. Fotoğraflarla beraber kopyalıyorsunuz sonra heryerde kocaman “www.QuadBrain.com” yazıp duruyor. Şuana kadar yazılarımı çalanlara uyarı maili gönderiyordum fakat bundan sonra başka şeyler yapmayı planlıyorum (:

Kendinize iyi bakın, sözümü geçte olsa tamamladığım için mutluyum umarım sizde beğenirsiniz.

Küçük Ekleme: Gerekli olan herşeyi basit bir şekilde açıklamaya çalıştım, hata yaptığım kısım olursa bildirin lütfen. Sırasıyla baştan aşağıya yazdım, bulamadığınız bir ayar olursa cmd+f (ctrl+f) tuşuna basıp arayarak rahatlıkla bulabilirsiniz. Yeni yazılarda görüşmek üzere.

15 YORUMLAR

  1. Alp bey merhaba. Ben liseye yeni geçtim . 3d yazıcımı sizin sitenizden yardım alarak yaptım. Tek eksik yazılım rica etsem bana kullandığınız yazılımı gönderebilirmisiniz? denedim ama bir türlü yapamadım

Düşüncelerinizi paylaşın;