Aller au contenu

Messages recommandés

Posté(e)

attend attend avant de toucher tes macros 🙂

Y a pas de raison que celles de V3DP soient différentes des tiennes. Prend pas le risque de modifier le code de ta machine avant d'être sur de savoir ce que tu fais 🙂

Est ce que tu peux partager le code des 2 macros que t'as indiqué @V3DP

 

Posté(e)

Oui pas de probleme !

Je vous partage ca dans une demi heure environ, mon impression est bientot terminé ^^

Posté(e)
il y a 2 minutes, Epsilon a dit :

Ton code poster c'est celui qui permet de bloquer les moteur c'est ca?

Par défaut lors de l'impression, les moteurs sont 'bloqués', c'est à dire pas désengagés. Il faut une commande M84 pour les désengager.

Les macros que je t'ai données ne vont pas désengager les moteurs. Elles vont par contre :

  • mettre en température à 250°C la hotend si elle n'est pas chauffée à plus de 180°C, sinon garder la température existante
  • charger / décharger le filament
  • baisser le plateau de 50 mm pour charger le filament
  • remettre la température de la hotend à 0 si elle n'est pas chauffée à plus de 180°C, sinon garder la température existante.

il faut vérifier tes macros PAUSE et RESUME pour voir si il n'y a pas une commande M84 qui traine.

Si dans tes fichiers de macros tu as plusieurs fois la même macro, il faudra vérifier l'ordre des include dans ton fichier printer.cfg. C'est la dernière inclusion qui compte

à l’instant, Epsilon a dit :

Oui pas de probleme !

Je vous partage ca dans une demi heure environ, mon impression est bientot terminé ^^

Tu peux visualiser les macros pendant une impression, il faut juste ne pas redémarrer la machine. C'est ce que j'ai fait pour te donner le contenu d'une de mes X Max 3

il y a 3 minutes, JoOj a dit :

Y a pas de raison que celles de V3DP soient différentes des tiennes.

Elles ont été retravaillées par rapport à celles de Qidi. Mes machines ont été libérées et sont en dernière version Klipper.

Posté(e)
il y a 3 minutes, V3DP a dit :

Elles ont été retravaillées par rapport à celles de Qidi. Mes machines ont été libérées et sont en dernière version Klipper.

raison de plus pour ne pas aller écraser ses macros avec les tiennes ^^

  • J'aime 1
Posté(e)

Voici ce que j'ai trouvé dans mon fichier de configuration "printer.cfg" que j'ai pu trouver via fluidd onglet configuration

image.thumb.png.bdf48c4df52988cb49b496945bc146c2.png

[gcode_macro M603]
description: filament unload
gcode:
    G92 E0
    G0  E15 F400
    G4  P1000
    G92 E0
    G1  E-80 F800

[gcode_macro M604]
description: filament load
gcode:
    M83
    G1  E80 F400

 

  • J'aime 1
Posté(e) (modifié)

@Epsilon Et la macro PAUSE ?

il y a 41 minutes, JoOj a dit :

raison de plus pour ne pas aller écraser ses macros avec les tiennes ^^

Sur ces macros là, pas de spécificités liées à la libération, par contre sur mes macros PAUSE / RESUME c'est pas la même chose.

Après chacun fait comme il veut.

Moi j'ai retravaillées certaines macros car mon business c'est l'impression 3D et mes 3  X Max 3 doivent produire de manière optimisée.

De fait mes macros PAUSE / RESUME gèrent l'extinction / allumage des ventilos et de la hotend pour permettre d'attendre tranquillement qu'on intervienne sur la machine, même après une nuit en pause et mes macros LOAD / UNLOAD FILAMENT intègrent la chauffe de la hotend si nécessaire et une température qui évite les nettoyages pour les matériaux les plus courants.

Modifié (le) par V3DP
Posté(e) (modifié)
il y a 32 minutes, V3DP a dit :

@Epsilon Et la macro PAUSE ?

[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
    # Parameters
    {% set z = params.Z|default(50)|int %}                                                   ; z hop amount
    
    {% if printer['pause_resume'].is_paused|int == 0 %}     
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z}                              ; set z hop variable for reference in resume macro
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target}    ; set hotend temp variable for reference in resume macro
                                
#       SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0                                             ; disable filament sensor       
        SAVE_GCODE_STATE NAME=PAUSE                                                          ; save current print position for resume                
        BASE_PAUSE                                                                           ; pause print
        {% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %}       ; check that zhop doesn't exceed z max
            G91                                                                              ; relative positioning
            G1 Z{z} F600                                                                     ; raise Z up by z hop amount
        {% else %}
#            { action_respond_info("Pause zhop exceeds maximum Z height.") }                  ; if z max is exceeded, show message and set zhop value for resume to 0
            SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
        {% endif %}
        SAVE_GCODE_STATE NAME=PAUSEPARK2
        G90                                                                                  ; absolute positioning
        G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y} F6000   ; park toolhead at front center
        SAVE_GCODE_STATE NAME=PAUSEPARK                                                      ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error) 
        M104 S0                                                                              ; turn off hotend
        SET_IDLE_TIMEOUT TIMEOUT=86400                                                      ; set timeout to 12 hours

        SET_STEPPER_ENABLE STEPPER=extruder enable=0
    {% endif %}


[gcode_macro RESUME]
rename_existing: BASE_RESUME
variable_zhop: 0
variable_etemp: 0
gcode:
    # Parameters
    {% set e = params.E|default(2.5)|int %}                                          ; hotend prime amount (in mm)
    
    {% if printer['pause_resume'].is_paused|int == 1 %}
