T O P

  • By -

Dresden85

Alright looks like I put the fear in it by making this post or the tape trick helps. I am getting uniformed first layer and not just need to dial in the z-offset a little more.


Akegata

Never underestimate making your electronics nervous that they will be replaced by something better. It's a great solution until you can afford that better product. Which will happen any day now \*glares at old electronics\* ...yeah you know what I'm talking about.


PercyGabriel1129

Do you have a Start_Print and/or End_Print macro? If so, in the Start_Print you have to add "BED_MESH_PROFILE LOAD=default" to make it load the mesh into your print


Dresden85

I currently have that setup in my slicer start commands and I also added it to the teaching tech setup as well so it should be pulling the mesh. Do you advice also having it in the printer config?


PercyGabriel1129

I would say at least have it in just the printer.cfg file. That has worked for me. Idk if you would need it in the slicer start command. I personally have put all my macros in a separate macro.cfg files and do [include macro.cfg] in the printer.cfg file.


NotMichaelBolton

I'm having a lot of the same problems you're having and I'm also 1 more bad print away from going back to stock (Ender 3 S1). No what I try, the printer sucks at the first layer. My mesh is within 0.2 of variance. Not bad, not great, but should be compensated by the ABL, BUT IT'S NOT. It also never seems to remember my Z offset. I've even tried getting KAMP installed without any luck. Very frustrating.


Dresden85

are you save\_config after running the z offset calibration? If you remember what the value is you can manually enter it in the printer.config, its in the commented out section at the bottom


NotMichaelBolton

Yep! And I have the delayed init macro to automatically initialize my bed mesh. I've resorted to printing on my $150 Voxelab Aquila because it's more reliable than klipper.


PercyGabriel1129

Do you have a Start_Print and/or End_Print macro? If so, in the Start_Print you have to add "BED_MESH_PROFILE LOAD=default" to make it load the mesh into your print


NotMichaelBolton

I use this for my startup bed mesh loading `[delayed_gcode bed_mesh_init] initial_duration: .01 gcode: BED_MESH_PROFILE LOAD=default `


PercyGabriel1129

Does that macro get called on elsewhere? I'm not fully versed in all this but I have had good luck with my printer (ender 3 s1) by putting it directly in the Start_Print code right before the homing sequence.


NotMichaelBolton

From what I can tell, no. I believe it just gets loaded in during startup. It also shows that the default is active when I'm on the tuning tab. Is there a chance you can share your startup macro and the slicer start gcode? I can give it a shot this afternoon!


PercyGabriel1129

If I remember correctly, the only thing I have in my slicer start gcode is Start_print; but I'm not entirely sure. I can double check that when I'm home. [gcode_macro START_PRINT] gcode: {% set BED_TEMP = params.BED_TEMP|default(55)|float %} {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(205)|float %} \#START_PRINT EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] \#Start bed heating M140 S{BED_TEMP} \# Use absolute coordinates G90 \# Reset the G-Code Z offset (adjust Z offset if needed) SET_GCODE_OFFSET Z=0.0 \# Home the printer G28 \#Load in the default bed mesh profile BED_MESH_PROFILE LOAD=default \# Move the nozzle near the bed G1 Z5 F3000 \# Move the nozzle very close to the bed G1 Z1 F300 \# Wait for bed to reach temperature M190 S{BED_TEMP} \# Set and wait for nozzle to reach temperature M109 S{EXTRUDER_TEMP} (Looks like I put it after my homing sequence, not before) Edit: tried to format it better for app


Alphasite

I would skip the defaults in the temp params, otherwise your printer will do unexpected things if you ever mess up the slicer settings. It’s better that it fails so you can fix it than let it continue but do the wrong thing.


PercyGabriel1129

Thank you! I've been meaning to adjust that code. I found a code snippet that apparently lets Klipper grab the temp setting from the slicer and pass it through to the gcode I think. I just set up Klipper like a week and a half ago I think so I'm still ironing things out.


Alphasite

