2

I've tried to print in two colours avoiding M600 (my Ender 3 V1 won't recognize it). After reading, trying, and asking in other forums I still can't get it.

Everything goes fine until the second M25 (pause). At that point, instead of waiting the nozzle moves to the next position and starts the purge. Immediately after that, it begins to "print" those two lines; the movement in the X, Y, and Z axes is done but the filament keeps retracting until it's completely out of the Bowden tube.

This is the code:

; filament change
M83 ; set E axis to relative mode
G1 E-5 F900 ; retract filament 5mm
G0 X200 Y200 Z20 ; move to safe place
M25 ; pause print, change filament
G1 E5 F900 ; purge filament
M82 ; restore E axis to absolute mode
M25 ; pause print to clear purge
G1 X180 Y180 Z0.3 F5000.0 ; Move to start position
G1 X180 Y20.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X180.4 Y20.0 Z0.3 F5000.0 ; Move to side a little
G1 X180.4 Y180 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
; filament change end

I truly have no idea why the printer is behaving like that. Any clue will be greatly appreciated!

Additional information:

After serveral tries I came up to this code which lead to the results shown in the pictures. Why is this happening?

; filament change
;M83 ; set E axis to relative mode
G1 E-400 F900 ; retract filament out of Bowden tube
G0 X200 Y200 Z20 ; move to safe place
M25 ; pause print, change filament
;M82 ; restore E axis to absolute mode
G1 E3 F900 ; purge filament
M25 ; pause print to clear purge
;M109 R200 ; continue when nozzle temp is 200
G1 X180 Y180 Z0.3 F5000.0 ; Move to start position
G1 X180 Y20.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X180.4 Y20.0 Z0.3 F5000.0 ; Move to side a little
G1 X180.4 Y180 Z0.3 F1500.0 E30 ; Draw the second line
;G92 E0 ; Reset Extruder
; filament change end

; next auto Generated line G0 X99.098 Y117.198 Z2.6 ; valor original Z = 2.1 ;M204 S500 M204 P500 T500

M205 X20 Y20 ;TYPE:WALL-OUTER ; rest of the code

The results:

enter image description here

enter image description here

PS: I am trying to print some text. Sorry I didn't realize to tell before.

0scar
  • 37,708
  • 12
  • 68
  • 156
julio
  • 155
  • 7

1 Answers1

3

Your printer performs exactly how you programmed it to do.

; filament change
M83 ; set E axis to relative mode

Sets the printer in relative mode, implying that you only specify the movements relative to the last position.

G1 E-5 F900 ; retract filament 5 mm

Okay, the filament retracts only 5 mm, this implies you need to "yank out" the filament yourself to change to another color at M25

While still in relative mode,

G0 X200 Y200 Z20

Doesn't make sense, that looks like an absolute movement! It's understandable what is meant here, the head needs to be parked in a safe place. This would be better done by moving the X and Y absolute, and move the Z relative (e.g. increase 5 mm), but it is assumed that this code cannot be executed as this may lead to a position outside the bed (unless the nozzle was close to the origin), so this is an incorrect statement.

M25 ; pause print, change filament

While parked at an undefined position (may not have moved as this can be outside the print bed region), you can now change the filament manually. You see in your images that it indeed did not move, the nozzle stayed at the last printing position.

So, with a new color manually fed, let's prime the hotend; you attempt to extrude a blob of 5 mm (on top of you print):

G1 E5 F900 ; purge filament

Now comes the tricky part, you restore to absolute movement, so all movement is in absolute coordinates:

M82 ; restore E axis to absolute mode

The blob is dangling from the hotend, so a second pause is initiated:

M25 ; pause print to clear purge

We see a move to an initial position for purge line start:

G1 X180 Y180 Z0.3 F5000.0 ; Move to start position

And we finally arrive at the mistake, remember that the printer is in absolute mode, a statement as:

G1 X180 Y20.0 Z0.3 F1500.0 E15 ; Draw the first line

puts you extruder (E value) at 15 mm!

If the E value was large before filament change started, this effectively means that the extruder retracts until the value reaches 15 mm.

That is why the extruder retracts. This filament change G-code is therefore not working correctly.

It is essential to keep track of when to use relative or absolute positioning, the first code has this mixed up, the second isn't that better either.

0scar
  • 37,708
  • 12
  • 68
  • 156