#        SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1                          ; enable filament sensor
        #INITIAL_RGB                                                                    ; reset LCD color
        SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}  ; set timeout back to configured value
        {% if etemp > 0 %}
            M109 S{etemp|int}                                                        ; wait for hotend to heat back up
        {% endif %}
        RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=150                     ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error)  
        G91                                                                          ; relative positioning
        M83                                                                          ; relative extruder positioning
        {% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %}                                                
            G1  E{e} F900                                                ; prime nozzle by E, lower Z back down
#        {% else %}                      
#            G1 Z{zhop * -1} F900                                                     ; lower Z back down without priming (just in case we are testing the macro with cold hotend)
        {% endif %}  
        RESTORE_GCODE_STATE NAME=PAUSEPARK2 MOVE=1 MOVE_SPEED=150                           
        RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=10                          ; restore position
        BASE_RESUME                                                                  ; resume print
    {% endif %}

[pause_resume]

          
[gcode_macro M0]
gcode:
    PAUSE

[gcode_macro M25]
rename_existing: M9925
gcode:
    PAUSE

 

Modifié (le) par Epsilon
Posté(e)

@Epsilon Merci pour les codes. Dans les macros fournies, il n'y a pas d'instructions qui vont 'désengager' les moteurs.

Est-ce que les valeurs de courant de maintien des moteurs sont bonnes ? Ca pourrait expliquer pourquoi tu arrives à bouger à la main la tête durant une pause.

Est-ce que tu utilises TMC Autotune ?

Tout est dans ton printer.cfg. Si tu le partages, on pourra voir si il n'y a pas un problème de configuration.

 

 

Posté(e)

Alors ^^

Comment vérifier les valeurs de courant de maintien des moteurs? Je t'avouerai que la tu me perd un peu xD

je n'utilise pas TMC Autotune (c'est quoi? ^^)Voici mon printer.cfg entier:

Révélation


#MAX3
#V4.3.15
# This file contains common pin mappings for MKS SKIPR
# boards. To use this config, the firmware should be compiled for the
# stm32f407. When running "make menuconfig", select the 48KiB
# bootloader, and enable "Serial for communication" and select the "on USART1 PA10/PA9"

# The "make flash" command does not work on the MKS SKIPR. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "mks_skipr.bin" on an SD card and then restart the
# MKS SKIPR with that SD card.
# This file contains common pin mappings for MKS SKIPR
# boards. To use this config, the firmware should be compiled for the
# stm32f407. When running "make menuconfig", select the 48KiB
# bootloader, and enable "Serial for communication" and select the "on USART1 PA10/PA9"

# The "make flash" command does not work on the MKS SKIPR. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "mks_skipr.bin" on an SD card and then restart the
# MKS SKIPR with that SD card.

# See docs/Config_Reference.md for a description of parameters.
[include MKS_THR.cfg]
[include Adaptive_Mesh.cfg]
[mcu]
# The hardware use USART1 PA10/PA9 connect to RK3328
#serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_4D0045001850314335393520-if00
serial: /dev/ttyS0
restart_method: command


#[mcu MKS_THR]
#serial:/dev/serial/by-id/usb-Klipper_rp2040_D5CE4D9543D14858-if00

#canbus_uuid: 11aa22bb33cc
#####################################################################
#   冷却风扇
#####################################################################




[extruder]
step_pin: MKS_THR:gpio5
dir_pin: MKS_THR:gpio4
enable_pin: !MKS_THR:gpio10
rotation_distance: 53.5  #22.6789511	#Bondtech 5mm Drive Gears
gear_ratio: 1628:170				
microsteps: 16
full_steps_per_rotation: 200	#200 for 1.8 degree, 400 for 0.9 degree
nozzle_diameter: 0.400
filament_diameter: 1.75
min_temp: 0
max_temp: 360
min_extrude_temp: 170
smooth_time: 0.000001


heater_pin: MKS_THR:gpio0
sensor_type:MAX6675
#   One of "MAX6675", "MAX31855", "MAX31856", or "MAX31865".
#   One of "MAX6675", "MAX31855", "MAX31856", or "MAX31865".
sensor_pin:MKS_THR:gpio17
#   The chip select line for the sensor chip. This parameter must be
#   provided.
spi_speed: 100000
#   The SPI speed (in hz) to use when communicating with the chip.
#   The default is 4000000.
#spi_bus:spi1
spi_software_sclk_pin:MKS_THR:gpio18
spi_software_mosi_pin:MKS_THR:gpio19
spi_software_miso_pin:MKS_THR:gpio16
#   See the "common SPI settings" section for a description of the
#   above parameters.
#tc_type: K
#tc_use_50Hz_filter: False
#c_averaging_count: 1
#   The above parameters control the sensor parameters of MAX31856
#   chips. The defaults for each parameter are next to the parameter
#   name in the above list.
max_power: 1.0
control : pid  
pid_Kp=14.734
pid_Ki=6.549 
pid_Kd=8.288

pressure_advance: 0.032
pressure_advance_smooth_time: 0.03
max_extrude_cross_section:500
instantaneous_corner_velocity: 10.000
max_extrude_only_distance: 120.0
max_extrude_only_velocity:5000
max_extrude_only_accel:2000
step_pulse_duration:0.000002


[tmc2209 extruder]
uart_pin: MKS_THR:gpio6
interpolate: True
run_current: 0.714
#hold_current: 0.5
#sense_resistor: 0.110
stealthchop_threshold: 0


