Head collision during pause

Hi everyone,

I’ve run into a small issue with my Bambulab P1S and wanted to see if anyone else has encountered the same. I think it could potentially be fixed with a firmware update.

Here’s what happened: I was printing with PCTG and had to pause the print occasionally to clean up the nozzle, as filament would accumulate over time. When the print head was positioned directly above the excess chute, I manually moved it forward to the door area to clean it. However, while it was above the poop chute, I accidentally moved the head to the left a couple of times (from the printer door perspective). This caused the print head to crash into the frame near the motor, making the belt slip. After that, the head couldn’t align with the original print position, so I had to scrap the print halfway through.

I’m guessing re-homing the head mid-print with filament on the bed isn’t the best idea. It feels like the printer should have some kind of software limit to prevent this from happening once it’s homed.

I forgot to take a photo of it; I’ll add it today.

Has anyone had a similar experience?

Thanks!

You can add a X/Y homing call after the pause gcode so that the printer homes after you clean the nozzle.

M400 U1 ; Pause for user intervention
G28 X Y ; Home the X and Y axes in case they were upset

I did some test and found the repeatability to be well within reason.

Here is also another good thread with a very similar topic to yours.

2 Likes

Manually pausing instead of pausing at predefined layers, right?

An XYZ home? No, but you might have been able to get away with injecting an XY home via MQTT, especially if you also injected some Z hop.

Are you referring to the crash you experienced moving the head manually?

Yes manually.

I haven’t encountered MQTT until now, but if it’s something that would allow me to send G-code to a printer, then it’s exactly what I’ve been considering as a solution.

Yes, my fault, when moved manually.

First, I tried your solution from that thread. I put it into the “G-code Change Layers” section with an if condition to execute every x layers. It worked, but I noticed some extra movements. The print head would go to clean itself, then move to the front left corner (near the door), and then return back above the poop chute before resuming printing.

I experimented a bit and found that, after deleting all lines with the G-code M624 AQAAAAAAAAA=, it only performed the cleaning as I intended. However, after completing the first layer, it misaligned the second layer, but all following layers were correctly aligned from the third layer onward. This brings me to my question: what exactly does the command M624 AQAAAAAAAAA= do?
But when i remove every my custom g-code and still remove all M624 AQAAAAAAAAA=, print would end up sucessfull. What is weird because i just use this:

G1 X60 Y265 F15000 ; nozzle wipe position
G92 E0 ; zero extruder
G1 E-0.5 F300 ; retract filament
G1 X100 F5000 ; wipe right
G1 X70 F15000 ; wipe left
G1 X100 F5000 ; wipe right
G1 X70 F15000 ; wipe left
G1 X100 F5000 ; wipe right
G1 X70 F15000 ; wipe left
G1 X100 F5000 ; wipe right
G1 X70 F15000 ; wipe left
G1 X60 F5000 ; clearance

I tried using it as a pause G-code, but I didn’t realize that it would only activate during a slicer-generated pause.

I’ll definitely come back to fine-tune this solution, either as a template or during a pause. The problem, though, is that I first need to improve my nozzle cleaner, as the basic one had significant issues with PCTG.

M624 is begin object, M625 is end object. It’s used by the object skip feature. The AQAA is an encoded version of “1” in base64.

1 Like