Marlin 3d yazıcı firmware'ini derlemek

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
21,729
Elimdeki 3d yazıcının kontrol kartı, standart RAMPS hardware ile uyumlu olmasına rağmen, elektronik devre şeması mevcut değil. Marlin firmware'i de tam olarak hardware'e göre yapılandırmak için elektronik kartın devre şemasının bulunması iyi olur düşüncesiyle, devre şeması tamamen açık olan Bigtreetech SKR Pro V1.1 diye bir çin malı kart aldım.

Yazıcının kendi kartında Atmega 2560 MCU varken, SKR de STM32F407ZGT6 var:

1594590301267.png
 
Tüm çin malı ürünlerde olduğu gibi, bu kart ile ilgili pek fazla bilgi yok. Çok özet bir kullanım kılavuzu var sadece. Ama devre şemasının olması çok önemli. Şemayı buraya ekleyeyim.

Bu kartın bir başka avantajı da 6 tane step motor desteklemesi. Bu sayede daha değişik, yeni uygulama alanları mümkün olabilir.
 

Ekler

  • SKR-PRO-V1.1(SCH).pdf
    1.2 MB · Görüntüleme: 312
Yeni Marlin firmware ile denemeden üzerindeki firmware ile denemeler yapayım dedim. Yazıcının güç kaynağına bağladım. Diğer kontrol kartındaki step motor sürücüleri buna aktardım. Sonra da eksenleri hareket ettiren gcode'lar göndermeye başladım. Eksenler adım yapıyor, ama komutlar çok seri giderse arada bir hata oluşuyor ve adım atmıyordu. Üstelik bu durum, port hızı 115200 baud iken meydana geliyordu. Daha önce kontrol kartı 250000 baud ile çalışıyor ve hiç komut hatası olmuyordu.

Yazıcıdan çıkardım kartı ve dışarıda tek bir step motor ile denemek üzere devreyi kurdum. Bu şekilde de çok seri g0 gönderirsem hatalar oluşuyordu.

IMG_20200713_005254.jpg
 
Daha fazla uğraşmadan hemen Marlin'i derleme işine başladım. Öncelikle github'dan kaynak kodunu klonladım. 32 bit işlemcileri destekleyen sürüm, nispeten yeni olan 2.0 sürümü. Ama bundan da yeni olan bir bugfix-2.0.x branch var. Üreticinin kendi dokümanlarında bu branch'i kullandıklarını belirtiyorlar, ben de o yüzden bu branch üzerinden gittim.


Buradaki readme'de, Marlin'i derlemek için ya Arduino IDE yada PlatformIO kullanmak lazım diyor. Bu PlatformIO'yu duyuyordum, onunla denemeye karar verdim. Bütün işlemi linux altında yapmayı düşünüyordum ve neyseki her iki yöntem de linux'ta çalışıyor.

Microsoft'un özgür yazılım olan Visual Studio Code IDE'sini kurmak gerekiyormuş (kadere bak :D ). Debian paketini indirip kurdum. Sonra da VSCode'un içinden, PlatformIO yu bir eklenti olarak ekledim. Hiçbir değişiklik yapmadan derlemek tabi mümkün değil. Karta göre yapılandırmak gerekiyor kodu. Bununla ilgili ayrıntılı bilgi marlin'in internet sitesinde var:

 
Minimum değişiklikle bir deneme yapabilmek için Configure.h dosyasında iki şeyi yapılandırdım:

Kod:
#define SERIAL_PORT -1

Bunun değeri 0 iken kod zaten derlemiyor hata ile sonlanıyordu.

Bir de kartın ne olduğunu tanımlayan şunu değiştirdim:

Kod:
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_BTT_SKR_PRO_V1_1
#endif
 
Onun dışında gene kök dizinde yer alan platformio.ini dosyasında şu değişikliği yaptım:

Kod:
[platformio]
src_dir      = Marlin
boards_dir   = buildroot/share/PlatformIO/boards
default_envs = BIGTREE_SKR_PRO
include_dir  = Marlin
 
Bu şekilde derledim. Derleme sırasında ilave başka program bileşenleri de indirildiği için derleme oldukça uzun sürdü. Ama sonunda hatasız tamamlandı

1594592235514.png
 
Derlenmiş firmware'i karta yüklemek için üreticinin tarif ettiği yol, firmware dosyasını bir SDCARD üstüne kopyalayıp sonra da kart boot ederken güncellenmesini sağlamak. Ama benim elimde bir yıl önce almış olduğum STLINK-V3 JTAG adaptörü vardı, onunla programlamayı denemek istedim.

Öncelikle STLINK ila kart arasındaki bağlantıyı sağlayacak olan bir kablo yapmak zorunda kaldım. STLINK ile beraber uygun bir kablo gelmedi.

Bir de STLINK'i linux'a doğru şekilde tanıtmak biraz uğraştırdı. STLINK'i nedense bir "mass storage device" yani flash bellek olarak tanıyordu. Bu sorun da giderildikten sonra programlama da sorunsuz çalıştı.

IMG_20200713_012148.jpg


IMG_20200713_014245.jpg


1594593672418.png
 
Son düzenleme:
Bu şekilde tek step motor ile denedim. Varsayılan port hızı de 250000 baud olmasına rağmen bu şekilde çok seri komutlarda bile hatasız çalışıyor. Artık konfigurasyonun geri kalan yerlerini de tamamlayıp deneyeceğim. Çok sayıda yapılandırılacak şey var, hepsinin açıklamalarını okuyup doğru şekilde ayarlamak lazım.