[adxl345]
cs_pin: MKS_THR:gpio13
spi_software_sclk_pin: MKS_THR:gpio14
spi_software_mosi_pin: MKS_THR:gpio15
spi_software_miso_pin: MKS_THR:gpio12
axes_map: -x, z, -y



[printer]
kinematics:corexy
max_velocity: 600
max_accel: 20000
max_accel_to_decel: 10000
max_z_velocity: 20
max_z_accel: 500
square_corner_velocity: 8

##移动配置============================================================================================================

[force_move]
enable_force_move : True

[gcode_macro M84]
rename_existing:M84.1
gcode:
	SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
	SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
	SET_STEPPER_ENABLE STEPPER=stepper_z enable=0
	SET_STEPPER_ENABLE STEPPER=extruder enable=0
	SET_KINEMATIC_POSITION
	
[delayed_gcode KINEMATIC_POSITION]
initial_duration:0.2
gcode:
    SET_KINEMATIC_POSITION X=150
    SET_KINEMATIC_POSITION Y=150
	SET_KINEMATIC_POSITION Z=150
    SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0



[stepper_x]
step_pin:PB4
dir_pin:PB3
enable_pin:!PB5
microsteps:16
rotation_distance: 39.94
full_steps_per_rotation:200  #set to 400 for 0.9 degree stepper
endstop_pin:tmc2209_stepper_x:virtual_endstop
position_min: -7
position_endstop:-7
position_max:325
homing_speed:40
homing_retract_dist:0
homing_positive_dir:False
step_pulse_duration:0.000002

[stepper_y]
step_pin:PC14
dir_pin:PC13
enable_pin:!PC15
microsteps: 16
rotation_distance: 39.94
full_steps_per_rotation:200  #set to 400 for 0.9 degree stepper
endstop_pin:tmc2209_stepper_y:virtual_endstop
position_min: -9.5
position_endstop: -9.5
position_max: 325
homing_speed:40
homing_retract_dist:0
homing_positive_dir:False
step_pulse_duration:0.000002



[stepper_z]
step_pin:PC10
dir_pin:PA15
enable_pin: !PC11
microsteps: 16
rotation_distance: 8
full_steps_per_rotation: 200
endstop_pin:probe:z_virtual_endstop#!PC3 #for Z-max; endstop have'!' is NO
#position_endstop:326
position_max:325
position_min: -6
homing_speed: 8
homing_retract_dist: 8.0
second_homing_speed: 8
homing_positive_dir:false
step_pulse_duration:0.000002

[tmc2209 stepper_x]
uart_pin: PD2
run_current:1.07
#hold_current: 0.5
interpolate: True
stealthchop_threshold: 0
diag_pin:^PB8
driver_SGTHRS: 85
#driver_SGTHRS: 130
[tmc2209 stepper_y]
uart_pin: PB9
run_current: 1.07
#hold_current: 0.5
interpolate: True
stealthchop_threshold: 0
diag_pin:^PC0
driver_SGTHRS: 85
#driver_SGTHRS: 145

#[tmc2240 stepper_y]
#cs_pin:PB9
#spi_software_sclk_pin:PA5
#spi_software_mosi_pin:PA7
#spi_software_miso_pin:PA6
#spi_speed:200000
#run_current: 1.07
#hold_current: 0.5
#sense_resistor: 0.110
#interpolate:true
#stealthchop_threshold:1
#diag0_pin:!PC0
#driver_SGT:1

#[tmc2240 stepper_x]
#cs_pin:PD2
#spi_software_sclk_pin:PA5
#spi_software_mosi_pin:PA7
#spi_software_miso_pin:PA6
#spi_speed:200000
#run_current: 1.07
#hold_current: 0.5
#sense_resistor: 0.110
#interpolate:true
#stealthchop_threshold:1
#diag0_pin:!PB8
#driver_SGT:1

[tmc2209 stepper_z]
uart_pin: PC5
run_current: 0.95
#hold_current: 0.6
interpolate: True
stealthchop_threshold: 1200

##归零流程修改
[homing_override]
set_position_X:0
set_position_y:0
set_position_z:0
axes:xy
gcode: 
    {% set HOME_CUR = 1 %}
    {% set driver_config = printer.configfile.settings['tmc2209 stepper_x'] %}
    {% set RUN_CUR = driver_config.run_current %}
    {% set HOLD_CUR = driver_config.hold_current %}

	{% if params.X is defined %}
	    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8} 
        G28 X
		SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}     
        BEEP I=1 DUR=100       
        G1 X10 F1200
    {% endif %}

    {% if params.Y is defined %}
		SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9} 
		G28 Y
		SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}   
        BEEP I=1 DUR=100          
       G1 Y10 F1200
    {% endif %}

    {% if params.Z is defined %}
#        G90
#        G1 X{printer.toolhead.axis_maximum.x/2 - printer.probe["x_offset"]} Y{printer.toolhead.axis_maximum.y/2 - printer.probe["y_offset"]} F7800
#        G91

        G28 Z
        G1 Z20 F480      
        BEEP I=1 DUR=100	  
    {% endif %}

    {% if params.X is undefined %}
    {% if params.Y is undefined %}
    {% if params.Z is undefined %}
    

    G91
