代码来自 https://gist.github.com/JeremyKennedy,我做了小改。另外此宏末尾的m117代码可能会在测试结束后出现错误提示,但是不影响测试本身,m117是历史遗留问题,大家也别费心去解决了。
关于原代码有两处需要特别注意:
第一处
START_PRINT BED_TEMP={BED} NOZZLE_TEMP={NOZZLE} ,这里的NOZZLE_TEMP跟我的START_PRINT宏不符,导致无法调用saved_variables.cfg里的参数,我改为了:BED_TEMP={BED} EXTRUDER_TEMP={NOZZLE},你也可能需要注意这一点。
第二处
saved_variables.cfg的目录,我的就跟原作者的不一致。大家也要注意修改为自己的。
下面是具体步骤
一、在klipper的配置文件目录下,新建配置文件pa_cal.cfg,将下面的代码拷贝进去
- 其中set PA_STOP = params.PA_STOP|default(0.1),末尾括号里面的0.1只适合近程挤出机,如果是远程挤出机应该设置到1.
- [gcode_macro PA_CAL]
- # Klipper pressure advance line calibration macro.
- # Usage: PA_CAL BED=100 NOZZLE=240 PA_START=0.0 PA_STOP=0.1 NZL=0.4
- # Or you can execute with no parameters, which will use values from printer.cfg and saved_variables.cfg.
- # First prints a line with current set PA, then prints 21 additional line segments starting with PA_START, and increasing to PA_STOP.
- # Based on http://realdeuce.github.io/Voron/PA/pressure_advance.html
- # Cleaned up and moved to using saved_variables.cfg by u/jibbsisme
- # Assisted by u/imoftendisgruntled, u/scul86, and thanks to u/beansisfat, u/stray_r
- description: Tune Pressure Advance
- gcode:
- # saved_variables.cfg
- {% set speed = printer.save_variables.variables.speed %}
- {% set nozzle_temp = printer.save_variables.variables.nozzle_temp %}
- {% set bed_temp = printer.save_variables.variables.bed_temp %}
- {% set pa_stop_limit = printer.save_variables.variables.pa_stop_limit %}
-
- # macro parameters
- {% set BED = params.BED|default(bed_temp)|float %}
- {% set NOZZLE = params.NOZZLE|default(nozzle_temp)|float %}
- {% set PA_START = params.PA_START|default(0.0)|float %}
- {% set PA_STOP = params.PA_STOP|default(pa_stop_limit)|float %}
- {% set NZL = params.NZL|default(printer.configfile.config["extruder"]["nozzle_diameter"])|float %}
- # calculated variables
- {% set PA_STEP = (PA_STOP - PA_START) / 20 |float %}
- {% set E20 = (0.1147475 * NZL) * 20|float %}
- {% set E40 = (0.1147475 * NZL) * 40|float %}
- {% set X_MID = printer.configfile.config["stepper_x"]["position_max"]|float / 2.0 %}
- {% set Y_MID = printer.configfile.config["stepper_y"]["position_max"]|float / 2.0 %}
- START_PRINT BED_TEMP={BED} EXTRUDER_TEMP={NOZZLE}
- G21 ; millimeter units
- G90 ; absolute XYZ
- M83 ; relative E
- SET_VELOCITY_LIMIT ACCEL=3000 ACCEL_TO_DECEL=1500
- G92 E0
- M106 S0
- G1 X{(X_MID-40)} Y{(Y_MID-65)} F{speed} ; move to start position
- G1 Z0.25 F300 ; move to layer height
- G1 E0.75 F1800 ; un-retract
- G1 X{(X_MID-20)} Y{(Y_MID-65)} E{E20} F300 ; print line part one
- G1 X{(X_MID+20)} Y{(Y_MID-65)} E{E40} F3000 ; print line part two
- G1 X{(X_MID+40)} Y{(Y_MID-65)} E{E20} F300 ; print line part three
- G1 E-0.75 F1800 ; retract
- G1 Z1 F300 ; move above layer height
- {% for i in range(0, 21) %}
- SET_PRESSURE_ADVANCE ADVANCE={PA_START + (i * PA_STEP)} ; set Pressure Advance
- M117 PA={PA_START + (i * PA_STEP)}, STEP={PA_STEP}.
- G1 X{(X_MID-40)} Y{(Y_MID-35)+(5*i)} F30000 ; move to start position
- G1 Z0.25 F300 ; move to layer height
- G1 E0.75 F1800 ; un-retract
- G1 X{(X_MID-20)} Y{(Y_MID-35)+(5*i)} E{E20} F300 ; print line part one
- G1 X{(X_MID+20)} Y{(Y_MID-35)+(5*i)} E{E40} F3000 ; print line part two
- G1 X{(X_MID+40)} Y{(Y_MID-35)+(5*i)} E{E20} F300 ; print line part three
- G1 E-0.75 F1800 ; retract
- G1 Z1 F300 ; move above layer height
- {% endfor %}
- END_PRINT
- # these may not work, in which case you will need to count and do the math yourself!
- M117 New PA = ({PA_START} + (bestLine * {PA_STEP}) )
- {action_respond_info ("Find best line and multiply it by (" + PA_START|string + " + (bestLine * " + PA_STEP|string + ") ) to find your PA setting.")}
复制代码
二、新建配置文件saved_variables.cfg,并将下面的代码拷贝进去保存,此配置文件是上面的宏需要调用的测试参数,包括了速度、喷嘴温度、热床温度,终止pa值,也就是说这四者可以在这个文件预设。pa_stop_limit是我自己加进去的,为了更加灵活。注意pa_stop_limit的值要依据你自己的情况去定,远程挤出机可以用1,近程挤出机应该使用0.1。
- [Variables]
- speed = 9000
- nozzle_temp = 195
- bed_temp = 30
- pa_stop_limit = 1
复制代码
三、在打印机配置文件printer.cfg内添加如下代码,注意,下面的~/printer_data/config/saved_variables.cfg得换成你自己的目录,不同版本的klipper,或者不同的安装脚本可能会造成这个配置文件目录不同。你可以使用ftp软件登录查看实际目录。
- [save_variables]
- filename: ~/printer_data/config/saved_variables.cfg
复制代码
四、保存重启klipper就能使用这个宏了。
五、直接点击宏,调用的是saved_variables.cfg这个文件里的参数,点击宏的小三角可以即时自定义测试参数。我们需要记住这个菜单里“PA_STOP”的值,如果你不设置它,那就是saved_variables.cfg里设置的pa_stop_limit这个值。我们假定这个值是X。
六、这个宏会打印22条线条,其中第一条离得比较远,它是以你配置文件里目前的值去打印的一条线,我们可以定它的序号为-1
接下来的21条线就是从序号0开始一直到20的线。
每条线有三段,你需要找出来这三段线最均匀的那条,需要取舍,选综合最均匀的那条线。数一下它的序号。
七、最终的压力提前值计算方法是:
起始值(默认为零除非你设置过)+ 最佳线条序号*(X/20),单位是秒。
比如你的X设置为1,最佳线序号是8,那么你的最佳压力提前值就是0+8*(1/20)=0.4秒。
|
|