Öncelikle X Y Z eksenlerinin çalıştığını göreceğim. Sonra X ve Y limit switch'leri ve Z sıfırlamasını halledeceğim. Sonra da tabla ve ekstruder ısıtıcıların doğru şekilde sürülmesi, termistörlerin doğru sıcaklık ölçmesi ve fanların kontrolünü yapacağım. Bunlar düzgün çalıştıktan sonra da yazıcı kabinini ısıtan iki tane 300 W lık metal halide lambanın sürülmesi işi var.
 
3D Yazıcı yaptım, Bigtreetech SKR Pro V1.2 kartı ve BIGTREETECH TFT70 ekran kullandım, ekran ara yüzü çok güzel. Ama Marlin derlemede FAN kontrolünü bir türlü sağlayamadım. Karta akım verdiğim bağlı olan 3 adet FAN hepsi birden çalışmaya başlıyor. Aynı sorun sendede varmı.
 
Son düzenleme:
Kattan memnun musun? Yoksa keşke onun yerine şunu alsaydım dediğin oldu mu?

Karttan çok memnunum. Çok sayıda sensör girişi ve çok sayıda PWM yapılabilen çıkışı var. Benim yazıcının kabin ısıtıcısını yaptığım zaman bunlar çok işime yarayacak.
 
3D Yazıcı yaptım, Bigtreetech SKR Pro V1.2 kartı ve BIGTREETECH TFT70 ekran kullandım, ekran ara yüzü çok güzel. Ama Marlin derlemede FAN kontrolünü bir türlü sağlayamadım. Karta akım verdiğim bağlı olan 3 adet FAN hepsi birden çalışmaya başlıyor. Aynı sorun sendede varmı.

Benim kullandığım kart Bigtreetech SKR Pro V1.1 olanı, yani sendekinin bir önceki versiyonu. Fan yapılandırması için Configuration_adv.h dosyasında şu ayarı yaptım:

Configuration_adv.h:
/**
 * Extruder cooling fans
 *
 * Extruder auto fans automatically turn on when their extruders'
 * temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
 *
 * Your board's pins file specifies the recommended pins. Override those here
 * or set to -1 to disable completely.
 *
 * Multiple extruders can be assigned to the same pin in which case
 * the fan will turn on when any selected extruder is above the threshold.
 */
#define E0_AUTO_FAN_PIN FAN1_PIN
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define E5_AUTO_FAN_PIN -1
#define E6_AUTO_FAN_PIN -1
#define E7_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1
 
Kabin ısıtıcısı nasıl birşey

ABS basarken yüksek sıcaklık gerekiyor, yoksa ABS atma yapmıyor. O yüzden kabini de ısıtmak istiyorum. İki tane halojen lamba ısıtma işini yapacak, bir SSR röle ile ısı ayarını PWM kullanarak yapacağım. Isı ölçümü için de standart PT100 sensörlerden kullanacağım. İlave devreye falan hiç gerek yok, SKR Pro da herşey var.
 
Bunun üzerindeki sürücüler yerine(onları almayıp), benim m542 sürücülere giriş yapabiliyorum değil mi?

Bunda bir sürü ilave sinyaller var, ayrıntılarına bakmadım. Ama sen sadece RESET, STEP, ve DIR alman yeterli olur herhalde. Kartta step motor beslemeleri ayrı bir konnektörle veriliyor. Bende 24 V. Beslemeyi de karttan alabilirsin aslında, ama geçen akımlar yüksek olacak, o yüzden konnektörleri fazla zorlamamak daha iyi olur.
 
SKR PRO nun iki sürümü var piyasada, 1.1 ve 1.2. İkincisinde bazı ısınma ile ilgili sorunlar giderilmiş, onun dışında özellikleri aynı.
 
Benim kullandığım kart Bigtreetech SKR Pro V1.1 olanı, yani sendekinin bir önceki versiyonu. Fan yapılandırması için Configuration_adv.h dosyasında şu ayarı yaptım:

Configuration_adv.h:
/**
* Extruder cooling fans
*
* Extruder auto fans automatically turn on when their extruders'
* temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
*
* Your board's pins file specifies the recommended pins. Override those here
* or set to -1 to disable completely.
*
* Multiple extruders can be assigned to the same pin in which case
* the fan will turn on when any selected extruder is above the threshold.
*/
#define E0_AUTO_FAN_PIN FAN1_PIN
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define E5_AUTO_FAN_PIN -1
#define E6_AUTO_FAN_PIN -1
#define E7_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1
FAN1_PIN nin pin numarsı PE5. Ekrandan konrol edebiliyormusun
 
FAN1_PIN nin pin numarsı PE5. Ekrandan konrol edebiliyormusun

Evet doğru. Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h dosyasında ilgili bölüm aşağıda:

pins_BTT_SKR_PRO_common.h:
//
// Heaters / Fans
//
#define HEATER_0_PIN                        PB1   // Heater0
#define HEATER_1_PIN                        PD14  // Heater1
#define HEATER_2_PIN                        PB0   // Heater1
#define HEATER_BED_PIN                      PD12  // Hotbed
#define FAN_PIN                             PC8   // Fan0
#define FAN1_PIN                            PE5   // Fan1
#define FAN2_PIN                            PE6
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,789
Mesajlar
99,023
Üyeler
2,464
Son üye
s4met

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top