AndrewEllis93 / Pressure_Linear_Advance_Tool

Pressure Advance / Linear Advance Calibration Tool
https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/introduction.html
GNU General Public License v3.0
38 stars 19 forks source link

add rrf3 option #2

Closed Alex9779 closed 1 year ago

Alex9779 commented 1 year ago

I added the option to select RRF3+. No idea if I missed something somewhere and I hope I chose resonable values. Maybe you want to integrate, I published a test build on my private GitLab Docs instance: https://3d-printing.docs.alitecs.de/pa-calibration-tool/pa-calibration-tool/index.html

Alex9779 commented 1 year ago

I did one print so far and it seems to work just fine: IMG_0078 (1)

AndrewEllis93 commented 1 year ago

Thanks for the contribution, I'll take a look soon

Hopefully my bodgy beginner's JavaScript wasn't too confounding :)

Alex9779 commented 1 year ago

Well after your reorg it doesn't merge easily :D

AndrewEllis93 commented 1 year ago

Heh, yeah, still changing things around a lot. The new tuning guide site has sent me into overdrive

Alex9779 commented 1 year ago

I rebased on your reorg, should be fine again...

Alex9779 commented 1 year ago

nope it is not, changes some links to the scripts wrong... Going to fix...

Alex9779 commented 1 year ago

now it seems to be fine, also updated link to my test deployment in the first post...

AndrewEllis93 commented 1 year ago

Testing this out and making some edits in the rrf3_test branch.

Question - can RRF3 not just do T[TOOL_INDEX] and then the following gcodes will assume that tool? Just hoping to simplify that M568 in the start g-code a bit. If I'm understanding the docs correctly, I think that's the case.

Also - the end gcode you had was just M0. I changed it to this:

G91      ; Relative XYZ
G0 Z5    ; Move up 5mm
G90      ; Absolute XYZ
M0       ; Stop`

Does that seem like it would work? As far as I can tell, M0 turns everything off, right? Does that include the part cooling fan?

And is there a way to restore the user's previous PA value in the end gcode? With Marlin you load from EEPROM, and with Klipper you issue a RESTART.

(I have never used RRF, so I'm having to poke through their docs)

Alex9779 commented 1 year ago

Question - can RRF3 not just do T[TOOL_INDEX] and then the following gcodes will assume that tool?

Hmmm not really sure if that is the case for that special M command, I am using that one because normally I also set standby temperatures and this is not possible with the commands implemented for compatibility with other firmwares.

Also - the end gcode you had was just M0.

Yep because you can overwrite that with a 'stop.g', mine looks like this:

; stop.g
; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled)
T-1

M568 P0 A0 ; disable hotend
M140 S-273.1 ; disable bed heater
M106 P1 S0 ; disable part cooling fan

M98 P"/sys/maintenance.g"

deselecting the tool with 'T-1' triggers 'tfree0.g':

; tfree0.g
; called when tool 0 is freed
;
G92 E0                         ; zero the extruder
G1 E-18 F800                   ; retract filament from meltzone

and 'maintenance.g' contains:

if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
    G28 ; home

var centerx = move.axes[0].max / 2

if move.axes[2].machinePosition < 50
    G1 X{var.centerx} Y0 Z50 F10000
else
    G1 X{var.centerx} Y0 F10000

But I agree, some generic code lifting the nozzle might be better for publishing...

Alex9779 commented 1 year ago

You are right: Pnnn Tool number. If this parameter is not provided, the current tool is used.

Alex9779 commented 1 year ago

And is there a way to restore the user's previous PA value in the end gcode? With Marlin you load from EEPROM, and with Klipper you issue a RESTART.

Normally values are not stored, M500 'stores' some in a 'config-override.g' which you can load with M501 which can be part of 'config.g'. But I don't find anything that PA values are stored.

jaysuk commented 1 year ago

You'll need to add an M116 after the M568 to wait for the hotend temp to stablisise PA values also aren't stored with M500. If you want to restore the previous value you could create a variable in the start gcode and grab the value from the object model, then restore it at the end

Alex9779 commented 1 year ago

You'll need to add an M116 after the M568 to wait for the hotend temp to stablisise

Not if you add 'A2', see https://docs.duet3d.com/User_manual/Reference/Gcodes#m568-set-tool-settings

jaysuk commented 1 year ago

You'll need to add an M116 after the M568 to wait for the hotend temp to stablisise

Not if you add 'A2', see https://docs.duet3d.com/User_manual/Reference/Gcodes#m568-set-tool-settings

from the notes of M568

Temperatures set with M568 do not wait for the heaters to reach temp before proceeding. In order to wait for the temp use a M116 command after the M568 to wait for temps to be reached.

Alex9779 commented 1 year ago

sigh you are right, I don't know my own config :P

'A2' just activates that state...

I have M116 P0 in my tpost0.g. My machine is configure to be pretty much failsafe for preparing the machine before printing. My start gcode in the slicer just calls a macro just like it is in Klipper, which sets needed parameters, everything else is done on the machine...

AndrewEllis93 commented 1 year ago

Maybe it would be simpler to just use M109? They say it's technically deprecated but still works

Alex9779 commented 1 year ago

No idea, do what you think is best for newcomers, I tried to change most of the commands to RRF style, though I skipped the accelerations too because in the native commands they are in a different unit.

Actually I just created that to provide the same options as you do for Klipper, I use the last option with the parametrized macro and let my config do the rest...

AndrewEllis93 commented 1 year ago

I will make the M109 the default, and only one that shows up in the error, but will not show the error if someone puts M568

AndrewEllis93 commented 1 year ago

Ok I think it's almost there. (in the rrf3_test branch) Can you please double check the start/end gcode makes sense for all 3 options and run another test print? You don't have to host it anywhere, you can just open index.html locally

Alex9779 commented 1 year ago

Looks good to me, but running the "simple" modes won't work on my machine because of the things which have to be done before I covered with my macro, gantry leveling, auto Z, purging but as you do it for Klipper those are just starting points which have to be adjusted to the specific setup someone implemented...

AndrewEllis93 commented 1 year ago

Looks good to me, but running the "simple" modes won't work on my machine because of the things which have to be done before I covered with my macro, gantry leveling, auto Z, purging but as you do it for Klipper those are just starting points which have to be adjusted to the specific setup someone implemented...

Can you give me a list of the important g-codes you know of? Gantry leveling etc I will throw them in the canned manual gcode, commented out

Alex9779 commented 1 year ago

Actually this is not so intuitive as with Klipper, the docs have tutorials how to do but but as everything is GCode in RRF my QGL looks like this and is covered in 'bed.g' which is called if you call G32:

; Gantry levelling
G30 P0 X10 Y35 Z-99999 ; probe near a leadscrew
G30 P1 X10 Y135 Z-99999 ; probe near a leadscrew
G30 P2 X140 Y135 Z-99999 ; probe near a leadscrew
G30 P3 X140 Y35 Z-99999 S4 ; probe near a leadscrew and calibrate 3 motors

You basically have to write your own homing macros for each axis and one that covers all axis at once... It is not like Klipper where you have builtin macros which just consume some standardized settings for common tasks.

jaysuk commented 1 year ago

i would just leave it as calling G32 for bed levelling

On Fri, 2 Dec 2022 at 20:47, Alexander Leisentritt @.***> wrote:

Actually this is not so intuitive as with Klipper, the docs have tutorials how to do but but as everything is GCode in RRF my QGL looks like this and is covered in 'bed.g' which is called if you call G32:

; Gantry levelling G30 P0 X10 Y35 Z-99999 ; probe near a leadscrew G30 P1 X10 Y135 Z-99999 ; probe near a leadscrew G30 P2 X140 Y135 Z-99999 ; probe near a leadscrew G30 P3 X140 Y35 Z-99999 S4 ; probe near a leadscrew and calibrate 3 motors

You basically have to write your own homing macros for each axis and one that covers all axis at once... It is not like Klipper where you have builtin macros which just consume some standardized settings for common tasks.

— Reply to this email directly, view it on GitHub https://github.com/AndrewEllis93/Pressure_Linear_Advance_Tool/pull/2#issuecomment-1335829188, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATUSBRT7WDZJ2PTR25FWV3WLJN57ANCNFSM6AAAAAASQ3XDWU . You are receiving this because you commented.Message ID: @.***>

Alex9779 commented 1 year ago

If you are curious, my config for my Voron 2.4 150mm spec is here on GitHub: https://github.com/Alex9779/Voron-150-Config

Alex9779 commented 1 year ago

i would just leave it as calling G32 for bed levelling

you can, but what that does depends on the specific config, it also can do nothin if 'bed.g' has no content...

jaysuk commented 1 year ago

nothing is fine. 99.9% of people doing bed levelling will use G32. if someone wants levelling but don't use it, they would be savvy enough to change their start gcode. and is it worth change G29 to G29 S1 (i know its commented out, but again, most people will just load a premade heightmap)

On Fri, 2 Dec 2022 at 20:50, Alexander Leisentritt @.***> wrote:

i would just leave it as calling G32 for bed levelling

you can, but what that does depends on the specific config, it also can do nothin if 'bed.g' has no content...

— Reply to this email directly, view it on GitHub https://github.com/AndrewEllis93/Pressure_Linear_Advance_Tool/pull/2#issuecomment-1335833253, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATUSBWEFXOWIPBCIMWE623WLJOJJANCNFSM6AAAAAASQ3XDWU . You are receiving this because you commented.Message ID: @.***>

Alex9779 commented 1 year ago

Ya, I think configuring RRF for a machine without experience and no preset for a premade printer like a Caribou3D is nothing for a beginner. Dealing with only GCode is challenging, it took my a lot of evenings and nights to get it working and robust so that everthing works even if you do something out of a normal workflow. So expect someone coming to the site using it for RRF to know his machine at least so much that he is able to customize it so it will run on his machine.

AndrewEllis93 commented 1 year ago

and is it worth change G29 to G29 S1 (i know its commented out, but again, most people will just load a premade heightmap)

I have a personal conquest against saved meshes, hate the things, heh. I will throw G32 in there. One thing I'm confused about - does G32 usually contain G29? Or should I put both?

expect someone coming to the site using it for RRF to know his machine at least so much that he is able to customize it so it will run on his machine.

You overestimate people, hah. The sheer number of Klipper folks with overly complex setups / variable passing junk that have no idea how it works or what they did...

jaysuk commented 1 year ago

a default bed.g file from the config tool (which is called by G32) contains G29. so unless the end user has changed it, G32 will call G29

On Fri, 2 Dec 2022 at 21:14, AndrewEllis93 @.***> wrote:

and is it worth change G29 to G29 S1 (i know its commented out, but again, most people will just load a premade heightmap)

I have a personal conquest against saved meshes, hate the things, heh. I will throw G32 in there. One thing I'm confused about - does G32 usually contain G29? Or should I put both?

expect someone coming to the site using it for RRF to know his machine at least so much that he is able to customize it so it will run on his machine.

You overestimate people, hah. The sheer number of Klipper folks with overly complex setups / variable passing junk that have no idea how it works or what they did...

— Reply to this email directly, view it on GitHub https://github.com/AndrewEllis93/Pressure_Linear_Advance_Tool/pull/2#issuecomment-1335850499, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATUSBTZFM3INSLOZFGI2XLWLJRB7ANCNFSM6AAAAAASQ3XDWU . You are receiving this because you commented.Message ID: @.***>

AndrewEllis93 commented 1 year ago

Ok added G32 (and a g29g28 Z after, just in case). I think I'm happy with where it's at, if you guys agree with that, I will merge

jaysuk commented 1 year ago

looks ok to me

On Fri, 2 Dec 2022 at 21:23, AndrewEllis93 @.***> wrote:

Ok added G32 (and a G29 Z after, just in case). I think I'm happy with where it's at, if you guys agree with that, I will merge

— Reply to this email directly, view it on GitHub https://github.com/AndrewEllis93/Pressure_Linear_Advance_Tool/pull/2#issuecomment-1335857117, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATUSBQX723UN46LIYSJKGLWLJSE3ANCNFSM6AAAAAASQ3XDWU . You are receiving this because you commented.Message ID: @.***>

AndrewEllis93 commented 1 year ago

Ok I'm a bit inept at GitHub, I assumed that merging it to master from my test branch would consider this PR "merged" but apparently not

Anyway, just released into the wild! Your commit shows up in there, not entirely sure what I did wrong 🤷

Alex9779 commented 1 year ago

This PR was against master because you had no other branch when I opened it, we should have rebound it to your new branch but I am also not absolutely sure what the correct workflow would have been...