Pressure Advance seems to not be working.



  • Good evening all,

    I've finally got around to tuning my PA and enabling it, however it just doesn't seems to be working. When I enable PA with "M572 D0 S0.3" I get what seem to sound like skipped stepps on the extruder motor but then no signs of anything else happening. This behaviour will happen every time I set a new value for PA, sounds like it skipps a few steps and then back to normal bahaviour. I have removed the stepper itself from the extruder and I still experience the same behaviour, removing the extruder and hotend out of the equation straight away. I don't currently have any other steppers to hand to swap out to test, is this something you would like me to test?

    What could be possibly forcing my PA to not take a effect?

    Current configuration:

    • Printer: Voron2.2.
    • Movement Systems: CoreXY.
    • Hardware: Duet Wifi & Duex5.
    • Firmware Name: RepRapFirmware for Duet 2 WiFi/Ethernet
    • Firmware Electronics: Duet WiFi 1.02 or later + DueX5
    • Firmware Version: 2.03 (2019-06-13b2)
    • WiFi Server Version: 1.23
    • Web Interface Version: 1.22.6

    Please find my config.g and start print macro below:

    Config.g:

    ; Configuration file for Duet WiFi (firmware version 1.21 or newer)
    ; executed by the firmware on start-up
    
    ; General preferences
    M111 S0 ; Debugging off
    G21     ; Work in millimetres
    G90     ; Send absolute coordinates...
    M83     ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin
    M575 P1 B57600 S1 ; Comms parameters for PanelDue
    ;M564 S1 H0 ; Forbid axis movements when not homed
    M564 S0 H0
    
    ; General setup
    M667 S1                ; Select CoreXY mode
    M208 X0 Y0 Z0 S1     ; Set axis minima
    M208 X347 Y347 Z320 S0 ; Set axis maxima
    
    ; Endstops
    M574 X2 Y2 Z0 S0 ; Set active low for x and y, no Z endstop
    
    ; Zprobe
    M98 P"/macros/probe_scripts/activate_z_probe.g"
    
    ; --- drive map ---
    ;    _______
    ;   | 6 | 7 |
    ;   | ----- |
    ;   | 5 | 8 |
    ;    -------
    ;     front
    
    ; Drive directions
    M569 P0 S0 ; A          
    M569 P1 S0 ; B
    M569 P3 S1 ; Extruder #1
    M569 P5 S1 ; Z1
    M569 P6 S0 ; Z2
    M569 P7 S1 ; Z3
    M569 P8 S0 ; Z4
    
    ; Motor mapping and steps per mm
    M584 X0 Y1 Z5:6:7:8 E3
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    ;M350 Z16 I0 ; disable Z interpolation
    M92 X160 Y160 Z400 E560 ; Set steps per mm
    
    ; Accelerations and speed
    M98 P"/macros/print_scripts/speed_printing.g"
    
    ; Firmware retract
    M207 S4 F9000 T6000 Z0.5 		; Set Firmware Retraction
    
    ; Drive currents
    M98 P"/macros/print_scripts/xy_current_high.g"	; XY (AB) currents high
    M98 P"/macros/print_scripts/z_current_high.g"   ; Z currents high
    M906 E1400                                      ; E current
    M906 I30                                        ; idle current percentage
    M84 S120                                        ; Set idle timeout
    
    ; Bed Heater
    M305 P0 R4700 T100000 B3950                     ; Set thermistor + ADC parameters for heater 0
    ;M307 H0 A90.0 C700.0 D10.0 S1.00 B1             ; Bang-bang bed
    ;M307 H0 A297.3 C955.5 D1.2 S1.00 V24.6 B0       ; PID bed
    M143 H0 S120                                    ; Set temperature limit for bed heater to 120C
    
    ; Hotend #1 Heater
    M305 P1 R4700 T100000 B4725 C0.0000000706       ; Set thermistor + ADC parameters for heater 1
    ;M307 H1 A454.1 C235.9 D4.5 S1.00 B0             ; 104GT2 PID, 30W heater
    ;M305 P1 X200                                    ; 1st nozzle is PT100, first channel
    ;M307 H1 A568.8 C203.2 D4.0 S1.00 V24.5 B0       ; E3D V6 + PT100 PID, 30W heater
    ;M307 H1 A365.9 C236.7 D4.9 S1.00 V24.5 B0       ; E3D Volcano + PT100 PID, 30W heater
    M143 H1 S285                                   ; Set temperature limit for heater 1 to 285C
    
    ;M305 S"Bed plate" P103 X3 R4700 T100000 B3950   ; Set thermistor for MIC6 plate
    ;M305 S"Ambient" P104 X405 T21                   ; Set DHT21 for chamber temp
    ;M305 S"Humidity [%]" P105 X455 T21              ; Set DHT21 for chamber humidity
    
    ; disable unused heaters (so they are hidden on the PanelDue)
    M307 H2 A-1 C-1 D-1
    M307 H3 A-1 C-1 D-1
    M307 H4 A-1 C-1 D-1
    M307 H5 A-1 C-1 D-1
    M307 H6 A-1 C-1 D-1
    M307 H7 A-1 C-1 D-1
    
    ; Tools
    M563 P0 D0 H1 F0:2 ; Define tool 0, use fan #4 for M106
    G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
    G10 P0 R0 S0    ; Set initial tool 0 active and standby temperatures to 0C
    
    ; Network
    M550 Voron V2 ; Set machine name
    M552 S1            ; Enable network
    M586 P0 S1         ; Enable HTTP
    M586 P1 S1         ; Enable FTP
    M586 P2 S0         ; Disable Telnet
    
    ; Fans
    M106 P0 S0 I0 F250 H-1 C"PCF - L"   ; Part cooling fan 250 hz, no thermostatic control
    ;M106 P1 S255 I0 F20 H1 T50 ; Hotend fan, 20 Hz, turns on if temperature sensor 1 reaches 50 degrees
    M106 P2 S0 I0 F250 H-1 C"PCF - R"   ; Part cooling fan 250 hz, no thermostatic control
    M106 P3 S0 I0 F50 H-1 C"Exhaust Fan"	 ; Exhaust cooling fan 50 hz, no thermostatic control
    M106 P4 T45:65 F250 H100:101:102 C"Base Fan" ; Electronics bay fan, turn on gradually if MCU is over 45C or any TMC driver is over temp
    M106 P5 S255 I0 F250 H1 T50 ; Hotend fan, 250 Hz, turns on if temperature sensor 1 reaches 50 degrees
    
    ; Bed
    ;M671 X-60:-60:409:409 Y-6:418:418:-6 S20 ; Define z belt locations (Front_Left, Back_Left, Back_Right, Front_Right)
    M671 X-60:-60:409:409 Y0:421:421:0 S20 ; Define z belt locations (Front_Left, Back_Left, Back_Right, Front_Right)
    M557 X25:275 Y25:275 S25                   ; Define mesh grid
    
    ; Pressure advance
    ;M572 D0 S0.22
    
    M501  ; load config-override.g
    T0    ; select tool 0
    

    Start_Print.g:

    M83  ; set extruder to relative mode
    G21  ; set units to mm
    
    T0  ; select tool 0
    
    G29 S1 ; apply Z heightmap
    
    G92 E0.0  ; reset extruder position
    M220 S100 ; reset speed multiplier
    
    ; reset firmware retraction
    M207 S5.0 F5000 T3200 Z0.4
    
    G91
    G1 Z5 F9000
    G90
    
    M98 P"/macros/print_scripts/goto_bucket.g"
    M98 P"/macros/print_scripts/nozzle_wipe.g"
    
    ; final Z adjust (with hot nozzle)
    M98 P"/macros/print_scripts/z_switch_probe.g"
    
    M98 P"/macros/print_scripts/goto_bucket.g"
    M83								; extruder relative positioning
    G1 E5 F200						; Prime Extruder
    G1 E4 F1200						; Retract
    M98 P"/macros/print_scripts/nozzle_wipe.g"
    
    M207 S5 Z0.5 ; Set retraction amount and z-hop amount
    G29 S1 ; apply Z heightmap
    

    Acceleration, Jerk and speeds are all set at the end of the homing sequence and they are as follows:

    speed_printing.g:

    M566 X900 Y900 Z60 E8000        ; Set maximum instantaneous speed changes (mm/min)
    M203 X18000 Y18000 Z3000 E15000 ; Set maximum speeds (mm/min)
    M201 X2000 Y2000 Z250 E1800     ; Set maximum accelerations (mm/s^2) 
    M204 P1500 T2000                ; Set printing acceleration and travel accelerations
    

    I have also included the following macros that get called within the start_print.g macro:

    goto_bucket.g:

    ; assumes we are homed
    
    G90
    G1 X88 Y341 F18000
    

    nozzle_wipe.g:

    ; assumes we are homed
    M98 P"/macros/print_scripts/goto_bucket.g"
    
    G1 Z4.5
    
    G91 ; relative
    G1 Y+5 F20000
    G1 X+27
    G1 X-27
    G1 Y-5
    G1 X+27
    G1 X-27
    
    G1 X+5 Y+5
    G1 Y-5
    G1 X+5 Y+5
    G1 Y-5
    G1 X+5 Y+5
    G1 Y-5
    G1 X+5 Y+5
    G1 Y-5
    G1 X+5 Y+5
    G1 Y-5
    G1 X+4 Y+5
    G1 Y-5
    
    G1 X-5 Y+5
    G1 Y-5
    G1 X-5 Y+5
    G1 Y-5
    G1 X-5 Y+5
    G1 Y-5
    G1 X-5 Y+5
    G1 Y-5
    G1 X-5 Y+5
    G1 Y-5
    G1 X-4 Y+5
    G1 Y-5
    
    G1 Z10
    
    G90 ; absolute
    
    M98 P"/macros/print_scripts/goto_bucket.g"
    

    z_switch_probe.g:

    ; do a single probe on the Z switch, finalizing the Z height
    M98 P"/macros/print_scripts/z_current_low.g"
    M98 P"/macros/probe_scripts/activate_z_switch.g"
    M98 P"/macros/probe_scripts/goto_z_switch.g"
    G30 Z-99999
    M98 P"/macros/print_scripts/z_current_high.g"
    
    ; Keep the switch probe active so all Z future offsets are relative to it.
    ; Switching the active probe type in RRF changes the Z offset!
    

    A quick video of what i'm experiencing (nothing noticible, its just like what retracts normally look like, possible skipped steps at the end of the retraction move): https://youtu.be/JunLi-gug-A

    Unfortuantely I don't have a video of the behaviour when you send a fresh M572 command, but I could possibly get this should you feel it would aid in troubleshooting.

    I'm tempted to just reflash the firmware and see if it was just a bad firmware application, but I have experienced no other issues using this currently setup.

    Should I have missed anything off this post, please do let me know and I will try my best to get information as needed.

    Thanks,
    Sam.



  • Can you send an M122 after a print? I'm curious to see if you have any hiccups. There may be skipped steps due to the high retraction speed set and high max extruder speed. It may be trying to go faster than the step pulses can be generated. Or the motor may be trying to go faster than the back EMF will allow.

    Either way, you may want to try reducing the retraction speed and max extruder speed.

    Also, is your extruder motor current set to 85% of rated max?

    Firmware 2.05 is out now, so may want to upgrade to that regardless.



  • Maybe the jerk value for the extruder is too high.
    While setting up PA today, I had the same issue. After decreasing jerk to 1000 mm/min I was able to print the test cube.



  • @Phaedrux - Do you want me to just make a normal print with no attempts of using PA and then do a M122 or would you prefer me to perform this after trying PA? I will perform both and post the findings from them over the next couple of days. I will use the same gcode file for both and just manually enable PA on one and not the other.

    I will also try your suggestion of reducing the speed and max extruder speed after those two tests have been performed. I do believe that the steppers I have are rated for 2.1A, so 85% of that would be 1.785A. The extruder motor is currently set to use 1.4A. Is this something you would increase the power to?

    @DIY-O-Sphere - I will give that a shot soon and feed back my findings.

    Thank you to the two of you for taking the time to contribute to my troubleshooting!



  • @Samuel235 Yes both with and without PA would help to establish a baseline.

    I'd probably set the extruder motor current to 1.6 or 1.7 and see how it goes.



  • @Phaedrux - What printer would be a good test here, would just a simple cube be enough to test if its working or not, not looking to test how good its working, just that it is working...



  • @Samuel235 A cube would probably be alright. A benchy makes for a good test since it has a range of move types and areas to highlight flaws.

    Since the issue we are trying to highlight is likely involving retraction and pressure advance, a simple XYZ cube scaled up a bit would be a good choice. Slightly more complex than a 4 sided cube but not as complex as a benchy and still fast to print.

    xyzCalibration_cube.stl



  • @Phaedrux - Thank you for including the .stl for me. I will get to that tonight or tomorrow morning (UK Based).



  • Morning all,

    I can confirm that PA now seems to be working after a change of extruder motor current, I assume it was skipping steps due to this. I'm going to continue further today to calibrate PA but I have just ran a XYZ Cube at 150% size and got awesome results from it, with a PA value of 0.22. I have included the information below that I said I would gather.

    I do see some hiccups @Phaedrux, but I have done a quick research through this forum and can see that its not really an issue unless you are seeing around 50 per 200mm, is that correct?

    • M572 before PA enabled:
    M572
    Extruder pressure advance 0.000
    
    • M122 before PA enabled:
    M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 2.03 running on Duet WiFi 1.02 or later + DueX5
    Board ID: 08DGM-956GU-DJMSN-6J1F4-3SJ6N-1BNBF
    Used output buffers: 5 of 24 (20 max)
    === RTOS ===
    Static ram: 25680
    Dynamic ram: 94256 of which 308 recycled
    Exception stack ram used: 596
    Never used ram: 10232
    Tasks: NETWORK(ready,524) HEAT(blocked,1236) DUEX(suspended,156) MAIN(running,1668) IDLE(ready,160)
    Owned mutexes:
    === Platform ===
    Last reset 22:11:00 ago, cause: power up
    Last software reset at 2019-12-23 18:30, reason: User, spinning module GCodes, available RAM 10304 bytes (slot 1)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d
    Error status: 16
    Free file entries: 10
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest block write time: 0.0ms, max retries 0
    MCU temperature: min 48.9, current 52.3, max 55.6
    Supply voltage: min 24.0, current 24.3, max 24.6, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: standstill, SG min/max 0/1023
    Driver 1: standstill, SG min/max 0/1023
    Driver 2: standstill, SG min/max not available
    Driver 3: standstill, SG min/max 0/1023
    Driver 4: standstill, SG min/max not available
    Driver 5: standstill, SG min/max 8/252
    Driver 6: standstill, SG min/max 34/260
    Driver 7: standstill, SG min/max 31/250
    Driver 8: standstill, SG min/max 0/266
    Driver 9: standstill, SG min/max not available
    Date/time: 2019-12-31 18:36:04
    Cache data hit count 4294967295
    Slowest loop: 113.77ms; fastest: 0.08ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Move ===
    Hiccups: 0, FreeDm: 169, MinFreeDm: 146, MaxWait: 0ms
    Bed compensation in use: mesh, comp offset 0.000
    === DDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1
    Heater 0 is on, I-accum = 0.5
    Heater 1 is on, I-accum = 0.5
    === GCodes ===
    Segments left: 0
    Stack records: 4 allocated, 0 in use
    Movement lock held by null
    http is idle in state(s) 0
    telnet is idle in state(s) 0
    file is idle in state(s) 0
    serial is idle in state(s) 0
    aux is idle in state(s) 0
    daemon is idle in state(s) 0
    queue is idle in state(s) 0
    autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 200.53ms; fastest: 0.08ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
    HTTP sessions: 1 of 8
    - WiFi -
    Network state is running
    WiFi module is connected to access point
    Failed messages: pending 0, notready 0, noresp 1
    WiFi firmware version 1.23
    WiFi MAC address XXXXXXXX
    WiFi Vcc 3.32, reset reason Turned on by main processor
    WiFi flash size 4194304, free heap 24400
    WiFi IP address XXXXXXXX
    WiFi signal strength -55dBm, reconnections 0, sleep mode modem
    Socket states: 0 0 0 0 0 0 0 0
    
    • M572 after PA enabled, value of 0.22:
    M572
    Extruder pressure advance: 0.220
    
    • M122 after PA enabled, value of 0.22:
    M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 2.03 running on Duet WiFi 1.02 or later + DueX5
    Board ID: 08DGM-956GU-DJMSN-6J1F4-3SJ6N-1BNBF
    Used output buffers: 5 of 24 (20 max)
    === RTOS ===
    Static ram: 25680
    Dynamic ram: 94256 of which 308 recycled
    Exception stack ram used: 492
    Never used ram: 10336
    Tasks: NETWORK(ready,524) HEAT(blocked,1236) DUEX(suspended,156) MAIN(running,1668) IDLE(ready,160)
    Owned mutexes:
    === Platform ===
    Last reset 06:31:07 ago, cause: software
    Last software reset at 2019-12-31 18:44, reason: User, spinning module GCodes, available RAM 10232 bytes (slot 2)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d
    Error status: 16
    Free file entries: 10
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest block write time: 0.0ms, max retries 0
    MCU temperature: min 40.9, current 41.0, max 57.7
    Supply voltage: min 23.9, current 24.5, max 24.6, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: standstill, SG min/max 0/1023
    Driver 1: standstill, SG min/max 0/1023
    Driver 2: standstill, SG min/max not available
    Driver 3: standstill, SG min/max 0/1023
    Driver 4: standstill, SG min/max not available
    Driver 5: standstill, SG min/max 0/253
    Driver 6: standstill, SG min/max 15/257
    Driver 7: standstill, SG min/max 0/252
    Driver 8: standstill, SG min/max 0/261
    Driver 9: standstill, SG min/max not available
    Date/time: 1970-01-01 00:00:00
    Cache data hit count 4294967295
    Slowest loop: 101.62ms; fastest: 0.08ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Move ===
    Hiccups: 129, FreeDm: 169, MinFreeDm: 146, MaxWait: 0ms
    Bed compensation in use: mesh, comp offset 0.000
    === DDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1
    Heater 0 is on, I-accum = 0.0
    Heater 1 is on, I-accum = 0.6
    === GCodes ===
    Segments left: 0
    Stack records: 4 allocated, 0 in use
    Movement lock held by null
    http is idle in state(s) 0
    telnet is idle in state(s) 0
    file is idle in state(s) 0
    serial is idle in state(s) 0
    aux is idle in state(s) 0
    daemon is idle in state(s) 0
    queue is idle in state(s) 0
    autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 200.37ms; fastest: 0.08ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
    HTTP sessions: 1 of 8
    - WiFi -
    Network state is running
    WiFi module is connected to access point
    Failed messages: pending 0, notready 0, noresp 7
    WiFi firmware version 1.23
    WiFi MAC address XXXXXXXX
    WiFi Vcc 3.33, reset reason Turned on by main processor
    WiFi flash size 4194304, free heap 24400
    WiFi IP address XXXXXXXX
    WiFi signal strength -55dBm, reconnections 0, sleep mode modem
    Socket states: 0 0 0 0 0 0 0 0
    

    Thanks,
    Sam.



  • @Samuel235 said in Pressure Advance seems to not be working.:

    got awesome results from it, with a PA value of 0.22

    Is this a direct extruder or bowden?



  • @zapta Its bowden, around 650mm bowden length.



  • @Samuel235 said in Pressure Advance seems to not be working.:

    Hiccups: 129

    I wouldn't be too concerned by this over the course of a print.

    Do you happen to have Z hop on retract enabled?

    You can do more fine grained testing to try and pin down when the hiccups are occuring. Every time you send M122 it resets the counter, so you can send it at the start, send it after homing, send it after the first layer, etc. and eventually you'll get an idea of where and when they are occuring.



  • @Phaedrux - I was doing this while it was printing also, it seems to be consistent on most layers if i remember correctly. I'm not currently running Z Hop, no.



  • @Samuel235 said in Pressure Advance seems to not be working.:

    @zapta Its bowden, around 650mm bowden length.

    0.22 for a 650mm bowden is very low, good for you. I got > 1.0 with 600mm 1.9mm capricon bowden and lowered it to 0.15 when switched to direct drive.



  • I'm currently running some tests to attempt to calibrate it. I'm currently using CURA so I'm unable to force a seam to be in the middle of a flat face, so i'm using a cone print to put a seam on the face and to change PA as the print goes and then to find the best section. I'd be interested to know the calibration method you all face, do you all go for the python script that is floating around?



  • @Samuel235 said in Pressure Advance seems to not be working.:

    I'm currently using CURA so I'm unable to force a seam to be in the middle of a flat face

    It can be done in Cura.
    https://ultimaker.com/en/resources/52343-shell

    The options may be hidden by default. Use the gear icon on the shell heading to see any hidden options.

    Z seam alignment - User specified
    Z seam position - back
    Seam corner preference - none

    Produces the desired result. That's in 4.4.1. In older versions there was an X and Y position you could specify. The setting is still there in the settings visibility filter, but it's not being shown and I'm not sure what's blocking it. Regardless, setting it to back, front, left, or right works to align it to a face.



  • @Phaedrux - Im on 4.2.1 and the XY position will not put it in the middle of a flat face for me and a few others I chat to. I will try their update shortly to see if that new option works for me.



  • @Samuel235 The corner preference must be none as well.



  • I have just updated my Cura, and still facing the same issues:

    529ff7e2-dd34-4c61-afac-fabf0d4d3d61-image.png

    Will attempt to find a work around later today using another slicer.



  • Re getting the z-seam in the middle of a flat face using Cura. Well, it can't be done using the UM releases but my Cura builds do now provide that capability. Setting the z-seam to user-defined and seam corner preference to none will enable this feature. You can find my releases at https://www.dropbox.com/sh/s43vqzmi4d2bqe2/AAADdYdSu9iwcKa0Knqgurm4a?dl=0. Please read the README.md file there for more info.

    Here's an example, you can see the travel moves associated with the z-seam to the left of the middle of the flat area at the botttom of the image.

    Screenshot_2020-01-02_07-49-20.png


Log in to reply