#    G1 Z5 F600	
    G1 X10 F2400
    G1 Y10 F2400
    G4 P2000
    
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8} 
    G28 X
	SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR} 
    BEEP I=1 DUR=100  
    G1 X10 F1200
    
	SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9} 
	G28 Y
	SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR} 
    BEEP I=1 DUR=100        
    
    G90
    G1 X{printer.toolhead.axis_maximum.x/2 - printer.probe["x_offset"]} Y{printer.toolhead.axis_maximum.y/2 - printer.probe["y_offset"]} F7800
    G91

    G28 Z
    BEEP I=1 DUR=100  
    G1 Z50  F480
    {% endif %}
    {% endif %}
    {% endif %}
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CUR} 
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CUR} 
    M204 S10000

    G90
#    G1 X0 Y0 F7800

##热床热腔==================================================================================================================

[heater_bed]
heater_pin:PC8
sensor_type: NTC 100K MGB18-104F39050L32
sensor_pin: PA0
max_power: 1.0
control = pid
pid_kp = 71.039
pid_ki = 2.223
pid_kd = 567.421
min_temp: -100
max_temp: 125

[heater_generic hot]
#gcode_id:
#   使用M105查询温度时使用的ID。
#   必须提供此参数。
heater_pin:PB10
max_power:1.0
sensor_type:NTC 100K MGB18-104F39050L32
sensor_pin:PA1


control = watermark
max_delta: 1.0
#pid_Kp=63.418 
#pid_Ki=1.342 
#pid_Kd=749.125

min_temp:-100
max_temp:70

[verify_heater hot]
max_error: 300
check_gain_time:480
hysteresis: 5
heating_gain: 1



[verify_heater extruder]
max_error: 120
check_gain_time:20
hysteresis: 5
heating_gain: 1

[verify_heater heater_bed]
max_error: 200
check_gain_time:60
hysteresis: 5
heating_gain: 1


##一些引脚定义======================================

##主板上大涡轮风扇
[output_pin fan2]
pin: PA8
pwm: True
cycle_time: 0.0100
hardware_pwm: false
value: 0.00
scale: 255
shutdown_value: 0.0

##喷头喉管风扇 50度自启动
#[heater_fan my_nozzle_fan1]
#pin:PC9
#max_power:1
#shutdown_speed:1
#cycle_time:0.05
#kick_start_time:0.05
#off_below:0
#heater:extruder
#heater_temp:50.0

##活性炭吹风扇
[output_pin fan3]
pin:PC9
pwm: True
cycle_time: 0.0100
hardware_pwm: false
value: 0.0
scale: 255
shutdown_value: 0.0


## FAN0  喉管风扇
[heater_fan hotend_fan]
pin:MKS_THR:gpio1
max_power: 1.0
kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
fan_speed: 1.0
off_below: 0

[heater_fan hotend_fan2]
pin:MKS_THR:gpio20
max_power: 1.0
kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
fan_speed: 1.0
off_below: 0

[heater_fan borad_fan]
pin:PC4
max_power: 1.0
kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
fan_speed: 1.0
off_below: 0


## FAN0  吹模型风扇
[output_pin fan0]
pin: MKS_THR:gpio2
pwm: True
cycle_time: 0.0100
hardware_pwm: false
value: 0
scale: 255
shutdown_value: 0.0



##LED 灯
[output_pin caselight]
##  Chamber Lighting - In 5V-RGB Position
pin: PC7
pwm: false
shutdown_value:0
value:1
#cycle_time:0.01

[output_pin beeper]
##  Chamber Lighting - In 5V-RGB Position
pin: PA2
pwm: false
shutdown_value:0
value:0


[output_pin pwc]
pin: PA3
pwm: False
value: 1
shutdown_value: 1



##宏定义================================================================

[filament_switch_sensor fila]
pause_on_runout: True
runout_gcode:
            PAUSE
            SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
event_delay: 3.0
pause_delay: 0.5
switch_pin: !PC1

[bed_mesh]
speed:150               #调平速度
horizontal_move_z:10   #调平中Z抬高高度
mesh_min:25,10        #探测点最小位置
mesh_max:315,315      #探测点最大位置
probe_count:9,9      #调平点数
algorithm:bicubic
bicubic_tension:0.2
mesh_pps: 4, 4

#[bltouch]
#sensor_pin:^MKS_THR:gpio21
#control_pin:MKS_THR:gpio11
#stow_on_each_sample: False
[probe]
pin: ^!MKS_THR:gpio21
x_offset: 28
y_offset: 4.4
z_offset: 0.0
speed: 5
samples: 2
samples_result: average
sample_retract_dist: 3.0
samples_tolerance: 0.08
samples_tolerance_retries:3

#[gcode_macro G30]
#    G28
#    G1 X100 Y130 Z10
#    PROBE_CALIBRATE


[resonance_tester]
accel_chip:adxl345
probe_points:
    160, 160, 10  # an example

[gcode_macro SHAPER_CALIBRATE]
rename_existing: RESHAPER_CALIBRATE
gcode:
    RESHAPER_CALIBRATE FREQ_START=30 FREQ_END=150


[gcode_macro HOT_CALIBRATE_START]
variable_k: 0
gcode:
    {% if k == 0 %}
        {% if printer['heater_generic hot'].temperature > 49 %}
            SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_END VARIABLE=hot_set VALUE=1
            SET_GCODE_OFFSET Z_ADJUST=-0.10 MOVE=0
            SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_START VARIABLE=k VALUE=1
        {% endif %}
    {% endif %}

[gcode_macro HOT_CALIBRATE_END]
variable_hot_set: 0
gcode:
    {% if  hot_set == 1 %}
        SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_END VARIABLE=hot_set VALUE=0
        SET_GCODE_OFFSET Z_ADJUST=+0.10 MOVE=0
        SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_START VARIABLE=k VALUE=0
    {% endif %}

