A dumb problem with bed leveling when printing nylon and a solution
So, I wanted to finally start printing with Nylon and bought a Prusa PA bed plate and some PA GF filament. I wasted a LOT of hours... LFMF
The problem was, bed leveling would often fail on some parts of the bed and always on others. I tried everything from cleaning to calibration to trying to start the print with no filament (to prevent ooze being a factor). Nothing helped.
Then I simply switched the plate to regular PEI after a failed leveling and it ran normally. Put the PA plate back in, fail again.
It seemed obvious that the PA bed plate was faulty in some way, so I started a chat with support. After waiting for an hour I had to explain everything three times, make them a video of the PA and then PEI plate leveling, and explain everything three times again. All this to learn three things:
1. Leveling fails when the probe hits something soft. Normally this would be filament ooze.
2. As soon as you print on a plate, you are on your own; forget any kind of warranty on a 100€ bed plate 🙄.
3. There is no way a plate could cause this, no sir, it's impossible.
So I got to thinking some more, and then it hit me—Prusament PA CF runs really hot, at 280°C, and the printer runs on high temp during leveling. And I had these nozzle marks on the plate after leveling. What if the PA plate material gets softer when the really hot nozzle touches it? The firmware interprets this as ooze and does a nozzle cleaning cycle. So I simply reduced the nozzle temp to 170 after a failed leveling and retried. It almost passed, so I lowered it to 90 (same as bed) and it passed immediately.
So, if you are printing nylon on a Prusa PA bed plate, you have to reduce the tool temp a lot before leveling. You can do this by inserting
M109 S90
before the
M107 ; turn off the fan ; MBL
lines in startup gcode. This will cool down the tool before leveling and make the leveling work with a Prusa PA plate.
RE:
So I dug some more and found the starting nozzle temp setting in the startup gcode under the line:
G29 G ; absorb heat
There you can set up the desired temp for nozzle cleaning and leveling, just add a separate entry for PA (it's combined with PC by default) and change the value to the one you want:
M109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "PA") ? 200 : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp
This would be the proper way to do it, I guess.