Replies: 4 comments 15 replies
-
I forgot to mention that I'm on the commit b4ea119 That's what I meant when I said FT MOTION's LA doesn't respond to changes in K - the high cube is a test pattern where there is an alternation of fast and slow sections and the K factor changes from 0.5 at the bottom to 2 at the top in 15 steps. Unfortunately there is no visible effect of the changes, moreover - there is a constant gap where the acceleration occurs - which means the extruder does not get the command to increase the flow. The small cube is a classic LA (not FT MOTION) on the same model, although with its own coefficient values - you can see how the nature of the gaps changes with the K coefficient. Here I can calibrate to acceptable quality, with FT MOTION's LA - no :( no-K.mp4 |
Beta Was this translation helpful? Give feedback.
-
"Have you tried disabling PROUI_EX with FT Motion if that makes any difference? if so, then there may be a compatibility problem." nope, with |
Beta Was this translation helpful? Give feedback.
-
I don't think I would play around with such obscure stuff:) diff --git a/configurations/Voxelab Aquila 427/UBL/Configuration.h b/configurations/Voxelab Aquila 427/UBL/Configuration.h
index 7c1f657afa..2f960c299f 100644
--- a/configurations/Voxelab Aquila 427/UBL/Configuration.h
+++ b/configurations/Voxelab Aquila 427/UBL/Configuration.h
@@ -73,6 +73,7 @@
// @section machine
// Choose the name from boards.h that matches your setup
+#define MOTHERBOARD BOARD_CREALITY_V427 // BOARD_CREALITY_V427 BOARD_VOXELAB_AQUILA BOARD_CREALITY_V422
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_CREALITY_V427 // BOARD_CREALITY_V427 BOARD_VOXELAB_AQUILA BOARD_CREALITY_V422
#endif
@@ -572,7 +573,7 @@
* 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_0 1047
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
@@ -690,8 +691,8 @@
* PIDTEMP : PID temperature control (~4.1K)
* MPCTEMP : Predictive Model temperature control. (~1.8K without auto-tune)
*/
-#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
-//#define MPCTEMP // See https://marlinfw.org/docs/features/model_predictive_control.html
+//#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
+#define MPCTEMP // See https://marlinfw.org/docs/features/model_predictive_control.html
#define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95 // Smoothing factor within any PID loop
@@ -723,7 +724,7 @@
* Use a physical model of the hotend to control temperature. When configured correctly this gives
* better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING
* and PID_FAN_SCALING. Enable MPC_AUTOTUNE and use M306 T to autotune the model.
- * @section mpc temp
+ * @section mpctemp
*/
#if ENABLED(MPCTEMP)
#define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash)
@@ -851,16 +852,14 @@
// Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element
// and placed inside the small Creality printer enclosure tent.
//
- #define DEFAULT_chamberKp 37.04
- #define DEFAULT_chamberKi 1.40
+ #define DEFAULT_chamberKp 37.04
+ #define DEFAULT_chamberKi 1.40
#define DEFAULT_chamberKd 655.17
// M309 P37.04 I1.04 D655.17
// FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles.
#endif // PIDTEMPCHAMBER
-// @section pid temp
-
#if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER)
//#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
@@ -1261,7 +1260,8 @@
* Override with M92 (when enabled below)
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
-#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 98 }
+//#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 390.14 }
+#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 565.42 }
//#define LIMITED_MAX_STEPS_EDITING
#if ENABLED(LIMITED_MAX_STEPS_EDITING)
@@ -1278,7 +1278,7 @@
* Override with M203
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
-#define DEFAULT_MAX_FEEDRATE { 800, 800, 18, 120 }
+#define DEFAULT_MAX_FEEDRATE { 750, 750, 10, 80 }
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING)
@@ -1291,7 +1291,7 @@
* Override with M201
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
-#define DEFAULT_MAX_ACCELERATION { 800, 800, 120, 1200 }
+#define DEFAULT_MAX_ACCELERATION { 750, 750, 120, 250 }
//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
@@ -1308,9 +1308,9 @@
* M204 I Angular Acceleration
* M204 J Angular Travel Acceleration
*/
-#define DEFAULT_ACCELERATION 800 // X, Y, Z and E acceleration for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 800 // E acceleration for retracts
-#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration for travel (non printing) moves
+#define DEFAULT_ACCELERATION 750 // X, Y, Z and E acceleration for printing moves
+#define DEFAULT_RETRACT_ACCELERATION 250 // E acceleration for retracts
+#define DEFAULT_TRAVEL_ACCELERATION 750 // X, Y, Z acceleration for travel (non printing) moves
#if ENABLED(AXIS4_ROTATES)
#define DEFAULT_ANGULAR_ACCELERATION 3000 // I, J, K acceleration for rotational-only printing moves
#define DEFAULT_ANGULAR_TRAVEL_ACCELERATION 3000 // I, J, K acceleration for rotational-only travel (non printing) moves
@@ -1324,12 +1324,12 @@
* When changing speed and direction, if the difference is less than the
* value set here, it may happen instantaneously.
*/
-#define CLASSIC_JERK
+//#define CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
- #define DEFAULT_XJERK 10.0
- #define DEFAULT_YJERK 10.0
+ #define DEFAULT_XJERK 7.0
+ #define DEFAULT_YJERK 7.0
#define DEFAULT_ZJERK 0.4
- #define DEFAULT_EJERK 10.0
+ #define DEFAULT_EJERK 5.0
//#define DEFAULT_IJERK 0.3
//#define DEFAULT_JJERK 0.3
//#define DEFAULT_KJERK 0.3
@@ -1353,7 +1353,7 @@
* https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
*/
#if DISABLED(CLASSIC_JERK)
- #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
+ #define JUNCTION_DEVIATION_MM 0.04 // (mm) Distance from real junction edge
#define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle
// for small segments (< 1mm) with large junction angles (> 135°).
#endif
@@ -1366,7 +1366,7 @@
*
* See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
*/
-#define S_CURVE_ACCELERATION
+//#define S_CURVE_ACCELERATION
//===========================================================================
//============================= Z Probe Options =============================
@@ -1618,7 +1618,7 @@
* | [-] |
* O-- FRONT --+
*/
-#define NOZZLE_TO_PROBE_OFFSET { -45.0, -7.0, 0 }
+#define NOZZLE_TO_PROBE_OFFSET { -28.0, -29.0, -1.91 }
// Enable and set to use a specific tool for probing. Disable to allow any tool.
//#define PROBING_TOOL 0
@@ -1700,8 +1700,8 @@
* probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD.
* Only integer values >= 1 are valid here.
*
- * EXAMPLE: 'M851 Z-5' with a CLEARANCE of 4 => 9mm from bed to nozzle.
- * BUT: 'M851 Z+1' with a CLEARANCE of 2 => 2mm from bed to nozzle.
+ * EXAMPLE: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
+ * BUT: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/
#define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points
@@ -1803,7 +1803,7 @@
// @section extruder
// For direct drive extruder v9 set to true, for geared extruder set to false.
-#define INVERT_E0_DIR false
+#define INVERT_E0_DIR true
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
@@ -1871,7 +1871,7 @@
#define Z_MIN_POS 0
#define X_MAX_POS 230 // MRiscoC Stock physical limit
#define Y_MAX_POS 220 // MRiscoC Stock physical limit
-#define Z_MAX_POS 250 // Ender Configs
+#define Z_MAX_POS 200 // Ender Configs
//#define I_MIN_POS 0
//#define I_MAX_POS 50
//#define J_MIN_POS 0
@@ -2195,7 +2195,7 @@
//#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
#define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed
- #define GRID_MAX_POINTS_X 7 // Don't use more than 9 points per axis, implementation limited
+ #define GRID_MAX_POINTS_X 9 // Don't use more than 9 points per axis, implementation limited
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
//#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points
@@ -2453,7 +2453,7 @@
//#define PREHEAT_1_TEMP_CHAMBER 35
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
-#define PREHEAT_2_LABEL "ABS" // PETG
+#define PREHEAT_2_LABEL "PETG" // PETG
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 75
//#define PREHEAT_2_TEMP_CHAMBER 35 diff --git a/configurations/Voxelab Aquila 427/UBL/Configuration_adv.h b/configurations/Voxelab Aquila 427/UBL/Configuration_adv.h
index cedfd8ff0c..3283fc76be 100644
--- a/configurations/Voxelab Aquila 427/UBL/Configuration_adv.h
+++ b/configurations/Voxelab Aquila 427/UBL/Configuration_adv.h
@@ -1134,18 +1134,18 @@
* Enable/disable and set parameters with G-code M493.
* See ft_types.h for named values used by FTM options.
*/
-//#define FT_MOTION
+#define FT_MOTION
#if ENABLED(FT_MOTION)
//#define FTM_IS_DEFAULT_MOTION // Use FT Motion as the factory default?
#define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (DISABLED, Z_BASED, MASS_BASED)
#define FTM_DEFAULT_SHAPER_X ftMotionShaper_NONE // Default shaper mode on X axis (NONE, ZV, ZVD, ZVDD, ZVDDD, EI, 2HEI, 3HEI, MZV)
#define FTM_DEFAULT_SHAPER_Y ftMotionShaper_NONE // Default shaper mode on Y axis
- #define FTM_SHAPING_DEFAULT_FREQ_X 37.0f // (Hz) Default peak frequency used by input shapers
- #define FTM_SHAPING_DEFAULT_FREQ_Y 37.0f // (Hz) Default peak frequency used by input shapers
+ #define FTM_SHAPING_DEFAULT_FREQ_X 25.0f // (Hz) Default peak frequency used by input shapers
+ #define FTM_SHAPING_DEFAULT_FREQ_Y 30.0f // (Hz) Default peak frequency used by input shapers
#define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false)
#define FTM_LINEAR_ADV_DEFAULT_K 0.0f // Default linear advance gain. (Acceleration-based scaling factor.)
- #define FTM_SHAPING_ZETA_X 0.1f // Zeta used by input shapers for X axis
- #define FTM_SHAPING_ZETA_Y 0.1f // Zeta used by input shapers for Y axis
+ #define FTM_SHAPING_ZETA_X 0.30f // Zeta used by input shapers for X axis
+ #define FTM_SHAPING_ZETA_Y 0.25f // Zeta used by input shapers for Y axis
#define FTM_SHAPING_V_TOL_X 0.05f // Vibration tolerance used by EI input shapers for X axis
#define FTM_SHAPING_V_TOL_Y 0.05f // Vibration tolerance used by EI input shapers for Y axis
@@ -1208,17 +1208,17 @@
*
* Tune with M593 D<factor> F<frequency>
*/
-//#define INPUT_SHAPING_X
-//#define INPUT_SHAPING_Y
+#define INPUT_SHAPING_X
+#define INPUT_SHAPING_Y
//#define INPUT_SHAPING_Z
#if ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y, INPUT_SHAPING_Z)
#if ENABLED(INPUT_SHAPING_X)
- #define SHAPING_FREQ_X 40.0 // (Hz) The default dominant resonant frequency on the X axis.
- #define SHAPING_ZETA_X 0.15 // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping).
+ #define SHAPING_FREQ_X 25.0 // (Hz) The default dominant resonant frequency on the X axis.
+ #define SHAPING_ZETA_X 0.30 // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping).
#endif
#if ENABLED(INPUT_SHAPING_Y)
- #define SHAPING_FREQ_Y 40.0 // (Hz) The default dominant resonant frequency on the Y axis.
- #define SHAPING_ZETA_Y 0.15 // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping).
+ #define SHAPING_FREQ_Y 30.0 // (Hz) The default dominant resonant frequency on the Y axis.
+ #define SHAPING_ZETA_Y 0.25 // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping).
#endif
#if ENABLED(INPUT_SHAPING_Z)
#define SHAPING_FREQ_Z 40.0 // (Hz) The default dominant resonant frequency on the Z axis.
@@ -1280,7 +1280,7 @@
// Increase the slowdown divisor for larger buffer sizes.
#define SLOWDOWN
#if ENABLED(SLOWDOWN)
- #define SLOWDOWN_DIVISOR 4
+ #define SLOWDOWN_DIVISOR 16
#endif
/**
@@ -2639,11 +2639,11 @@
// The number of linear moves that can be in the planner at once.
#if ALL(HAS_MEDIA, DIRECT_STEPPING)
- #define BLOCK_BUFFER_SIZE 32
+ #define BLOCK_BUFFER_SIZE 64
#elif HAS_MEDIA
- #define BLOCK_BUFFER_SIZE 32
+ #define BLOCK_BUFFER_SIZE 64
#else
- #define BLOCK_BUFFER_SIZE 32
+ #define BLOCK_BUFFER_SIZE 64
#endif
// @section serial
@@ -2728,7 +2728,7 @@
//#define NO_TIMEOUTS 1000 // (ms)
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
-//#define ADVANCED_OK // (128 bytes of flash)
+#define ADVANCED_OK // (128 bytes of flash)
// Printrun may have trouble receiving long strings all at once.
// This option inserts short delays between lines of serial output.
@@ -2789,7 +2789,7 @@
#define MIN_AUTORETRACT 0.1 // (mm) Don't convert E moves under this length
#define MAX_AUTORETRACT 10.0 // (mm) Don't convert E moves over this length
#endif
- #define RETRACT_LENGTH 5 // (mm) Default retract length (positive value) // MRiscoC Bowden
+ #define RETRACT_LENGTH 0.2 // (mm) Default retract length (positive value) // MRiscoC Bowden
#define RETRACT_LENGTH_SWAP 13 // (mm) Default swap retract length (positive value)
#define RETRACT_FEEDRATE 40 // (mm/s) Default feedrate for retracting // MRiscoC Bowden
#define RETRACT_ZRAISE 0.2 // (mm) Default retract Z-raise // MRiscoC Bowden |
Beta Was this translation helpful? Give feedback.
-
cant see much diff that stands out, just the could it be |
Beta Was this translation helpful? Give feedback.
-
Hello,
Lyrical digression: (personal opinion, I could be wrong) to get great results when printing you need to understand what firmware mechanisms are for what and I distinguish three of them:
Other things have an impact, but some you've already set up once and for all (extruder resolution), or know from experience (PLA temp ~200C, silk pieces ~215C, PETG ~230C).
Rectraction 0.1mm for direct (assuming a non-shitty filament dryer) - I recently did an experiment and now always dry
Experiment “before drying” and “after drying”.
I disable S_CURVE because we have Input Shaping and it makes no sense to add another oscillation dampener on top of another.
Besides, the slicer knows nothing about what decisions firmware makes in terms of speed and acceleration at each particular angle, so it is worth disabling all improvement mechanisms in the slicers - this is PA in PrusaSlicer or PreloadVE in KISSlicer.
So to summarize, I am interested in trying out new methods specifically JD, LA and IS :)
And that's where FT MOTION comes in.
I expect an increase in print quality in the long run, at least due to the presence of various Input Shapers instead of one standard ZV.
However, there is no point in experimenting with new Shapers if Linear Advance is not set up - the resulting models will have over- and under-extrusion in all possible places.
It used to be (at least before MarlinFirmware/Marlin#27416 (comment)) that calibration went like this:
I give the command M493 S1 P1 K0, print the model, the result is so-so.
I give the command M493 S1 P1 K0.22 (as stated at the very bottom of https://marlinfw.org/docs/gcode/M493.html), try to print, the extruder goes crazy and clogged the nozzle. Because apparently “As reported by users, linearadvance value in FT_MOTION is a 10E-6 value.” (MarlinFirmware/Marlin#26785).
In the latest version, whatever I specify (K=0, K=0.22, K=0.9, K=1, K=2) does not differ in any way on printing. Yes, the nozzle is not clogged, but I can't calibrate it because the result is equally bad and does not depend on K - as if they just somehow write 0 there, or change the type to integer, or in the process of arithmetic always get 0.
This is just a hypothesis, there's always the possibility that it's just that the range of K is now from 100 to 999 - I haven't checked that :)
I would like to hear what value of K other users use, but I don't see many experimenters so far:)
P.S. I know about the support of Marlin users via Discord, but at a time when bank, tax and other things are tied to the phone, the number becomes a passport and the last thing I want to do is to give these data to the right and left.
Beta Was this translation helpful? Give feedback.
All reactions