[gcode_macro PRINT_START]
gcode:
    #HOT_CALIBRATE_START

[gcode_macro PRINT_START_QD]
gcode:
    #HOT_CALIBRATE_START

[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
    {% if (printer.gcode_move.position.z) < 200 %}       ; check that zhop doesn't exceed z max
        G1 Z200 F600                                         
    {% endif %}

    G1  X0 Y0 F12000

    SDCARD_RESET_FILE
    PRINT_END
    BASE_CANCEL_PRINT

[gcode_macro PRINT_END]
gcode:
    M106 P2 S0
    M106 P0 S0
    M106 P3 S0  #关闭活性炭风扇
    
    M104 S0
    M140 S0
    M141 S0

    M220 S100
    M221 S100

    SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
    CLEAR_PAUSE
    SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0

    M84
#    SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
#	SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
#	SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
#	SET_STEPPER_ENABLE STEPPER=extruder enable=0

    BED_MESH_CLEAR      #恢复调平数据
    BED_MESH_PROFILE LOAD=default
    G31
    BEEP I=2 DUR=500



    
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
    # Parameters
    {% set z = params.Z|default(50)|int %}                                                   ; z hop amount
    
    {% if printer['pause_resume'].is_paused|int == 0 %}     
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z}                              ; set z hop variable for reference in resume macro
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target}    ; set hotend temp variable for reference in resume macro
                                
#       SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0                                             ; disable filament sensor       
        SAVE_GCODE_STATE NAME=PAUSE                                                          ; save current print position for resume                
        BASE_PAUSE                                                                           ; pause print
        {% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %}       ; check that zhop doesn't exceed z max
            G91                                                                              ; relative positioning
            G1 Z{z} F600                                                                     ; raise Z up by z hop amount
        {% else %}
#            { action_respond_info("Pause zhop exceeds maximum Z height.") }                  ; if z max is exceeded, show message and set zhop value for resume to 0
            SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
        {% endif %}
        SAVE_GCODE_STATE NAME=PAUSEPARK2
        G90                                                                                  ; absolute positioning
        G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y} F6000   ; park toolhead at front center
        SAVE_GCODE_STATE NAME=PAUSEPARK                                                      ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error) 
        M104 S0                                                                              ; turn off hotend
        SET_IDLE_TIMEOUT TIMEOUT=86400                                                      ; set timeout to 12 hours

        SET_STEPPER_ENABLE STEPPER=extruder enable=0
    {% endif %}


[gcode_macro RESUME]
rename_existing: BASE_RESUME
variable_zhop: 0
variable_etemp: 0
gcode:
    # Parameters
    {% set e = params.E|default(2.5)|int %}                                          ; hotend prime amount (in mm)
    
    {% if printer['pause_resume'].is_paused|int == 1 %}
#        SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1                          ; enable filament sensor
        #INITIAL_RGB                                                                    ; reset LCD color
        SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}  ; set timeout back to configured value
        {% if etemp > 0 %}
            M109 S{etemp|int}                                                        ; wait for hotend to heat back up
        {% endif %}
        RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=150                     ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error)  
        G91                                                                          ; relative positioning
        M83                                                                          ; relative extruder positioning
        {% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %}                                                
            G1  E{e} F900                                                ; prime nozzle by E, lower Z back down
#        {% else %}                      
#            G1 Z{zhop * -1} F900                                                     ; lower Z back down without priming (just in case we are testing the macro with cold hotend)
        {% endif %}  
        RESTORE_GCODE_STATE NAME=PAUSEPARK2 MOVE=1 MOVE_SPEED=150                           
        RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=10                          ; restore position
        BASE_RESUME                                                                  ; resume print
    {% endif %}

[pause_resume]


[display_status]




[gcode_macro BEEP]
gcode:
    # Parameters
    {% set i = params.I|default(1)|int %}        ; Iterations (number of times to beep).
    {% set dur = params.DUR|default(100)|int %}  ; Duration/wait of each beep in ms. Default 100ms.

    {% if printer["output_pin sound"].value|int == 1 %}
        {% for iteration in range(i|int) %}
            SET_PIN PIN=beeper VALUE=1
            G4 P{dur}
            SET_PIN PIN=beeper VALUE=0
    		G4 P{dur}
        {% endfor %}
    {% endif %}




#[gcode_macro _CG28]
#gcode:
#    {% if "xyz" not in printer.toolhead.homed_axes %}
#        G28
#    {% endif %}




[gcode_macro G30]
gcode:
    BED_MESH_CLEAR      #清除调平数据
#    G28 
    BED_MESH_CALIBRATE mesh_min=10,10  mesh_max=310,310  METHOD=manual #手动动调平


[gcode_macro M141]
gcode:
    {% set s = params.S|float %}
    SET_HEATER_TEMPERATURE HEATER=hot TARGET={([s, 65]|min)}

[gcode_macro M191]
gcode:
    #Parameters
    {% set s = params.S|float %}
    
    M141 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}  
    {% if s != 0 %}
        TEMPERATURE_WAIT SENSOR="heater_generic hot" MINIMUM={([s, 65]|min)} #MAXIMUM={s+1}   
    {% endif %}
 
    
