No extrusion in some cases



  • I was battling with a clogged nozzle on my delta, after a while I admitted defeat. Since I did not have a spare nozzle at had, I started mounting my E3D Super Volcano that I had laying around for the 1st time. After installation I started testing and encountered an issue that I cannot explain yet.

    Extruding using the 'Extrusion Control' tab in DWC works as one would expect. I can print the following file successfully: SingleLine.gcode. However, this is the only file I have been able to print. All others do not actually extrude anything, retracts do work. (an example of such a file: 20mmCube.gcode)

    I think hotend/extruder problems can be eliminated as the symptoms are the same without filament loaded => no skipping problems. I can extrude manually => no blockage etc.

    Any ideas?



  • nozzle to close to the bed with an uneven bed?



  • @Veti said in No extrusion in some cases:

    nozzle to close to the bed with an uneven bed?

    I believe this not to be the issue for multiple reasons.

    • It should be the same for both files/models

    • The same happens whether filament is loaded or not. If there is no filament loaded, the nozzle could be touching the bed for that matter.

    • The behaviour is the same if a use Z babystepping to increase the distance to the bed.



  • @Nxt-1 This would explain it.

    I would say that somewhere before you print, an M82 command gets sent - it may be in your config.g file or somewhere else. This will tell the firmware that extrusion commands are absolute rather than relative yet the slicer has used relative.

    So in your 20mm cube all those E0.7 extrusion moves will move the filament to a position of 0.7mm from where it started rather than by 0.7mm from the last move. Which will effectively give zero extrusion aftyer the first 0.7mm. But the SingleLine gcode file has a great big E69 command in it so it will seem to like it's extruding because of that one 69mm move. But I would think that after it's done that, the filament would then get retracted back again because the next move is E0.01677. Is that what happens?

    Try putting M83 in you slicer start gcode. This will "tell" the firmware that any following extruder moves are relative. I'm a bit surprised that KISSlicer Premium that are using doesn't do that automatically.


  • Moderator

    @Nxt-1 I think @deckingman is correct. I have had a look through your gcode files, and can't see anything obviously amiss, except the lack of an M83 command. I'd put it in config.g. The first line of my config.g is:

    ; General preferences
    G90                                        ; Send absolute coordinates...
    M83                                        ; ...but relative extruder moves
    

    Retraction and unretract are working because you use hardware retract and unretract (G10 and G11), which is set by M207 S1.50 R0 F3000 T1200 Z1.5 ; Set retract settings in your gcode.

    Ian



  • @deckingman @droftarts I just started thinking in this avenue as well. In my config file there is a G21, G90 and M83, so I should be set there. Never the less, I tried entering some extra M83's in the console while printing. Alas, no difference.

    I still believe you guys are thinking in the right direction tough. The extruder is making erratic moves, which would be explained by a relative/absolute mismatch.


  • Moderator

    Are you homing the axes before printing each time? There may be an M82 in there, though I'm not sure why. There's nothing in the gcode files that would cause this; with all the comments stripped out, this is the singleline gcode file:

    G21
    G90
    M140 S55		; Fast heat bed
    G10 P0 S205		; Set Extruder Temperature
    T0			; Select tool 0
    M116			; Wait for all temperatures to reach the targets
    M207 S1.50 R0 F3000 T1200 Z1.5	; Set retract settings			; Run material specific G-code
    G1 X149.412 Y0 Z0.5 E0 F12000
    G11
    G1 X149.215 Y0 E0.04663 F870
    G1 X148.626 Y0 E0.1399
    G1 X147.643 Y0 E0.23317
    G1 X146.268 Y0 E0.32643
    G1 X144.5 Y0 E0.4197
    G1 X142.339 Y0 E0.51296
    G1 X-149.412 Y0 E69.25024
    G1 X-149.341 Y0 E0.01677
    G1 X-128.729 Y0 E4.89256
    G1 X-106.313 Y0 E5.32048
    G1 X-85.595 Y0 E4.91774
    G1 X-59.291 Y0 E6.24362
    G1 X-32.986 Y0 E6.24366
    G1 X-6.682 Y0 E6.2436
    G1 X19.622 Y0 E6.24361
    G1 X44.725 Y0 E5.95838
    G1 X77.322 Y0 E7.73734
    G1 X117.557 Y0 E9.55009
    G1 X133.537 Y0 E3.79321
    G1 X142.356 Y0 E2.09331
    G1 X144.512 Y0 E0.5117
    G1 X146.276 Y0 E0.41865
    G1 X147.648 Y0 E0.32563
    G1 X148.628 Y0 E0.23259
    G1 X149.216 Y0 E0.13955
    G1 X149.412 Y0 E0.04653
    G10
    G1 X149.341 Y0 E0 F12000
    G1 X149.341 Y0 Z1.1 E0
    G10 P0 S0	; Set Extruder Temperature
    G28				; Home all axes
    M106 S0				; Turn fan off
    G10 P0 S0 R0			; Turn hot end off
    M140 S0				; Turn bed off
    

    G21 sets units to mm, G90 sets absolute positioning, though should exclude the extruder; see https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_G90_Set_to_Absolute_Positioning

    Can you try adding M83 after the G90 and see if it works correctly?

    Ian



  • @droftarts That extra M83 does solve the issue I was experiencing. Now my next questions are: where is the rogue M82 in my config 🙂 ? And for @dc42 why does an M83 while printing is IP not seem to switch to relative mode.

    Either way many thanks for the help!



  • @Nxt-1 Try my suggestion of putting M83 in the slicer start code. This will override any prior M82 command from any other source as it will be executed just before the print starts. If necessary edit your 20mmcube file and put M83 just before the first G1 move. If that works, then you can work backwards from there to isolate where the other M82 is coming from.



  • @deckingman said in No extrusion in some cases:

    @Nxt-1 Try my suggestion of putting M83 in the slicer start code. This will override any prior M82 command from any other source as it will be executed just before the print starts. If necessary edit your 20mmcube file and put M83 just before the first G1 move. If that works, then you can work backwards from there to isolate where the other M82 is coming from.

    Adding M83 in the slicer start code would result in the same as adding manually, like I did. This would be my fallback solution, but it does not treat the cause, just mitigates the effect. Therefore, I am going digging in the /sys files for a rogue M82 in the 1st place 🙂 . I think you are right, going backwards to isolate the M82 might the best way to go about.



  • @Nxt-1 It could be that absolute extrusion is the default setting if no M83 is present. So it may not be that there is an M82 anywhere, merely that that there is not an M83 in config.g.

    My point about putting M83 in the slicer start code as well, is that it would act as a fail safe in case at any time in the future something changed in another file and an M82 got added by accident.

    IMO, if a slicer creates a file with relative extrusion commands, then it should also add an M83 at the very start. Conversely if the slicer is set to create absolute extrusion commands, then it should also add an M82 command. But that's clearly not how Kiss Slicer works.


  • Moderator

    @Nxt-1 Do you have an M555 command in your config.g? This sets the firmware compatibility. I'm not sure, but I think if it's set to Marlin (M555 P2), it sets absolute extrusion. We should have probably asked earlier, but posting your config.g would be a sensible thing to do, so we can see if there's anything out of the ordinary. I don't see the issue with adding M83 in config.g, or at the beginning of a print file.

    Ian



  • @deckingman I don't know why this suddenly became an issue when changing to the Super Volcano. I did not find a missing M83 after a M82 in any of files (it was already in my config file). I agree with the logic that slicer output meant for relative moves, should specify a M83 command in it's output.

    Thanks 🙂


  • Moderator

    @droftarts said in No extrusion in some cases:

    I'm not sure, but I think if it's set to Marlin (M555 P2), it sets absolute extrusion.

    I believe the marlin compatibility in this case refers to the responses given for acknowledgements over USB comms.



  • @droftarts Here are the contents off my config file`(I should have know, thou shall post config files 🙂 ) :
    There indeed is a M555 P2 in there, I don't know why or how it sneaked in there. Though, there is a M83 a couple of line below that.

    ; Configuration file for Deltex
    
    ; ===================== GENERAL SETTINGS =====================
    M111 S0                             							; Debug off
    M550 PDeltex - Super Volcano								; Machine name and Netbios name
    M555 P2                                   						; Repetier Output
    M575 P1 B57600 S1                          						; PanelDue Comm Setup
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xEA 							; MAC Address
    M552 S1											; Enable WiFi
    M586 P1 S0										; Disable FTP
    M586 P2 S0										; Disable Telnet
    
    ; ===================== MOVEMENT SETTINGS ====================
    G21                                 							; Set Units to Millimeters
    G90                            								; Set to Absolute Positioning
    M83                                	 						; Set extruder to relative mode
    
    M584 X0 Y1 Z2 U4 E3									; Assign drives to each motor
    M569 P0 S0										; Drive 0 (X) goes backwards
    M569 P1 S0										; Drive 1 (Y) goes backwards
    M569 P2 S0										; Drive 2 (Z) goes backwards
    M569 P3 S0										; Drive 3 (E) goes backwards
    M569 P4 S0										; Drive 4 (4th) goes backwards
    M574 X2 Y2 Z2 U2 S1									; Endstop configuration (all endstops at high end, active high)
    M665 L500.000:500.000:500.000:224.000 R235.965 H605.488 B200.0 X0.277 Y0.094 Z0.000	; Diagonal rod length, delta radius, printable radius and homed height
    M669 K3 X0 Y0										; Location of the 4th axis tower
    M666 X1.847 Y2.531 Z-4.378 A0.00 B0.00							; Endstop adjustments
    M350 X16 Y16 Z16 E16 U16 I1    								; Set 16x microstepping with interpolation
    M92 X200 Y200 Z200 U80 E414								; Set steps/mm
    M906 X2050 Y2050 Z2050 U900 E700 I60							; Set motor currents (mA) and increase idle current to 60%
    M201 X2000 Y2000 Z2000 U2000 E5000							; Accelerations (mm/s^2)
    M203 X10000 Y10000 Z10000 U10000 E20000							; Maximum speeds (mm/min)
    M566 X400 Y400 Z400 U400 E2000 P1							; Maximum instant speed changes (mm/min)
    
    ; ================ HEATING AND COOLING SETTINGS ==============
    ; Thermistors
    M305 S"Bed" P0 B3950									; Bed temperature sensor parameters
    M305 S"Hotend" P1 B4725 C7.060000e-8							; Hotend temperature sensor parameters 
    M305 S"Water" P2 X2 T10000 B3950							; Water temperature sensor parameters
    M570 S180										; Configure heater fault detection, allow it 180 seconds
    M307 H0 A408.0 C897.0 D2.1 S1.00 V24.2 B0						; Set bed heating process parameters and use PID at 10Hz
    M307 H1 A1383.6 C750.5 D6.0 S1.00 V24.0 B0						; Set hotend heating process parameters and use PID
    
    M143 H0 S200										; Set maximum bed temperature to 200
    
    ; Fans
    M106 P0 I0 H-1 										; disable thermostatic mode for fan 0 (part cooling)
    M106 P1 S255 T45 H1									; enable thermostatic mode for fan 1 (hotend)
    
    ; ====================== TOOL SETTINGS =======================
    M563 P0 D0 H1 S"Hotend"              							; Define hotend tool
    G10 P0 S0 R0                        							; Set tool 0 operating and standby temperatures
    M207 S0	R0 F3000 T1200 Z0								; Set default retraction settings
    
    M563 P1 S"Water" H2									; Set up an extra tool to display heater temperature
    
    ; =================== CALIBRATION SETTINGS ===================
    M558 P8 F1200 H3 R0.4 T10000 A10 S0.04							; Z Probe type 8, input 0, invert no, dive height 3.0mm, probe speed 1200mm/min, travel speed 10000mm/min, recovery time 0.40 sec, heaters normal, max taps 5, max diff 0.04
    G31 X0 Y0 Z-0.15 P100  		        						; Set the zprobe height and threshold (more negative values translate into a higher nozzle)
    M557 R200 P21										; Define probing mesh grid
    
    
    M912 P0 S-12.35										; Set temperature offset for MCU
    T0											; Select hot end
    M501											; Load settings from config-override.g
    
    ``


  • Although I believe @deckingman is right, and it only influences USB comms. (sauce)


  • Moderator

    @Nxt-1 Okay, so not M555! I suppose I should have also asked earlier... what firmware version and what Duet board are you running? M115 will show everything. Also, anything in config_override.g?

    Ian


  • administrators

    @Phaedrux said in No extrusion in some cases:

    @droftarts said in No extrusion in some cases:

    I'm not sure, but I think if it's set to Marlin (M555 P2), it sets absolute extrusion.

    I believe the marlin compatibility in this case refers to the responses given for acknowledgements over USB comms.

    Correct.



  • can you show the firmware type settings you have in Kiss
    c5812896-3b0a-46d9-820d-b9ea693c1206-image.png

    and also check and post the g-code pre-fix screen as well

    49f8cde0-b6ac-442f-ab11-a8edbe8a79f2-image.png

    Mine are posted above and if set correctly does insert a M83 in the start code.

    Firmware type should be set to 5D - Relative E

    HTH at least a little



  • @Dougal1957 My firmwaretype is set to 5D-Relative E in KISS, prefix was empty before. I now put a few commands in there:

    G21                            ; Set Units to Millimeters
    G90                            ; Set to Absolute Positioning
    M83                            ; Set extruder to relative mode
    

    I do not see KISS putting an M83 in there by itself, which I would expect when set to relative E.



  • @Nxt-1 I've been using kiss that long now I can't remember wether i did it myself or not but I think it did!


Log in to reply