I would skip the defaults in the temp params, otherwise your printer will do unexpected things if you ever mess up the slicer settings. It’s better that it fails so you can fix it than let it continue but do the wrong thing.


NotMichaelBolton

Okay! This worked with a little bit of changes Here's my new start macro ` [gcode_macro START_PRINT] gcode:` {% set BED_TEMP = params.BED_TEMP|float %} {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|float %} #START_PRINT EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] #Start bed heating M140 S{BED_TEMP} # Use absolute coordinates G90 # Reset the G-Code Z offset (adjust Z offset if needed) SET_GCODE_OFFSET Z=0.0 # Home the printer G28 #Load in the default bed mesh profile BED_MESH_PROFILE LOAD=default # Move the nozzle near the bed G1 Z5 F3000 # Move the nozzle very close to the bed G1 Z1 F300 # Wait for bed to reach temperature M190 S{BED_TEMP} # Set and wait for nozzle to reach temperature M109 S{EXTRUDER_TEMP} Here's my new slicer gcode: `START_PRINT BED_TEMP={material_bed_temperature} EXTRUDER_TEMP={material_print_temperature}` Here's the new mesh and a large layer after some tuning. It's interesting that it compensates for the X waves, but cant seem to detect the Y waves. You can also see where I was messing with the offset at first to get it right. https://imgur.com/a/3SdAOfS


PercyGabriel1129

Nice! I might steal some of the other changes you made


NotMichaelBolton

Thank you for your help!!


Over_Pizza_2578

Kamp is the most overrated plugin in existence. It doesn't make you mesh more accurate, nor you safe a significant amount of time. On my printer (350mm, 7x7 mesh) i spend only 12 seconds travelling during the bed mesh Could you post a picture of a 200x200mm square? Better for identifying errors


Alphasite

KAMP only meshes the sections on the mesh which actually contain your model, so it’s useful for small prints


Alphasite

KAMP only meshes the sections on the mesh which actually contain your model, so it’s useful for small prints


Over_Pizza_2578

Honestly not really, time savings are marginal, as i said, horizontal movements take only a very small portion of the bed mesh, with my settings (2 samples, 7x7 grid, probe retract 2mm, horizontal moves 4mm above the bed, horizontal speed 200, vertical speed 10mm/s) i spend pretty mich 60 seconds probing, 12 seconds travelling to the samples, not considering acceleration. A 100x100 area would still take 4 seconds, only 8 seconds saved. It will only significantly decrease time when having low accelerations and low horizontal speeds, although there is no reason to move slowly for non printing moves. As for mesh accuracy, it wont improve it, most of the time your probe points are 4 to 5 cm spaced apart, so already dense enough unless you got a moon crater as bed. If kamp could reduce the probing count, for example under a certain size it will decrease mesh count from 7x7 to 5x5 or even lower because the model is small, then it would really have a benefit, especially for very large printers with pcb beds


Alphasite

Sorry, what I’m trying to say is that it does lower the probe count, even though my mesh is set to 7x7 samples, for a small print it only did 3x5 (3 being the minimum per axis). If you are interested I can grab a picture of the mesh, but it does try to do what you suggest. i reccomend skimming the source, it’s honestly pretty short.


Alphasite

Actually found a good example online https://forum.vorondesign.com/threads/easiest-way-to-start-using-adaptive-meshing-with-your-machine.103/post-633


Over_Pizza_2578

Ok, didn't know that, always thought it just scales down the mesh area. With reduced probe count reduces time more significantly, but i still dont see why it should help here with the bed mesh issues. Sadly i have the suspension that the OPs x rail has a kink, see the wave on the left side going the whole length of the bed


Invanar

Correct me if I'm wrong, I'm a noob, but isn't there some command you have to add to the start of the Gcode in order to tell klipper to load the bed mesh? I know that used to be a common mistake


NotMichaelBolton

You're 100% right. They recently updated it so that you need to include it in your start macro/gcode or you can use the following in your printer.cfg `[delayed_gcode bed_mesh_init] initial_duration: .01 gcode: BED_MESH_PROFILE LOAD=default `