[gcode_macro M106]
gcode:
    {% if params.P is defined %}
      {% if params.S is defined %}
        SET_PIN PIN=fan{params.P|int} VALUE={params.S|int}
      {% else %}
        SET_PIN PIN=fan{params.P|int} VALUE=255
      {% endif %}
    {% endif %} 

    {% if params.T is defined %}
        {% if (params.T|int)==-2 %}
          {% if params.S is defined %}       
            SET_PIN PIN=fan3 VALUE={params.S|int}
          {% else %}
            SET_PIN PIN=fan3 VALUE=255
          {% endif %}
        {% endif %}
    {% endif %}

    {% if params.P is undefined %}
    {% if params.T is undefined %}
    {% if params.S is defined %}
            SET_PIN PIN=fan0 VALUE={params.S|int}
       {% else %}
            SET_PIN PIN=fan0 VALUE=255       
    {% endif %}
    {% endif %}
    {% endif %}



[gcode_macro M107]
gcode:  
    SET_PIN PIN=fan0 VALUE=0 
#    SET_PIN PIN=fan1 VALUE=0
#    SET_PIN PIN=fan2 VALUE=0 

[gcode_macro M303]
gcode:
    {% if params.E is defined %}
     {% if params.S is defined %}
        {% if (params.E|int)==-1 %} 
         PID_CALIBRATE HEATER=heater_bed TARGET={params.S|int}
        {% endif %}
        {% if (params.E|int)==0 %}
         PID_CALIBRATE HEATER=extruder TARGET={params.S|int}
        {% endif %}
     {% endif %}
  {% endif %}


[gcode_macro M8029]
gcode:
     {% if params.D is defined %}
       {% if (params.D|int)==1 %} 
        SET_FILAMENT_SENSOR SENSOR=fila  ENABLE=1
       {% endif %}
       {% if (params.D|int)==0 %} 
        SET_FILAMENT_SENSOR SENSOR=fila  ENABLE=0
       {% endif %}
     {% endif %}

     
[gcode_macro M900]
gcode:
    {% if params.K is defined %} 
          SET_PRESSURE_ADVANCE ADVANCE={params.K}
    {% endif %}  
    {% if params.T is defined %}    
       SET_PRESSURE_ADVANCE SMOOTH_TIME={params.T}
    {% endif %} 


[gcode_macro M290]
gcode:
   SET_GCODE_OFFSET Z_ADJUST={params.Z}

[gcode_macro M901]
gcode:
#    M104 S140
    G28
    SHAPER_CALIBRATE
    SAVE_CONFIG



       
[gcode_macro M0]
gcode:
    PAUSE

[gcode_macro M25]
rename_existing: M9925
gcode:
    PAUSE


    
[output_pin sound]
pin: PA13
value:0


[gcode_macro beep_on]
gcode:
    SET_PIN PIN=sound VALUE=1
    
[gcode_macro beep_off]
gcode:
    SET_PIN PIN=sound VALUE=0


[gcode_arcs]
resolution: 1.0

[gcode_macro M109]
rename_existing: M99109
gcode:
    #Parameters
    {% set s = params.S|float %}
    
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}  ; Set hotend temp
    {% if s != 0 %}
        TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}   ; Wait for hotend temp (within 1 degree)
    {% endif %}
    

[gcode_macro M4029]
gcode:
    BED_MESH_CLEAR
    G91 
    G1 Z10 F600
    G90
    G28
    G1 X{printer.toolhead.axis_maximum.x/2 - printer.probe["x_offset"]} Y{printer.toolhead.axis_maximum.y/2 - printer.probe["y_offset"]} F7800
    G1 Z15 F600
    ABORT
    PROBE_CALIBRATE
    ABORT
    G0 Z0


[gcode_macro M603]
description: filament unload
gcode:
    G92 E0
    G0  E15 F400
    G4  P1000
    G92 E0
    G1  E-80 F800

[gcode_macro M604]
description: filament load
gcode:
    M83
    G1  E80 F400

#####################################新增KAMP调平
[exclude_object]

[gcode_macro G31]
gcode:
    SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=1

[gcode_macro G32]
gcode:
    SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=0


[gcode_macro G29]
variable_k:1
gcode:

    {% if k|int==1 %}
        BED_MESH_CLEAR      #清除调平数据
#    G28   
        BED_MESH_CALIBRATE PROFILE=kamp  #自动调平
    {% endif %}


[gcode_macro M204]
rename_existing: M99204
gcode:
    {% if params.S is defined %}
        {% set s = params.S|float %}
    {% endif %}
    {% if params.P is defined %}
    {% if params.T is defined %}
        {% set s = [params.P|float ,params.T|float] | min %}
    {% endif %}
    {% endif %}

    SET_VELOCITY_LIMIT ACCEL={s}
    SET_VELOCITY_LIMIT ACCEL_TO_DECEL={s/2}


[idle_timeout]
timeout: 86400





#[x_twist_compensation]
#speed: 150
#   The speed (in mm/s) of non-probing moves during the calibration.
#   The default is 50.
#horizontal_move_z: 10
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.
#start_x: 15
#   Defines the minimum X coordinate of the calibration
#   This should be the X coordinate that positions the nozzle at the starting
#   calibration position. This parameter must be provided.
#end_x: 260
#   Defines the maximum X coordinate of the calibration
#   This should be the X coordinate that positions the nozzle at the ending
#   calibration position. This parameter must be provided.
#y: 140
#   Defines the Y coordinate of the calibration
#   This should be the Y coordinate that positions the nozzle during the
#   calibration process. This parameter must be provided and is recommended to
#   be near the center of the bed

[gcode_macro M1029]
gcode:
#    X_TWIST_PROFILE_LOAD NAME=default
#    X_TWIST_COMPENSATE_MESH MESH_NAME=default COMPENSATION_NAME=default
#    SAVE_CONFIG

