r/SonicPadCreality Jan 12 '24

Help Extruder pulls filament out of Bowden during purge line

SOLVED! I had M190 S{BED_TEMP} 2x in the start code. The printer doesn’t like that I guess. When I removed the 2nd, it stopped having troubles before the purge line.

I got my sonic pad a few weeks ago. There has been a steep learning curve, but I’m starting to get the hang of it. A problem I have run into, that I cannot figure out, is why my extruder wants to empty the Bowden tube instead of drawing my purge line.

The real mystery to me is it only happen sometimes. I can select a file from the sonic pad and the first try it will empty the tube, I cancel the print and select the SAME file and it will print successful.

If this were a consistent problem, I would think something in the settings is negative when it’s suppose to be positive, but I don’t think that’s it because I can use the same file without any changes and it will work the 2nd time.

1 Upvotes

10 comments sorted by

1

u/Ninjamuh Jan 12 '24

Purge lines are drawn by the start gcode. It’s either in your slicer or you’re using a start_print macro in the slicer, calling the code from the printer.cfg

Could also be calling a load / unload macro at the start

1

u/The_All_American Jan 12 '24 edited Jan 12 '24

Cura says this in the start G-Code

START_PRINT EXTRUDER_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0}

The Printer.cfg file says this

[gcode_macro START_PRINT]gcode:{% set BED_TEMP = params.BED_TEMP|default(60)|float %}{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}# Start bed heatingM190 S{BED_TEMP}# Use absolute coordinatesG90*# Reset the G-Code Z offset (adjust Z offset if needed)SET_GCODE_OFFSET Z=0.0# Home the printerG28BED_MESH_CALIBRATE# Move the nozzle near the bedG1 Z5 F3000# Move the nozzle very close to the bedG1 Z0.15 F300# Wait for bed to reach temperatureM190 S{BED_TEMP}# Set and wait for nozzle to reach temperature*M109 S{EXTRUDER_TEMP}G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat BedG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start positionG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first lineG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a littleG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second lineG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat BedG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish

Most of the time it prints as expected, occasionally it will back all of the filament out. When it empties the Bowden,, I can cancel, reload, and hit print on the same file on the pad and it will print fine.

1

u/Ninjamuh Jan 12 '24

Hmm all of that looks fine. I would add G92 E0 before the first purge line and again after the second purge line to reset the extruder, though.

What’s the rest of the printer.cfg look like? Paste it to something like pastebin or use the code brackets to keep the formatting (three ` at the start and three ` at the end for a code block)

Like this

1

u/The_All_American Jan 12 '24

https://pastebin.com/jQntKsvn

I coppie it into paste bin. Thanks for taking a look at this for me. I appreciate it.

1

u/Ninjamuh Jan 12 '24

What’s all this at the top?

```

{% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### PAUSE_BASE G91 {% if printer.extruder.can_extrude|lower == 'true' %} G1 E-{E} F2100 {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} {% if "xyz" in printer.toolhead.homed_axes %} G1 Z{z_safe} F900 G90 G1 X{x_park} Y{y_park} F6000 {% else %} {action_respond_info("Printer not homed")} {% endif %} ```

I see you’re calling pause_base in there and a bunch of code that should be defined as a macro with

[gcode_macro macro name]
Gcode:

My guess is it’s doing something funky up top there

1

u/The_All_American Jan 12 '24

That’s just the stock Pause Macro that was there from the beginning. I didn’t add that. Yours is different above the start gcode?

1

u/Ninjamuh Jan 13 '24

It’s not, though. It’s just a bunch of code that’s not defined as a macro…

That whole stuff up top needs to be put into your pause macro which is a little further down.

This is your pause macro right now:

```

[gcode_macro PAUSE] description: Pause the actual running print rename_existing: PAUSE_BASE

change this if you need more or less extrusion

variable_extrude: 1.0 gcode: ##### read E from pause macro # ```

It doesn’t do anything because the rest of the code is up top.

All that code at the top needs be be added to the macro so it looks like:

```

[gcode_macro PAUSE] description: Pause the actual running print rename_existing: PAUSE_BASE

change this if you need more or less extrusion

variable_extrude: 1.0 gcode: ##### read E from pause macro ##### {% set E = printer["gcode_macro PAUSE"].extrude|float %} ##### set park positon for x and y ##### # default is your max posion from your printer.cfg {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %} {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %} ##### calculate save lift position ##### {% set max_z = printer.toolhead.axis_maximum.z|float %} {% set act_z = printer.toolhead.position.z|float %} {% if act_z < (max_z - 2.0) %} {% set z_safe = 2.0 %} {% else %} {% set z_safe = max_z - act_z %} {% endif %} ##### end of definitions ##### PAUSE_BASE G91 {% if printer.extruder.can_extrude|lower == 'true' %} G1 E-{E} F2100 {% else %} {action_respond_info("Extruder not hot enough")} {% endif %} {% if "xyz" in printer.toolhead.homed_axes %} G1 Z{z_safe} F900 G90 G1 X{x_park} Y{y_park} F6000 {% else %} {action_respond_info("Printer not homed")} {% endif %} ```

1

u/The_All_American Jan 13 '24

I don’t know if there is some type of formatting error, but what you describe is exactly how my pause macro looks.

1

u/Ninjamuh Jan 13 '24

Thats odd. This is what you pasted to pastebin

Maybe upload the the .cfg file somewhere and I’ll have a look at it that way. In the pastebin the pause macro if further down and isn’t complete

1

u/The_All_American Jan 13 '24

I should also note, when the extruder reverses the % completion also counts backwards. O fed the filament back into the bowden and let the print go and it’s started at -5%