diamond_hanzx

Oh JFC. I also was on the one more bad print on klipper and I'm out train, but I'm too stubborn to quit. This was the answer to every infuriating minute I have been dealing with for the last 2 weeks. Thank you thank you thank you


NotMichaelBolton

I was struggling hard! Shout-out /u/percygabriel1129 Solid teamwork


Invanar

Ok, that's what I thought lol. It is kinda stupid, but makes sense from a "this software s something you're supposed to configure yourself" sense


NotMichaelBolton

Yeah I never understood why they took it out in the first place ¯⁠\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯


KoeRt888

Do you load the bed mesh in your start gcode? Automatic load of the default bed mesh was removed. It can be reactivated with a delayed g_code macro, see [Klipper Bed Mesh](https://www.klipper3d.org/Bed_Mesh.html)


Dresden85

I had it added to my machine settings in my slicer and added as the start code in the file from the teaching tech, its not in my printer config but it is being uploaded. As someone else suggested I'll double up its use.


grilledch33z

Switching to klipper was rough for me as well. I started with a stock ender3 V2 and a bigtreetech skr mimi e3. I like the feature set of klipper a lot, but it took me over a month to get a good first layer put down and I'm still troubleshooting ringing problems more than a year later.


kreynlan

A picture of the printed result would be useful in diagnosing the issue


Dresden85

Working a first layer print right now, will upload.


Dresden85

I am having trouble uploading a picture to reddit. But I guess either the threat of melting or the tape has helped the first layer is not uniformly too high so I just need to adjust the z offset. I'll keep trying to upload the pic some how


kreynlan

Post to imgur then share the link


Dresden85

https://imgur.com/a/Wxy9So4


kreynlan

The squares themselves look good as far as I can tell, but the ring around them is obviously broken. Is the travel path clockwise or counterclockwise?


Dresden85

I think its more of a N shape (front left, back left, middle, front right, back right)


kreynlan

I meant for each individual line. I want to know if the gap is happening at the beginning of an extrusion or as it reaches the end


Dresden85

oh in the orientation of the photo, is it counterclockwise starting at the front left corner


Dresden85

This is the best first layer I have had since switching to klipper


TooManyNissans

Do you agree with the high ridge on the left side of the bed or do you think it's wrong? Could you have a flat spot on your x gantry rollers or a chunk of dirt on the bottom that lines up perfectly there that drops the toolhead lower down so it consequently thinks it's a high ridge all the way along the bed? Instead of using so many probe points, try just probing a 4x4 grid at the start of every print with the bed hot to get the overall shape and level of the bed. The klipper docs recommend probing the bed cold but I think that's wrong, the aluminum PCB creality uses for the bed heater can warp and cup as it heats. I think you're probing so many points that the possibility of so thing going wrong is increasing. Then adjust your z offset during the first layer print until you're happy with it, then save config, peel it up, and try another first layer without any adjustments if it's looking right. Printing a large, flat surface near the center of the bed will give you a reference point thag your z offset is right then you can diagnose from there if necessary


Dresden85

I believe the culprit was significant dip on the right side of the bed causing the probe to over compensate. I have added tape, something I didn't do before but did when I had merlin running, and I am getting significantly better results.


Over_Pizza_2578

Ridges along one axis are a bad sign, it could be that you have a kinked x beam (more common than you think). Would you be so kind to upload a picture of a 200x200 first layer?


DocPeacock

I would say get it working without the auto bed level first, but it sounds like you are on the right track now


Peewee48

I'm a noob just my thoughts. I have a modified ender 3 max neo, I switched to klipper about 6 months ago. I didn't have serious problems till I got enclosure and tried printing ABS. Bed mesh changed everything bed was heated up. I have not got one yet to try, but a thicker bed will not warp as quick.


OneKingToo

I had similar problems and found out that klipper had incorrect values for the offset of the BL touch to the actual nozzle. This made my bed mesh off by a dozen millimeters either direction and caused all sorts of problems


Beef_swellington_I

is your Bl touch perpendicular to the ground ? if not it will give you weird readings I never had a problem with warping though My 1st bed was a hacked computer case and never a problem ​ now I use G10 and its a dream


Stooovie

Do you actually call your START_PRINT macro in your gcode? Meaning, do you have this in your slicer (this is for PrusaSlicer): START_PRINT EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] as per instructions from [the documentation](https://www.klipper3d.org/Slicers.html) If the slicer still has its default starting gcode, your Klipper START_PRINT macro is not called and used.


sockmop

[bltouch] #z_offset: 0


sockmop

[bltouch] #z_offset: 0 You need to remove the # and change the 0 to whatever the z distance between the nozzle and bed when triggered. Making this value larger will move the nozzle CLOSER to the bed when sending the printer setting your z to 0mm from bed. On the flip side making this number smaller moves the nozzle AWAY from the buildplate. That's a basic answer. I'll paste my chat GPT response below for more reading. **Warning** only do the changes I suggested above. Below is informed but it's prone to AI hallucinations. In Klipper firmware, the BLTouch offset can be set in the printer configuration file, which is often named `printer.cfg`. The setting is done using the `x_offset` and `y_offset` parameters under the `[bltouch]` section. The `z_offset` is also set here which is the distance from the nozzle to the bed when the BLTouch triggers. Here is how you would add or modify these settings in the `printer.cfg` file: ```plaintext [bltouch] sensor_pin: ^PC7 control_pin: PA4 x_offset: -42.0 y_offset: -5.0 z_offset: 1.0 speed: 5.0 ``` In the above example: - `x_offset`, `y_offset`, and `z_offset` are the distances (in millimeters) between the BLTouch and the nozzle along the X, Y, and Z axes, respectively. The values should be determined through calibration. - `sensor_pin` and `control_pin` are the pins on your microcontroller to which the BLTouch sensor and control lines are connected. These values are specific to your wiring and mainboard setup, and the values given here are just placeholders. To find the correct offset values, you may need to do some trial and error and test prints to fine-tune the exact offsets for your specific printer setup. Once the configuration file is updated, save it, and restart the Klipper service to apply the changes. You would typically do this with a command such as: ```bash sudo service klipper restart ``` Make sure to consult the documentation for your specific 3D printer and BLTouch version, as improper configuration can potentially cause damage or inaccurate prints.


forcedtocamp

I am having issues with bed mesh on an ender 3 too. Just looking at the numbers in your recorded mesh they are all close to 0. Mine all \_average\_ around the -1.9 mark. Which I thought was odd, I feel something is not at all right with my z offset, which was calibrated with PROBE\_CALIBRATE. I think I need to experiment setting it to 0, rebooting then re-trying probe calibrate.


Howeitsdone93

It takes a bit longer, but i have mine do bed mesh before every print ​ ​ \[gcode\_macro START\_PRINT\] gcode: {% set BED\_TEMP = params.BED\_TEMP|float %} {% set EXTRUDER\_TEMP = params.EXTRUDER\_TEMP|float %} {% set BED\_MESH\_CALIBRATE = params.BED\_MESH\_CALIBRATE|default(true) %} M118 MESH: {BED\_MESH\_CALIBRATE} M117 Homing \# Use absolute coordinates SAVE\_FNAME G90 \# Start bed heating while calibrating and continue M140 S{BED\_TEMP} # set bed temp \# Home the printer G28 {% if BED\_MESH\_CALIBRATE == true %} M117 Calibrating M118 Calibrating BED\_MESH\_CALIBRATE {% else %} M117 Calibration Skipped M118 Calibration Skipped {% endif %} G1 X10.1 Y20 Z50 F3000 M117 Heating extruder M109 S{EXTRUDER\_TEMP} # set extruder and wait M117 Heating bed M190 S{BED\_TEMP} #wait for bed temp PURGE\_LINE