[virtual_sdcard]
#path:/home/mks/uploads
path: ~/gcode_files

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	0.031250, -0.001250, -0.018750, -0.033750, -0.055000, -0.070000, -0.088750, -0.112500, -0.140000
#*# 	0.042500, 0.002500, -0.028750, -0.035000, -0.056250, -0.062500, -0.081250, -0.107500, -0.132500
#*# 	0.066250, 0.037500, 0.003750, -0.002500, -0.018750, -0.018750, 0.010000, -0.080000, -0.097500
#*# 	0.085000, 0.047500, 0.017500, 0.007500, 0.005000, -0.015000, -0.037500, -0.070000, -0.082500
#*# 	0.097500, 0.065000, 0.042500, 0.050000, 0.047500, 0.027500, 0.013750, -0.012500, 0.000000
#*# 	0.067500, 0.043750, 0.030000, 0.040000, 0.026250, 0.027500, 0.023750, -0.002500, 0.007500
#*# 	0.055000, 0.043750, 0.032500, 0.043750, 0.032500, 0.048750, 0.042500, 0.018750, 0.067500
#*# 	0.078750, 0.062500, 0.053750, 0.062500, 0.055000, 0.063750, 0.066250, 0.071250, 0.167500
#*# 	0.095000, 0.080000, 0.071250, 0.068750, 0.071250, 0.073750, 0.073750, 0.081250, 0.145000
#*# tension = 0.2
#*# min_x = 25.0
#*# algo = bicubic
#*# y_count = 9
#*# mesh_y_pps = 4
#*# min_y = 10.0
#*# x_count = 9
#*# max_y = 314.96
#*# mesh_x_pps = 4
#*# max_x = 315.0
#*#
#*# [input_shaper]
#*# shaper_type_x = mzv
#*# shaper_freq_x = 52.4
#*# shaper_type_y = mzv
#*# shaper_freq_y = 44.0
#*#
#*# [bed_mesh kamp]
#*# version = 1
#*# points =
#*# 	  0.071250, 0.041250, 0.045000, 0.043750, 0.061250, 0.046250, 0.036250
#*# 	  0.211250, 0.195000, 0.191250, 0.171250, 0.156250, 0.117500, 0.078750
#*# 	  0.192500, 0.182500, 0.180000, 0.171250, 0.160000, 0.132500, 0.100000
#*# 	  0.148750, 0.138750, 0.147500, 0.146250, 0.147500, 0.135000, 0.122500
#*# 	  0.157500, 0.145000, 0.143750, 0.137500, 0.142500, 0.132500, 0.126250
#*# 	  0.158750, 0.148750, 0.153750, 0.143750, 0.152500, 0.148750, 0.138750
#*# 	  0.140000, 0.132500, 0.141250, 0.138750, 0.150000, 0.148750, 0.145000
#*# tension = 0.2
#*# min_x = 62.5
#*# algo = bicubic
#*# y_count = 7
#*# mesh_y_pps = 4
#*# min_y = 62.5
#*# x_count = 7
#*# max_y = 262.48
#*# mesh_x_pps = 4
#*# max_x = 262.48

 

Encore merci pour ton temps et desolé je suis encore débutant 🙂

Posté(e)

@Epsilon Pas de soucis, il faut bien commencer un jour. 

TMC Autotune est un plugin de Klipper qui permet de régler automatiquement les paramètres de gestion des moteurs au niveau des drivers TMC (les contrôleurs des moteurs).

Le courant de maintien est la valeur du courant qui reste dans le moteur à l'arrêt pour permettre de maintenir la position. Il peut être défini ou pas. 

Dans le cas de ta X Max 3, qui est avec les fichiers d'origine, mais aussi pour les miennes qui sont 'libérées', on ne spécifie pas la valeur du courant de maintien, la valeur du courant est toujours la même que lors des mouvements. C'est pour éviter de micro déplacements lorsque l'on change la valeur du courant à l'arrêt.

J'ai regardé ton fichier printer.cfg, c'est strictement un fichier d'origine. Donc tu ne devrais pas avoir de soucis avec la tête qui bouge lors des pauses, car rien ne coupe le courant sur les moteurs X, Y et Z durant toute l'impression, même pendant les pauses.

Tu peux avoir un souci matériel, ou plus simplement avoir appuyé sur un bouton qui coupe le courant sur les moteurs.

Je n'ai plus l'écran d'origine sur mes machines, donc je ne peux pas confirmer sa position sur l'écran ni si il est bien présent sur la configuration d'origine. Il faudrait qu'un membre qui a une X Max 3 regarde.

 

Posté(e) (modifié)

Merci pour cette réponse détaillée 

Je regarderai avec le plugin en question pour voir mais non je n’ai appuyé sur aucun bouton pour désengagé les moteurs.

Concernant les lignes sur mon print de citrouille, est-il possible qu'une buse usée puisse me faire ces lignes?

J'en profite pour vous demander a quelle fréquence vous remplacez vos buses?

Aussi avez vous des lubrifiants a me conseiller pour lubrifier les axes x et y ainsi que les courroies? Puis je utiliser la même pour les deux?

Modifié (le) par Epsilon
Posté(e)
il y a 12 minutes, Epsilon a dit :

Concernant les lignes sur mon print de citrouille, est-il possible qu'une buse usée puisse me faire ces lignes?

Un pla Silk à une brillance qui varie (plus que les autres) avec les conditions d'impression. Il faudrait t'assurer que les périmètres s'impriment à vitesse et ventilation constante, pour voir si ça joue sur le rendu. 

  • +1 1
Posté(e) (modifié)
il y a 19 minutes, Epsilon a dit :

