Marlin Ayarları ile ilgili olarak oluşturduğum bu kılavuzun sıkıcı ve yorucu olmaması amaçlanmıştır. Sadece Marlin’i hızlı bir şekilde yapılandırmak için göz önünde bulundurmanız gereken temel (veya daha temel) seçenekleri göstereceğim.
Yazıcınızın mekaniği nedeniyle makalede görünmeyen bazı parametreler olabilir. Kılavuzu tamamen okuduktan sonra, Marlin’in nasıl çalıştığını zaten anlayacaksınız.
Günün sonunda amaç, Marlin ile kendi başınıza başa çıkmayı öğrenmeniz ve herhangi bir kaynağa ihtiyaç duymadan kendi yazılımınızı derleyebilmenizdir.
Neden Marlin 2.0.x ile başlıyorum? Çünkü şuanda en yaygın sürüm 2.0.x sürümü.
Marlin Ayarları : Marlin 2.0.x’i sıfırdan yapılandırma
Kurulumu yaparken makaledeki sırayı takip etmenizi şiddetle tavsiye ederim. Bunun nedeni, aygıt yazılımını düzenlediğinizde parametrelerin de aynı sırada bulunacak olmasıdır.
Marlin’i tanıyarak 3D baskının heyecan verici dünyasını ve tüm olanaklarını biraz daha anlayacak ve tadını çıkaracaksınız.
Marlin Ayarları : Marlin 2.0.x’e Giriş
Yazıcınızda Marlin 2.0.x’i yapılandırmak ilk bakışta zor ve sadece deneyimli programcıların başarabileceği bir şey gibi görünebilir. Ancak durum böyle değil.
Biraz sabır ve iyi bir metin editörü ile herhangi bir arduino tabanlı yazıcıyı en son firmware sürümleri ile sorunsuz bir şekilde (ve programlama bilgisi olmadan) yapılandırabiliriz. Aslında Marlin pek çok dosyadan oluşuyor, ancak çalışan bir aygıt yazılımını derlemek ve ardından yazıcımıza yüklemek için yalnızca bir veya en fazla iki tanesini değiştirmemiz gerekecek.
Elbette, Marlin 2’yi istediğiniz kadar özelleştirebilirsiniz, ancak şu anda bahsetmeyeceğimiz veya daha sonra yapacağımız birkaç dosyayı zaten değiştirmemiz gerekiyor.
Bununla birlikte, yapılandırma ve derleme işlemi sırasında çözülmesi zor görünen hataların veya sorunlar ortaya çıkabilir. Ancak biraz araştırmayla hepsini kolayca çözebiliriz.
Marlin 2’yi yapılandırmak için makinenizin tüm teknik özelliklerini ve bileşenlerini önceden bilmeniz gerektiğini unutmayın. Ekstrüder tipi, baskı hacmi, termistör vb. Bu yüzden tüm bu bilgileri önceden toplayın ve not edin
Marlin Ayarları : Marlin Builder İle Marlin’i web üzerinden yapılandırma
Yazılımı düzenlemek oldukça sıkıcı olduğundan, tüm bu kodu elle düzenlemek söz konusu olduğunda bir “alternatif” olan Marlin Builder aracını kullanabiliriz.
Temel olarak, Marlin Builder bize 5 bölüm boyunca rehberlik eden bir Sihirbazdan (veya yapılandırma asistanından) oluşuyor. Bu bölümlerin her biri, Marlin’i mekanik ve elektroniğe göre derlemek için temel parametreleri kontrol eder. Yani 5 bölümü yapılandırdığınızda, aygıt yazılımı hazır hale geliyor.
Elbette Marlin Builder gibi hazır derleyicileri kullanmak için parametreleri bilmek gerekiyor. Burada devreye Marlin’i öğrenmek giriyor. Bu yüzden önce Marlin’i öğrenip sonrasında isterseniz Marlin Builder ya da Vscode ile derleme işlemlerini yapabilirsiniz.
Marlin Ürün Yazılımının İndirilmesi
Marlin Download adresine giderek listelenen sürümlerden Bugfix-2.0.x sürümünü indiriyoruz.
İndirdikten sonra, bilgisayarınızın masaüstündeki bir klasöre açın.
Visual Studio Code İndirin
Visual Studio Code uygulamasını indirdikten sonra Platform.io eklentisini kuracağız.
- İndirdiğimiz ve açtığımız Marlin klasörünün içerisine girdikten sonra sağ tık ile Vs Code ile aç seçip, klasörün Vscode içerisinde açılmasını bekliyoruz.
- Sol menüden Eklentiler sekmesine tıklıyoruz.
- Arama kısmına Platform yazıyoruz ve Platform.io eklentisini kuruyoruz.
Artık Marlin ve VSCode kullanmak için hazır halde. Şimdi ayar dosyamıza geçelim.
Marlin yazılımını kişiselleştirmek ve derlemek için sadece 2 adet ayar dosyasında değişiklik yapmak yeterli.
Marlin Ayarları : “Configuration.h” dosyası
Vscode içerisinde dosya dizinindeki Marlin klasörünün altında 2 adet dosya yer alıyor.
- configuration.h -> Temel ayarlar
- configuration_adv.h -> Gelişmiş ayarlar
Daha önce de belirttiğim gibi, Marlin 2.0.x’i yapılandırırken her şeyi yöneten 2 ana dosya var. Elbette, yapabileceğimiz daha birçok değişiklik ve modifikasyon var, ancak şu anki amacımız için bunlar şu anda gerekli değil (orijinal menüde değişiklikler, logolar vb.)
Dosya içerisinde herhangi bir komutu etkinleştirmek için komutun başındaki // işaretini silmemiz yeterli olacaktır.
Şimdi gelelim dosya içerisindeki ayarların neler olduğuna.
Aşağıdaki bölümden itibaren hangi kod satırının ne işe yaradığını anlatacağım.
Marlin logosu (SHOW_BOOTSCREEN)
3d Yazıcıyı açtığınızda görünen Marlin logosudur. Varsayılan olarak aktif görünür. Kendi logonuzu veya özel resminizi de koyabilirsiniz, ancak bunu sonlara doğru anlatacağım.
// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** #define SHOW_BOOTSCREEN
İletişim portları (SERIAL_PORT y SERIAL_PORT_2)
Bunlar elektronik cihazlarımızın iletişim portlarıdır. Genellikle port 3 olarak tanımlarız
Elektronik kartınız bir SKR V1.4 veya SKR V1.4 Turbo ise SERIAL_PORT_2’yi etkinleştirmeniz ve -1 değerini (varsayılan olarak olduğu gibi) koymanız gerekir. Ve SKR GTR V1.0 elektroniği için SERIAL_PORT ve SERIAL_PORT_2’ye sırasıyla -1 ve 3 değerlerini koymalısınız.
/** * Select the serial port on the board to use for communication with the host. * This allows the connection of wireless adapters (for instance) to non-default port pins. * Serial port -1 is the USB emulated serial port, if available. * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader. * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ #define SERIAL_PORT 0 /** * Select a secondary serial port on the board to use for communication with the host. * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ //#define SERIAL_PORT_2 -1
İletişim hızı (BAUDRATE)
Bilgisayarımızı yazıcıya bağlayacağımız hız, varsayılan olarak 250000’dir, bu yüzden bu şekilde bırakacağız.
Eğer yazıcınızla iletişim sorunu yaşarsanız, bu parametrenin hızını düşürerek sorunu çözmeye çalışabilirsiniz.
/** * This setting determines the communication speed of the printer. * * 250000 works in most cases, but you might try a lower speed if * you commonly experience drop-outs during host printing. * You may try up to 1000000 to speed up SD file transfer. * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ #define BAUDRATE 250000
Anakart (MOTHERBOARD)
Çok önemli bir parametre. Burada yazıcımıza taktığımız anakartı seçeceğiz. Birçok anakart olduğundan, hangisinin doğru olduğunu ve buraya yerleştirilecek değeri bulmamız gerekecek.
“boards.h” dosyasında tüm anakartların listesi var. Dosya dizini içerisinde aşağıdaki adreste yer alır: \Marlin\src\core\boards.h
Yazıcım MKS Gen v1.4 elektronik kart kullandığı için bu alana “BOARD_MKS_GEN_13” yazıyorum. Siz elinizdeki yazıcının anakartına uygun olanı yazmalısınız. Genelde Twotrees yazıcılarında Mks_robin_nano anakart kullanılır. Fakat yazıcınızın anakartından emin olmalısınız.
// Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD #define MOTHERBOARD BOARD_MKS_GEN_13 #endif
Makinenizin adı (CUSTOM_MACHINE_NAME)
Yazıcınızın sahip olmasını istediğiniz isim. Varsayılan olarak devre dışıdır, bu yüzden kod bloğu önünde // bulunur.
Bu işareti silerek kodu aktif hale getirip istediğimiz ismi verebiliriz.
// Name displayed in the LCD "Ready" message and Info menu #define CUSTOM_MACHINE_NAME "Pulsar X1 PRO"
Ekstrüder sayısı (EXTRUDERS)
Yazıcımızın sahip olduğu ekstrüder sayısını yapılandıracağız. Varsayılan olarak, başlangıç değeri 1’dir, çünkü çoğu yazıcının bir ekstrüderi vardır.
// This defines the number of extruders // :[1, 2, 3, 4, 5, 6, 7, 8] #define EXTRUDERS 1
Filament çapı (DEFAULT_NOMINAL_FILAMENT_DIA)
Bu bölümde yazıcımızın kullandığı filament çap tipini seçeceğiz. Varsayılan olarak 3.0 gelir, garip bir şey çünkü artık çoğu yazıcı zaten genellikle 1.75 çapında çalışıyor. Aşağıdaki gibi değiştiriyoruz.
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Prusa Çoklu Malzeme Kiti (PRUSA_MMU2)
Orijinal Josef Prusa multimaterial kitini veya piyasada bulunan başka bir Çin klonunu taktıysanız etkinleştirin. Değilse olduğu gibi bırakın.
/** * Multi-Material Unit * Set to one of these predefined models: * * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) * PRUSA_MMU2 : Průša MMU2 * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. * See additional options in Configuration_adv.h. */ //#define MMU_MODEL PRUSA_MMU2
Sıcaklık sensörleri (TEMP_SENSORS)
Bu bölümde 3D yazıcımızdaki mevcut sıcaklık sensörlerini tanımlayacağız. Bu son sürüm 2.0.7.2’de, hazne sıcaklığı için bir sensör de dahil olmak üzere daha fazla ekstrüder için destek eklenmiştir (toplam 11 sensör desteklenmektedir).
Varsayılan olarak, yalnızca TEMP_SENSOR_0 “1” değeriyle yapılandırılmıştır. Ben anakartımdaki bileşene göre, oraya “5” değerini koymalıyım.
Ayrıca ısıtmalı bir yatağım olduğundan TEMP_SENSOR_BED’i 1 değeriyle ayarlıyorum.
//=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== // @section temperature /** * --NORMAL IS 4.7kΩ PULLUP!-- 1kΩ pullup can be used on hotend sensor, using correct resistor and table * * Temperature sensors available: * * SPI RTD/Thermocouple Boards - IMPORTANT: Read the NOTE below! * ------- * -5 : MAX31865 with Pt100/Pt1000, 2, 3, or 4-wire (only for sensors 0-1) * NOTE: You must uncomment/set the MAX31865_*_OHMS_n defines below. * -3 : MAX31855 with Thermocouple, -200°C to +700°C (only for sensors 0-1) * -2 : MAX6675 with Thermocouple, 0°C to +700°C (only for sensors 0-1) * * NOTE: Ensure TEMP_n_CS_PIN is set in your pins file for each TEMP_SENSOR_n using an SPI Thermocouple. By default, * Hardware SPI on the default serial bus is used. If you have also set TEMP_n_SCK_PIN and TEMP_n_MISO_PIN, * Software SPI will be used on those ports instead. You can force Hardware SPI on the default bus in the * Configuration_adv.h file. At this time, separate Hardware SPI buses for sensors are not supported. * * Analog Themocouple Boards * ------- * -4 : AD8495 with Thermocouple * -1 : AD595 with Thermocouple * * Analog Thermistors - 4.7kΩ pullup - Normal * ------- * 1 : 100kΩ EPCOS - Best choice for EPCOS thermistors * 331 : 100kΩ Same as #1, but 3.3V scaled for MEGA * 332 : 100kΩ Same as #1, but 3.3V scaled for DUE * 2 : 200kΩ ATC Semitec 204GT-2 * 202 : 200kΩ Copymaster 3D * 3 : ???Ω Mendel-parts thermistor * 4 : 10kΩ Generic Thermistor !! DO NOT use for a hotend - it gives bad resolution at high temp. !! * 5 : 100kΩ ATC Semitec 104GT-2/104NT-4-R025H42G - Used in ParCan, J-Head, and E3D, SliceEngineering 300°C * 501 : 100kΩ Zonestar - Tronxy X3A * 502 : 100kΩ Zonestar - used by hot bed in Zonestar Průša P802M * 503 : 100kΩ Zonestar (Z8XM2) Heated Bed thermistor * 504 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-B3950) Hotend Thermistor * 505 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-3950) Bed Thermistor * 512 : 100kΩ RPW-Ultra hotend * 6 : 100kΩ EPCOS - Not as accurate as table #1 (created using a fluke thermocouple) * 7 : 100kΩ Honeywell 135-104LAG-J01 * 71 : 100kΩ Honeywell 135-104LAF-J01 * 8 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT * 9 : 100kΩ GE Sensing AL03006-58.2K-97-G1 * 10 : 100kΩ RS PRO 198-961 * 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1% * 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed * 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1% * 15 : 100kΩ Calibrated for JGAurora A5 hotend * 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327 * 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input * 23 : 100kΩ GTM32 Pro vB - bed - 4.7kΩ pullup to 3.3v and 220Ω to analog input * 30 : 100kΩ Kis3d Silicone heating mat 200W/300W with 6mm precision cast plate (EN AW 5083) NTC100K - beta 3950 * 60 : 100kΩ Maker's Tool Works Kapton Bed Thermistor - beta 3950 * 61 : 100kΩ Formbot/Vivedino 350°C Thermistor - beta 3950 * 66 : 4.7MΩ Dyze Design High Temperature Thermistor * 67 : 500kΩ SliceEngineering 450°C Thermistor * 68 : PT100 amplifier board from Dyze Design * 70 : 100kΩ bq Hephestos 2 * 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32 * 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor * * Analog Thermistors - 1kΩ pullup - Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ. * ------- (but gives greater accuracy and more stable PID) * 51 : 100kΩ EPCOS (1kΩ pullup) * 52 : 200kΩ ATC Semitec 204GT-2 (1kΩ pullup) * 55 : 100kΩ ATC Semitec 104GT-2 - Used in ParCan & J-Head (1kΩ pullup) * * Analog Thermistors - 10kΩ pullup - Atypical * ------- * 99 : 100kΩ Found on some Wanhao i3 machines with a 10kΩ pull-up resistor * * Analog RTDs (Pt100/Pt1000) * ------- * 110 : Pt100 with 1kΩ pullup (atypical) * 147 : Pt100 with 4.7kΩ pullup * 1010 : Pt1000 with 1kΩ pullup (atypical) * 1047 : Pt1000 with 4.7kΩ pullup (E3D) * 20 : Pt100 with circuit in the Ultimainboard V2.x with mainboard ADC reference voltage = INA826 amplifier-board supply voltage. * NOTE: (1) Must use an ADC input with no pullup. (2) Some INA826 amplifiers are unreliable at 3.3V so consider using sensor 147, 110, or 21. * 21 : Pt100 with circuit in the Ultimainboard V2.x with 3.3v ADC reference voltage (STM32, LPC176x....) and 5V INA826 amplifier board supply. * NOTE: ADC pins are not 5V tolerant. Not recommended because it's possible to damage the CPU by going over 500°C. * 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x * * Custom/Dummy/Other Thermal Sensors * ------ * 0 : not used * 1000 : Custom - Specify parameters in Configuration_adv.h * * !!! Use these for Testing or Development purposes. NEVER for production machine. !!! * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. * */ #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_4 0 #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 #define TEMP_SENSOR_BED 0 #define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_COOLER 0 #define TEMP_SENSOR_BOARD 0 #define TEMP_SENSOR_REDUNDANT 0
Sıcaklık sınırlayıcıları (MINTEMP & MAXTEMP)
Marlin 2’de bu parametreleri yapılandırmak çok önemlidir, çünkü yazıcımızın maksimum ve minimum sıcaklıklarını kontrol ederler.
Mevcut sensörlerin her birinin hangi aralıklarda olması gerektiğini tanımlayacağız. Bu şekilde, herhangi bir sensör bu sıcaklığa ulaşmazsa veya bu sıcaklığı aşarsa, Marlin ekranda bir hata verir ve Hotend’i ve ısıtmalı yatağı devre dışı bırakır.
Ben ekstrüder sıcaklıklarını genellikle 5 derece (minimum) ve 265 derece (maksimum) olarak ayarlıyorum. Bir ekstrüderin veya yatağın 5º dereceye ulaşmaması durumunda, Termistörün doğru takılmadığı veya fiziksel olarak hasar gördüğü sonucuna varacağız.
Aynı şekilde maksimum sıcaklığın yanlışlıkla aşılması durumunda da bizi koruyacaktır.
// Below this temperature the heater will be switched off // because it probably indicates a broken thermistor wire. #define HEATER_0_MINTEMP 5 #define HEATER_1_MINTEMP 5 #define HEATER_2_MINTEMP 5 #define HEATER_3_MINTEMP 5 #define HEATER_4_MINTEMP 5 #define HEATER_5_MINTEMP 5 #define HEATER_6_MINTEMP 5 #define HEATER_7_MINTEMP 5 #define BED_MINTEMP 5 #define CHAMBER_MINTEMP 5 // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) #define HEATER_0_MAXTEMP 275 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 #define HEATER_4_MAXTEMP 275 #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 #define BED_MAXTEMP 150 #define CHAMBER_MAXTEMP 60
PID Ayarlama (Ekstrüderler)
PID ayarlamanın ne olduğunu Hotend ve Tabla PID Ayarı Nasıl Yapılır? konusunda ele almıştım. Burada da varsayılan ayarları yapacağız. İlgili makaledeki anlatımı uygulayıp değerleri aldıktan sonra DEFAULT_Kp, DEFAULT_Ki ve DEFAULT_Kd değerlerini aldıktan sonra aşağıdaki alana yazabilirsiniz.
Ekstrüderlerin ve ısıtılmış yatağın sıcaklığını yöneten algoritmanın ayarlarını kontrol eden bölüm.
Varsayılan olarak, piyasadaki en iyi bilinen yazıcıların birçoğu için bazı değerler önceden belirlenmiştir. Benim yazıcım bu tanıma uymadığı için ben kendi değerlerimi ekledim.
#if ENABLED(PIDTEMP) //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) // Set/get with G-code: M301 E[extruder number, 0-2] #if ENABLED(PID_PARAMS_PER_HOTEND) // Specify up to one value per hotend here, according to your setup. // If there are fewer values, the last one applies to the remaining hotends. #define DEFAULT_Kp_LIST { 22.20, 22.20 } #define DEFAULT_Ki_LIST { 1.08, 1.08 } #define DEFAULT_Kd_LIST { 114.00, 114.00 } #else #define DEFAULT_Kp 22.20 #define DEFAULT_Ki 1.08 #define DEFAULT_Kd 114.00 #endif #endif
PID Yatak Ayarlama (Isı Yatağı)
Varsayılan olarak devre dışıdır. Isıtmalı bir yatağınız varsa, yapılandırmada göreceğiniz gibi #define PIDTEMPBED seçeneğini aktiflemek gerekir.
//=========================================================================== //====================== PID > Bed Temperature Control ====================== //=========================================================================== /** * PID Bed Heating * * If this option is enabled set PID constants below. * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis. * * The PID frequency will be the same as the extruder PWM. * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz, * which is fine for driving a square wave into a resistive load and does not significantly * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W * heater. If your configuration is significantly different than this and you don't understand * the issues involved, don't use bed PID until someone else verifies that your hardware works. */ //#define PIDTEMPBED //#define BED_LIMIT_SWITCHING /** * Max Bed Power * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis). * When set to any value below 255, enables a form of PWM to the bed that acts like a divider * so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED) */ #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current #if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Sends debug data to the serial port. // 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) // from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) #define DEFAULT_bedKp 10.00 #define DEFAULT_bedKi .023 #define DEFAULT_bedKd 305.4 // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED
Ancak, PIDTEMPBED parametresini etkinleştirmenin etkinleştirmemekten daha zararlı olduğu durumlar da vardır. En baştan etkinleştirmemenizi tavsiye ederim.
Soğuk ekstrüzyon (PREVENT_COLD_EXTRUSION)
Her iki işlev de Marlin’de soğuk ekstrüzyonu yönetir. Hepimizin bildiği gibi, Hotend’imiz sıcak değilse filamenti ekstrüde etmemiz tavsiye edilmez.
PREVENT_COLD_EXTRUSION seçeneği, hotendimiz tanımlanan minimum sıcaklığa ulaşmazsa doğrudan malzeme ekstrüzyonu yapmamızı engelleyecektir.
EXTRUDE_MINTEMP parametresi ile Marlin’in filamenti hangi minimum sıcaklıkta ekstrüde etmesine izin vereceğimizi yapılandırabiliriz. Varsayılan olarak her ikisi de aktiftir
/** * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP. * Add M302 to set the minimum extrusion temperature and/or turn * cold extrusion prevention on and off. * * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! *** */ #define PREVENT_COLD_EXTRUSION #define EXTRUDE_MINTEMP 170
Ekstrüzyon uzunluğu (PREVENT_LENGTHY_EXTRUDE)
Kod satırında belirtildiği gibi, yapılandırdığımız mesafeden daha büyük bir mesafeden filamentin ekstrüzyonunu önler.
Tek seferde 200 mm’den daha fazla ekstrüzyon yapmak istiyorsanız, örneğin filamenti Bowden kullanarak ekrandan yüklemek için bir ayar eklemişseniz, EXTRUDE_MAXLENGTH parametresini daha yüksek bir değer için değiştirmeniz gerekecektir. Her ikisi de Marlin 2’de varsayılan olarak etkindir.
/** * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH. * Note: For Bowden Extruders make this large enough to allow load/unload. */ #define PREVENT_LENGTHY_EXTRUDE #define EXTRUDE_MAXLENGTH 200
Termal korumalar (THERMAL_PROTECTION)
Bu üç parametre, Marlin 2.0.x’in yazıcılarımıza zarar gelmesini önlemek için sunduğu ek termal korumayı etkinleştirir. Her zaman aktif olmalıdırlar, aslında Marlin 2’de varsayılan olarak gelirler, bu yüzden onlara hiçbir şekilde dokunmuyoruz.
//=========================================================================== //======================== Thermal Runaway Protection ======================= //=========================================================================== /** * Thermal Protection provides additional protection to your printer from damage * and fire. Marlin always includes safe min and max temperature ranges which * protect against a broken or disconnected thermistor wire. * * The issue: If a thermistor falls out, it will report the much lower * temperature of the air in the room, and the the firmware will keep * the heater on. * * If you get "Thermal Runaway" or "Heating failed" errors the * details can be tuned in Configuration_adv.h */ #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber #define THERMAL_PROTECTION_COOLER // Enable thermal protection for the laser cooling
Mekanik parametreler (COREXY seçimi)
Piyasada farklı mekaniğe sahip farklı yazıcılar bulunmaktadır. Örneğin Kartezyen, kinematik, delta, tripteron, corexy (ve türevleri), vb.
3D yazıcınızın COREXY kinematiği veya varyantlarından herhangi birini kullanması durumunda, ilgili parametresini etkinleştirmelisiniz. Kartezyen kinematiğe sahip olduğum için, gördüğünüz gibi her şeyi devre dışı bırakıyorum.
//=========================================================================== //============================= Mechanical Settings ========================= //=========================================================================== // @section machine // Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics, // either in the usual order or reversed //#define COREXY //#define COREXZ //#define COREYZ //#define COREYX //#define COREZX //#define COREZY //#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042 //#define MARKFORGED_YX
Endstop Ayarları (USE_XMIN_PLUG & USE_XMAX_PLUG)
Bu bölümde Marlin aygıt yazılımımıza anakartımıza bağladığımız limit anahtarlarını göstereceğiz. Normalde, minimum hareketleri (veya durakları) belirtmek için 3 limit anahtarı vardır. Bu şekilde Marlin HOMING yaparken tüm eksenlerdeki ilk konumu (0) belirler.
Maksimum hareketleri belirlemek için ekstra sensörler de takılabilir. Bunlar makinenin kesinlikle gerekli olanın ötesinde hareket etmesini önlemeyi sağlar. Fakat gerekli değildir.
Benim yazıcımda, X ekseninde (ekstrüder) ve Y ekseninde (yatak) iki mekanik limit anahtarım var. Ayrıca Z’de bir dengeleme sensörüm var, bu nedenle aşağıdaki satırlarda kendiniz de görebileceğiniz gibi yalnızca 3 minimum limit anahtarını etkin durumda bırakıyorum.
//=========================================================================== //============================== Endstop Settings =========================== //=========================================================================== // @section homing // Specify here all the endstop connectors that are connected to any endstop or probe. // Almost all printers will be using one per axis. Probes will use one or more of the // extra connectors. Leave undefined any used for non-endstop and non-probe purposes. #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_IMIN_PLUG //#define USE_JMIN_PLUG //#define USE_KMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG //#define USE_IMAX_PLUG //#define USE_JMAX_PLUG //#define USE_KMAX_PLUG
Endstop Yönleri (ENDSTOP_INVERTING)
Başta Hepsini FALSE olarak bırakın. Eğer ilgili eksen ters yöne hareket ederse, ozaman ilgili değer True olarak değiştirin.
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). #define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
Sürücü yapılandırması (DRIVER_TYPE)
Doğru sürücüleri seçmek çok önemlidir. Aksi halde motorlar ters yöne hareket eder.
Kullandığınız anakart üzerinde yer alana motor sürücülerini yazın. Hangi eksende hangi motor sürücüsü çalışıyor ise ilgili bölüme motor numarasını yazın.
/** * Stepper Drivers * * These settings allow Marlin to tune stepper driver timing and enable advanced options for * stepper drivers that support them. You may also override timing options in Configuration_adv.h. * * Use TMC2208/TMC2208_STANDALONE for TMC2225 drivers and TMC2209/TMC2209_STANDALONE for TMC2226 drivers. * * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01, * TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE, * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ #define X_DRIVER_TYPE A4988 #define Y_DRIVER_TYPE A4988 #define Z_DRIVER_TYPE A4988 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 //#define Z4_DRIVER_TYPE A4988 //#define I_DRIVER_TYPE A4988 //#define J_DRIVER_TYPE A4988 //#define K_DRIVER_TYPE A4988 #define E0_DRIVER_TYPE A4988 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 //#define E4_DRIVER_TYPE A4988 //#define E5_DRIVER_TYPE A4988 //#define E6_DRIVER_TYPE A4988 //#define E7_DRIVER_TYPE A4988
Motor Adımları yapılandırması (DEFAULT_AXIS_STEPS_PER_UNIT)
Motorların hangi eksende hangi hız (adım) ile ilerleyeceğini belirtiyoruz. Parametreler sırası ile X-Y-Z ve E0 (extruder) motorlarını temsil eder.
/** * Default Axis Steps Per Unit (steps/mm) * Override with M92 * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]] */ #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 }
Otomatik seviyeleme sensörü konumu (NOZZLE_TO_PROBE_OFFSET)
eğer bir BL-touch kullanıyorsanız, nozüle göre konumunu Marlin’e belirtmeniz gerekir. Koordinatları milimetre cinsinden tanımlayacağız.
Benim seviye sensörüm Nozulun 37 mm sağında ve 2 mm daha arkasında yer alıyor, bu nedenle aşağıdaki konfigürasyon yeterli:
/** * Nozzle-to-Probe offsets { X, Y, Z } * * - Use a caliper or ruler to measure the distance from the tip of * the Nozzle to the center-point of the Probe in the X and Y axes. * - For the Z offset use your best known value and adjust at runtime. * - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc. * * Assuming the typical work area orientation: * - Probe to RIGHT of the Nozzle has a Positive X offset * - Probe to LEFT of the Nozzle has a Negative X offset * - Probe in BACK of the Nozzle has a Positive Y offset * - Probe in FRONT of the Nozzle has a Negative Y offset * * Some examples: * #define NOZZLE_TO_PROBE_OFFSET { 10, 10, -1 } // Example "1" * #define NOZZLE_TO_PROBE_OFFSET {-10, 5, -1 } // Example "2" * #define NOZZLE_TO_PROBE_OFFSET { 5, -5, -1 } // Example "3" * #define NOZZLE_TO_PROBE_OFFSET {-15,-10, -1 } // Example "4" * * +-- BACK ---+ * | [+] | * L | 1 | R <-- Example "1" (right+, back+) * E | 2 | I <-- Example "2" ( left-, back+) * F |[-] N [+]| G <-- Nozzle * T | 3 | H <-- Example "3" (right+, front-) * | 4 | T <-- Example "4" ( left-, front-) * | [-] | * O-- FRONT --+ */ #define NOZZLE_TO_PROBE_OFFSET { 37, 2, 0 }
Kod satırı içerisinde belirtilen yön haritası ile kolayca konum ayarı yapabilirsiniz.
Seviyeleme hızı (XY_PROBE_SPEED)
Bu parametre Marlin 2’nin otomatik seviye sensörünü 2 ölçüm noktası arasında hareket ettirirken kullanacağı hızı tanımlar. Varsayılan olarak 133 * 60 mm/dak olarak gelir, kendi takdirinize bağlı olarak varsayılan olarak bırakabilir veya yükseltebilirsiniz.
// X and Y axis travel speed (mm/min) between probes #define XY_PROBE_SPEED (133*60)
Motorların yönleri (INVERT_X_DIR)
HOME yaparken veya yazıcımızla herhangi bir parçayı yazdırırken motorlardan herhangi biri yanlış yöne giderse bu parametreleri değiştireceğiz. Varsayılan olarak hepsi FALSE seçeneği ile yapılandırılmıştır, ancak benim durumumda aşağıda görebileceğiniz gibi yatağımın yönünü (Y ekseni) tersine çevirmek zorunda kaldım.
Bununla birlikte, diğer bir seçenek de motor bağlantı kablosunu ters çevirmektir, böylece sizin için daha rahat olan çözümü seçebilirsiniz.
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR false #define INVERT_Y_DIR true #define INVERT_Z_DIR false
Baskı hacmi (X_BED_SIZE & Y_BED_SIZE)
Yazıcımızın baskı alanı genişliğini belirtiyoruz
// The size of the print bed #define X_BED_SIZE 285 #define Y_BED_SIZE 206
Hareket sınırları (MIN_POS & MAN_POS)
Baskı tabanımızın (Isı Yatağı) boyutu tanımlandıktan sonra, Marlin 2’yi minimum ve maksimum hareket sınırları ile yapılandırmalıyız.
Varsayılan olarak, minimumlar için Marlin 0 değeri ile yapılandırılmış olarak gelir ve bu değer HOME ayarlı olduğundan değiştirmemeliyiz. Maksimum limitler için, Marlin doğrudan Isı Yatağımızın X ve Y’deki mevcut boyutunu kullanır, ki bunu daha önce bir önceki parametrede yapılandırılmış olarak bırakmıştık.
Yapılandırmayı bitirmek için, Z ekseninde eklememiz gereken ölçü, 3D Yazıcınızın maksimum baskı yüksekliğidir. Benim özel durumumda, yaklaşık 296 mm yazdırabiliyorum, bu yüzden değerini giriyorum.
// Travel limits (mm) after homing, corresponding to endstop positions. #define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #define Z_MAX_POS 296
Hareket kısıtlamaları (MIN_SOFTWARE_ENDSTOPS)
Güvenlik nedenleriyle ve yazıcımızın bileşenlerine zarar vermekten kaçınmak için Marlin 2 varsayılan olarak minimum limitleri aşmayacak şekilde yapılandırılmış olarak gelir.
Bu durum, herhangi bir limit anahtarına veya sensöre ulaşıldığında, manuel olarak yapsanız bile motorun daha fazla ilerlemesine izin vermeyeceği anlamına gelir.
Ancak, isterseniz bu sınırı devre dışı bırakabilirsiniz. Bu TAVSİYE ETMEDİĞİM bir seçenektir.
Ben şahsen genellikle Z eksenindeki sınırı kaldırıyorum. Ancak söylediğim gibi, çok gerekli olmadıkça veya ne yaptığınızı çok iyi bilmiyorsanız, varsayılan ayarları kullanın.
// Min software endstops constrain movement within minimum coordinate bounds #define MIN_SOFTWARE_ENDSTOPS #if ENABLED(MIN_SOFTWARE_ENDSTOPS) #define MIN_SOFTWARE_ENDSTOP_X #define MIN_SOFTWARE_ENDSTOP_Y #define MIN_SOFTWARE_ENDSTOP_Z #define MIN_SOFTWARE_ENDSTOP_I #define MIN_SOFTWARE_ENDSTOP_J #define MIN_SOFTWARE_ENDSTOP_K #endif
EEPROM (EEPROM_SETTINGS)
Marlin bize yazıcımızın yapılandırmasını ekranın kendisinden değiştirme ve ardından değişiklikleri Eeprom’a kaydetme imkanı sunar.
Bu özelliğin aktif olmasını istiyorsak, bu parametreyi etkinleştirmeliyiz.
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
ABS/PLA ön ısıtma (PREHEAT)
Marlin baskıdan önce yazıcıyı ısıtmak için size iki başlangıç seçeneği sunar.
ABS ve PLA filamentleri için mevcut sıcaklıkları ayarlayabilirsiniz, ancak isterseniz daha fazlasını da ekleyebilirsiniz.
// Preheat Constants #define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_TEMP_HOTEND 200 #define PREHEAT_1_TEMP_BED 60 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_LABEL "ABS" #define PREHEAT_2_TEMP_HOTEND 250 #define PREHEAT_2_TEMP_BED 100 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
Menü dili (LCD_LANGUAGE)
Varsayılan dil ayarı
/** * LCD LANGUAGE * * Select the language to display on the LCD. These languages are available: * * en, an, bg, ca, cz, da, de, el, el_gr, es, eu, fi, fr, gl, hr, it, jp_kana, * ko_KR, nl, pl, pt, pt_br, ru, sk, tr, uk, vi, zh_CN, zh_TW, test * * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek', 'el_gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ru':'Russian', 'sk':'Slovak', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)', 'test':'TEST' } */ #define LCD_LANGUAGE es
SD Kart desteği (SDSUPPORT)
Yazıcının Sd kart desteğini aktiflemek için kullanıyoruz.
/** * 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
Ekran tipi (LCD / Kontrolör Seçimi)
Configuration.h dosyasına yakından bakarsak, sayısız ekran olduğunu göreceğiz.
Biraz karmaşık görünebilir, ancak gerçekten tek yapmamız gereken LCD ekranımızın türünü bulmak ve Marlin 2’yi yapılandırmak
// // MKS MINI12864 with graphic controller and SD support // https://reprap.org/wiki/MKS_MINI_12864 // #define MKS_MINI_12864
Isı Yatağının Seviyelendirilmesi (BED_LEVELING)
Marlin 2’de yatağımızı kendi kendine seviyelememize yardımcı olacak çeşitli yöntemler veya işlevler mevcuttur. Varsayılan olarak devre dışı bırakılmışlardır, bu nedenle bunları kullanabilmek için etkinleştirmemiz gerekir.
Bl-touch kullanıyorsak;
AUTO_BED_LEVELING_BILINEAR ve RESTORE_LEVELING_AFTER_G28 ayarlarını etkinleştiriyoruz.
/** * Choose one of the options below to enable G29 Bed Leveling. The parameters * and behavior of G29 will change depending on your selection. * * If using a Probe for Z Homing, enable Z_SAFE_HOMING also! * * - AUTO_BED_LEVELING_3POINT * Probe 3 arbitrary points on the bed (that aren't collinear) * You specify the XY coordinates of all 3 points. * The result is a single tilted plane. Best for a flat bed. * * - AUTO_BED_LEVELING_LINEAR * Probe several points in a grid. * You specify the rectangle and the density of sample points. * The result is a single tilted plane. Best for a flat bed. * * - AUTO_BED_LEVELING_BILINEAR * Probe several points in a grid. * You specify the rectangle and the density of sample points. * The result is a mesh, best for large or uneven beds. * * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling) * A comprehensive bed leveling system combining the features and benefits * of other systems. UBL also includes integrated Mesh Generation, Mesh * Validation and Mesh Editing systems. * * - MESH_BED_LEVELING * Probe a grid manually * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.) * For machines without a probe, Mesh Bed Leveling provides a method to perform * leveling in steps so you can manually adjust the Z height at each grid-point. * With an LCD controller the process is guided step-by-step. */ //#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR #define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL //#define MESH_BED_LEVELING /** * Normally G28 leaves leveling disabled on completion. Enable * this option to have G28 restore the prior leveling state. */ #define RESTORE_LEVELING_AFTER_G28
Bu şekilde, sensörümüz çeşitli noktalarda aşağı inecek ve farklı yüksekliklerle sanal bir 3D ağ oluşturacaktır. HOME’u her zaman yatağın ortasında olmasını istediğim için Z_SAFE_HOMING seçeneğini etkinleştiriyorum.
#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28). #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28). #endif
Sensörsüz yapılandırma (4 köşe)
Bu yapılandırma, baskı kafamızda bir seviyeleme sensörü yoksa uygulayacağımız yapılandırmadır. İlk olarak Marlin 2’ye, söz konusu sensör olmadan seviyeleme yapacağımızı belirteceğiz.
/** * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe. * Use G29 repeatedly, adjusting the Z height at each point with movement commands * or (with LCD_BED_LEVELING) the LCD controller. */ #define PROBE_MANUALLY //#define MANUAL_PROBE_START_Z 0.2
Ardından, manuel tesviyemizin kaç test noktası (Prob noktası) gerçekleştirmesini istediğimizi belirteceğiz, bu nedenle GRID_MAX_POINTS parametrelerini değiştireceğiz. 4 köşeyi dengelemek için 4 noktaya ihtiyacımız olacak, bu yüzden yapılandırmayı bu şekilde bırakacağız.
// Set the number of grid points per dimension. #define GRID_MAX_POINTS_X 2 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Son olarak, LCD_BED_LEVELING ve LEVEL_BED_CORNERS işlevlerini etkinleştireceğiz. Bu sayede ekranda bu ayarlar için bir menü eklenmiş olacak
/** * Add a bed leveling sub-menu for ABL or MBL. * Include a guided procedure if manual probing is enabled. */ #define LCD_BED_LEVELING #if ENABLED(LCD_BED_LEVELING) #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment //#define MESH_EDIT_MENU // Add a menu to edit mesh points #endif // Add a menu item to move between bed corners for manual bed adjustment #define LEVEL_BED_CORNERS
Sensör kurulumu (BABYSTEPPING)
Eğer kapasitif yada kızılötesi sabit bir sensör kullanıyorsanız, babystep ile z offset için küçük hareketler sağlayarak ayar yapabilirsiniz.
/** * A Fix-Mounted Probe either doesn't deploy or needs manual deployment. * (e.g., an inductive probe or a nozzle-based probe-switch.) */ #define FIX_MOUNTED_PROBE
Ardından, sensörle seviyelendirmenin kaç test noktasında (Prob noktası) gerçekleştirmesini istediğimizi yapılandıracağız, bu nedenle GRID_MAX_POINTS parametrelerini değiştireceğiz.
Ben genellikle her baskıdan önce 9 kontrol noktası gerçekleştiriyorum, bu nedenle eksen başına 3 olan varsayılan seçenekleri bırakıyorum (3 x 3 = 9)
// Set the number of grid points per dimension. #define GRID_MAX_POINTS_X 3 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Daha sonra configuration_adv.h adlı aynı dizinde yer alan dosyayı düzenlemeliyiz. Bu dosya, bize daha ayrıntılı özelleştirme seçenekleri, eklentiler ve deneysel veya geliştirilmekte olan işlevler (BABYSTEPPING ) sunması bakımından ilkinden farklıdır.
BABYSTEPPING yöntemini kullanıyorum. Bu işlev, yatağın ortasındaki seviyeleme sensörümün yüksekliğini kağıt ile kalibre etmeme olanak tanıyor.
Daha sonra yazıcı her baskının başında otomatik olarak 9 test noktası (Probe Points) gerçekleştiriyor. Bu şekilde yatağımı kalibre etmek için gereksiz yere köşe köşe dolaşmak zorunda kalmıyorum.
Varsayılan olarak devre dışıdır, bu nedenle aşağıda gösterdiğim gibi BABYSTEPPING seçeneğini etkinleştireceğiz:
/** * Babystepping enables movement of the axes by tiny increments without changing * the current position values. This feature is used primarily to adjust the Z * axis in the first layer of a print in real-time. * * Warning: Does not respect endstops! */ #define BABYSTEPPING #if ENABLED(BABYSTEPPING) //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR //#define BABYSTEP_WITHOUT_HOMING #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps #define BABYSTEP_MULTIPLICATOR_Z 20 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. // Note: Extra time may be added to mitigate controller latency. //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle. #if ENABLED(MOVE_Z_WHEN_IDLE) #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. #endif #endif //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 #define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping #if ENABLED(BABYSTEP_ZPROBE_OFFSET) //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets #define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #endif #endif
VsCode ile Yazılım Derleme
Tüm ayarları yaptıktan sonra sol menüdeki Platform.io simgesine tıklıyoruz ardından Show Panel seçiyoruz.
Seçtiğimiz anakartı bu bölümde görebiliriz. Eğer herşey doğru ise Build butona tıklayarak bir süre bekliyoruz ve derleme işlemi tamamlandığında bize firmware dosyasını klasör içerisinde gösteriyor. Bu dosyayı sd kart içerisine yükleyip, yazıcımıza yeni yazılımı yüklüyoruz.
Marlin Ayarları bundan çok daha fazlası elbette. Ancak her bir kod satırını açıklamak mümkün olmadığı için, size yeterli olacak olan bölümleri anlatmaya çalıştım.
Merhabalar,
“Marlin Ayarları Kılavuzu – Kendi Yazılımınızı Oluşturun” yazısını kım hazırladığını paylaşma imkanınız var mı acaba? Proje kapsamında Marlin yazılımı kullanıyoruz ve bir konuda destek aramaktayız.
Marlin yazılım bilgili kişi bize önerebilirseniz çok memnun oluruz.
Teşekkürler ve iyi çalışmalar dileriz.
Merhabalar,
sorununuzla ilgili detay verirseniz yardımcı olmaya çalışayım.