Multi Pressure Advance (Nozzle relation) #2326

Open
opened 2026-04-06 04:09:29 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @ianalexis on 8/31/2025

Multi PA

Enable the possibility of loading more than one PA according to the nozzle, as it has a direct relationship.

imagen

Useful for avoiding multiple profiles just for nozzle changes, but also for new machines with tool changes that allow for nozzle changes while maintaining the material.

  • "Legacy” value with a single value and no nozzle, take that value as before.
  • Single value (e.g., 0.4,0.2), it is taken as legacy.
  • If there is a value without a incomplete value ("0.5," || ",0.2") is ignored.
  • If nozzle does not match the listed values:
    • 1 PA value = using that value
    • Multi PA values = linear PChip interpolation like Adaptive Pressure Advance (IF WE WANT TO GO BACK TO LINEAR WE MUST REVERT THE LAST COMMIT).
  • "Smart" Order, if the user set pa/nozzle the algorithm will swap the values
    • If 1 column only contain multiples of 0.05 and:
      • 2 column only contain multiples of 0.05 = No Swap
      • 2 column contain any non-multiple of 0.05 = No Swap
        • Nozzle is the one with more 0.05 multiple values.
    • If 1 column contain any non-multiple of 0.05 and:
      • 2 column only contain multiples of 0.05 = Swap
      • 2 column contain non-multiple of 0.05:
        • Nozzle is the one with more 0.05 multiple values.

Nowdays Prusa do this by:

    "filament_start_gcode": [
        "M572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.02
			{elsif nozzle_diameter[filament_extruder_id]==0.5}0.018
			{elsif nozzle_diameter[filament_extruder_id]==0.6}0.015
			{elsif nozzle_diameter[filament_extruder_id]==0.8}0.01
			{elsif nozzle_diameter[filament_extruder_id]==0.25}0.09
			{elsif nozzle_diameter[filament_extruder_id]==0.3}0.065
			{else}0{endif} ; Filament gcode\nM142 S40 ; set heatbreak target temp"
    ],

+240 Prusa profiles that could be converted into 41 profiles analyzed in a logarithmic table.
imagen

Adaptive Pressure Advance:

I just adapt when it takes the PA value but maybe we have to:

  • add the nozzle size to it as a value = Nozzle, PA, flow, acceleration
    • Using multiple APA models.
    • interpolate it's resulting values with a potential curve based in the PA.
  • use it as it is and do not adapt it

TODO after Merge

  • Prusa profiles could be readapted to use this structure and no longer have the values in filament_start_gcode.
*Originally created by @ianalexis on 8/31/2025* # Multi PA Enable the possibility of loading more than one PA according to the nozzle, as it has a direct relationship. <img width="707" height="241" alt="imagen" src="https://github.com/user-attachments/assets/20597fd8-11ed-4756-a2a0-7dc67c469284" /> Useful for avoiding multiple profiles just for nozzle changes, but also for new machines with tool changes that allow for nozzle changes while maintaining the material. - "Legacy” value with a single value and no nozzle, take that value as before. - Single value (e.g., 0.4,0.2), it is taken as legacy. - If there is a value without a incomplete value ("0.5," || ",0.2") is ignored. - If nozzle does not match the listed values: - 1 PA value = using that value - Multi PA values = ~~linear~~ PChip interpolation like Adaptive Pressure Advance (IF WE WANT TO GO BACK TO LINEAR WE MUST REVERT THE LAST COMMIT). - "Smart" Order, if the user set pa/nozzle the algorithm will swap the values - If 1 column only contain multiples of 0.05 and: - 2 column only contain multiples of 0.05 = No Swap - 2 column contain any non-multiple of 0.05 = No Swap - Nozzle is the one with more 0.05 multiple values. - If 1 column contain any non-multiple of 0.05 and: - 2 column only contain multiples of 0.05 = Swap - 2 column contain non-multiple of 0.05: - Nozzle is the one with more 0.05 multiple values. Nowdays Prusa do this by: ```json "filament_start_gcode": [ "M572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.02 {elsif nozzle_diameter[filament_extruder_id]==0.5}0.018 {elsif nozzle_diameter[filament_extruder_id]==0.6}0.015 {elsif nozzle_diameter[filament_extruder_id]==0.8}0.01 {elsif nozzle_diameter[filament_extruder_id]==0.25}0.09 {elsif nozzle_diameter[filament_extruder_id]==0.3}0.065 {else}0{endif} ; Filament gcode\nM142 S40 ; set heatbreak target temp" ], ``` +240 Prusa profiles that could be converted into 41 profiles analyzed in a logarithmic table. <img width="1284" height="1006" alt="imagen" src="https://github.com/user-attachments/assets/f755fffc-4c1f-4411-bfbc-1263cf680d26" /> ## Adaptive Pressure Advance: I just adapt when it takes the PA value but maybe we have to: - add the nozzle size to it as a value = Nozzle, PA, flow, acceleration - Using multiple APA models. - interpolate it's resulting values with a potential curve based in the PA. - use it as it is and do not adapt it ## TODO after Merge - Prusa profiles could be readapted to use this structure and no longer have the values in filament_start_gcode.
MrUnknownDE added the 2.4.02.4.0 labels 2026-04-06 04:09:29 +02:00
Sign in to join this conversation.
No Label 2.4.0 2.4.0
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#2326