Je regarderai avec le plugin en question pour voir mais non je n’ai appuyé sur aucun bouton pour désengagé les moteurs.

Pas la peine de regarder ce plugin, ce n'est pas une bonne idée de l'installer sur une X Max 3 complètement d'origine.

Pour les lignes sur ta citrouille, j'irai chercher la piste de @JoOj

Pour la lubrification des axes X Y et Z. On ne graisse pas les courroies, surtout pas !

Pour les axes X et Y j'utilise de l'Unilube et pour les axes Z, de l'Unilube pour les tiges et de la Magnalube pour les vis trapézoidales.

L'usure des buses, sauf si tu as passé du filament chargé de quelque chose, sinon c'est assez résistant.

Modifié (le) par V3DP
Posté(e)

D'accord car effectivement je trouvais que le rendu était un peu trop "sombre" selon moi, que ça tirait plus vers le noir et qu'on voyait pas assez le vert.

As tu des recommandations sur les paramètres a ajuster pour avoir des rendu différents autre que la vitesse?

il y a 1 minute, V3DP a dit :

Pas la peine de regarder ce plugin, ce n'est pas une bonne idée de l'installer sur une X Max 3 complètement d'origine.

Pour les lignes sur ta citrouille, j'irai chercher d'abord du coté de la lubrification des axes X Y et Z. On ne graisse pas les courroies, surtout pas !

Pour les axes X et Y j'utilise de l'Unilube et pour les axes Z, de l'Unilube pour les tiges et de la Magnalube pour les vis trapézoidales.

L'usure des buses, sauf si tu as passé du filament chargé de quelque chose, sinon c'est assez résistant.

Merci pour tes recommandations 

Excepté du PLA/PLA+ et bicouleur je n’ai pas mis d'autres filaments pour le moment 🙂

Posté(e)
il y a 3 minutes, Epsilon a dit :

As tu des recommandations sur les paramètres a ajuster pour avoir des rendu différents autre que la vitesse?

Par défaut, la vitesse perimetrique devrait être constante. Par contre du peux avoir des paramètres de vitesse de surplomb qui font ralentir => tu peux donc tenter d'aligner tes vitesses de périmètres sur celles des sur plombs (ça va être treeeeees lent) 

Pour la ventilation, tu peux la régler "toujours à fond" 😅

 

Mais j'avais pas capté que c'etait un bicolore. Un filament bicolore en général donne des reflets réguliers en a (genre un œuf, tu le tournes, tu as la même couleur de haut en bas) 

Posté(e)

Oui pardon j'avais oublié de préciser que c'était du bicouleur 

J'ai dis Silk car sur la boîte de la bobine (Sunlu) il y a marqué "Silk" donc j'ai pris les paramètres Silk sur mon Qidi Studio. Mais l'image que j'avais sur une impression du vendeur n'est pas vraiment la même de ce que j'ai obtenu 😅

D'ailleurs j'ai relancer une impression de mon marqué page multi couleur en faisant attention de ne pas bouger la tête cette fois. Le décalage n'est plus apparu, cependant il y a des endroits où le filament ne s’est pas du tout déposer !

En pièce jointe, la photo du maker qui l'a créer... et le miens 😅 (j'ai suivi les configurations qu'il a donné)

Pareil pour le vase qui ressort beaucoup plus foncé que sur la page d'achat. Donc j'ai l'impression que cest une histoire de paramétrage mais je cherche encore quoi !

Screenshot_20260119_193246_AliExpress.jpg

Screenshot_20260119_193646_Brave.jpg

17688484727335409812240861296250.jpg

Screenshot_20260119_195028_AliExpress.jpg

17688487073036499937797436238581.jpg

Posté(e)
il y a 51 minutes, Epsilon a dit :

Oui pardon j'avais oublié de préciser que c'était du bicouleur 

Galopin... 😆

  • Haha 1
Posté(e)

Bon j'ai fais un benchy dont voici le résultat

On voit bien les lignes entre les couches... 

Ce matin j'ai regraisser tous les axes

20260124_131427.jpg

20260124_131421.jpg

20260124_131358.jpg

20260124_131348.jpg

Alors j'ai joué sur le Z Offset car je trouvais que la première couche n'était pas assez "écrasé" et j'ai l'impression que ca a arrangé un peu la qualité

Par contre n‘est ce pas trop écrasé maintenant ? Car on ne voit plus ce qu'il y a écrit ce qui était sous le benchy (gauche ancienne valeur et droite après ajustement du z offset)

20260124_143858.jpg

20260124_143647.jpg

20260124_143624.jpg

20260124_143609.jpg

Posté(e)

Ca ressemble à un problème de "banding", variations de température de la hotend / température un peu trop faible. Quelques pistes

Tu as essayé en augmentant la température de la hotend de 5°C ?

Tu as calibré ta hotend ? (PID_CALIBRATE HEATER=extruder TARGET= (une température proche de celle que tu utilises, mais légèrement supérieure)

Essaye de refaire un Benchy après avoir calibré ta hotend.

Posté(e)

Bonsoir V3DP

Tiens non je n'ai pas essayé en augmentant la température ! Je vais tester ca 🙂

Par contre tu m'as déjà perdu concernant la calibration de mon Hotend... 😄

Par exemple sur ma bobine PLA, ca affiche 200-210 en conseil d'impression

Si je met mon benchy a 205° sur mon Slicer, par exemple

je dois mettre PID_CALIBRATE HEATER=extruder TARGET=206 c'est bien ca? 🙂

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...