knutwurst / Marlin-2-0-x-Anycubic-i3-MEGA-S

Marlin 2.0.x Version for Anycubic i3 MEGA M/S/P/X/CHIRON and 4MAX with Anycubic TFT or the "new" DGUS Clone TFT - Now also with BLTouch!
GNU General Public License v3.0
788 stars 187 forks source link

Mega S not using Manual Mesh Leveling #483

Closed claversky closed 5 months ago

claversky commented 1 year ago

Bug Description

Hi everyone! Since my Mega S has a warped bed in the middle and I'm unable to get a proper first layer, I did found that by using this firmware and mesh bed leveling option would allow me to correct this. So I did flash the firmware (I have a stock Mega S with the DGUS Display so I installed this firmware: MEGA_S_DGUS_v1.5.2.hex, Load EEPROM and Saved Settings. Then I used the Easy Leveling to get the 4 corners aligned as best as I could and then started the Mesh Leveling, saving EEPROM as well. After restarting, the mesh has been correctly saved:

SENDING:G29 Mesh Bed Leveling OFF 5x5 mesh. Z offset: 0.00000 Measured points: 0 1 2 3 4 0 +0.00000 -0.14000 -0.20000 -0.10000 +0.06000 1 -0.06000 -0.14000 -0.12000 -0.08000 +0.04000 2 -0.10000 -0.12000 -0.10000 -0.02000 +0.06000 3 -0.08000 +0.00000 +0.00000 +0.00000 +0.08000 4 +0.14000 +0.12000 +0.10000 +0.10000 +0.00000

Also, added the Start G-Code provided here: G21 ; metric values G90 ; absolute positioning M82 ; set extruder to absolute mode M107 ; start with the fan off M190 S{material_bed_temperature_layer_0} ; preheat and wait for bed M109 S{material_print_temperature_layer_0} ; preheat and wait for hotend M300 S1000 P500 ; BEEP heating done G28 X0 Y10 Z0 ; move X/Y to min endstop M420 S1 G0 Z0.15 ; lift nozzle a bit G92 E0 ; zero the extruded length G1 X50 E25 F500 ; Extrude 25mm of filament in a 5cm line. G92 E0 ; zero the extruded length again G1 E-2 F500 ; Retract a little G1 Y120 F4000 ; Quickly wipe away from the filament line

After many attempts to get it to work properly, I'm starting now to assume that when my printer home by using the Z Endswitches, it doesn't take in mind the mesh bed leveling (even tough apparently everything is setup correctly) since the printer still uses apparently the Easy Leveling and doesn't go beyond the Endstop to correct for the warped bed, which causes not being able to get a first layer. I already tried to reflash everything, adding the printer back and settings in Cura, tried inclusively another Slicer but all makes me believe that while printing, the printer isn't using the mesh bed level, since I was looking and there's no correction whatsoever in the Z axis (always maintain at the same level along a print). I'm open to any suggestions and troubleshooting offered, since I searched everywhere and I'm unable to understand really how to solve this. BTW, printing with SD Card or directly with the printer connect with USB will lead to the same sad outcome.

Steps to Reproduce

  1. Confirm Cura Settings and start g-code to ensure that mesh bed leveling will be enabled when printing
  2. Use the 4 point Easy Level to make the nozzle close enough to the bed
  3. Create the Mesh Bed Level with the 25 points to ensure that there's a slight resistance between the nozzle and piece of paper
  4. Save EEPROM
  5. Restart Printer
  6. Check and confirm that the mesh data was saved
  7. Try to print again

Expected behavior:** Mesh Bed Leveling being used to get a proper first layer adhesion

Actual behavior: Mesh Bed Leveling is not being used, which causes to PLA to not adhere properly to the Bed

Either way and since I'm not really sure if the problem could be directly related to the firmware or not, I really wanted to thank you for making this possible to either me or everyone in the community, I'm just kindly requesting for help since for sure you have way more experience in this than me and I've exhausted every option I can think of to resolve this situation (the only other way around will actually to buy a new printer :P)

Thank you!

Hereux commented 1 year ago

I've had the same thing for months now, but would like to print again. Did you get it repaired already?

claversky commented 1 year ago

I put a PEI on top of a glass bed and level the Bed literally until the paper barely moves so it squishes the PLA and it’s kinda resolved but in terms of having the manual mesh leveling not yet. Still have some issues on some parts of the bed but I’m limiting prints to the parts that I know Will work properly.

TheRealSaeba commented 1 year ago

Inreresting. This seems to be the same problem I am currently confronted with.

nCoderGit commented 1 year ago

You might need to specify the index of the mesh you want to load.

Try M420 L0 S1 (instead of just M420 S1) in your Start G-Code.

If it still doesn't work, my guess is that there might be another G28 call somewhere and your fw is compiled without ENABLE_LEVELING_AFTER_G28 or RESTORE_LEVELING_AFTER_G28. (G28 (Auto Home) disables bed leveling by default)

mlewis-everley commented 1 year ago

@claversky Out of curiosity, how do you know the mesh is not being used? I usually check by putting a finger on one of the Z lead screws while the printer is putting down a first layer. If the screw is turning (or more likely just vibrating ever so slightly) then that should mean the mesh is being applied and your issue might be something else.

Also, I don't know if it makes a difference, but instead of using the following:

G28 X0 Y10 Z0 ; move X/Y to min endstop
M420 S1

I use this:

; Home head and load mesh
G28
M420 S1

; Park nozzle 
G1 Z0.2
G1 Y10
TheRealSaeba commented 1 year ago

@claversky Out of curiosity, how do you know the mesh is not being used? [...]

I do it similarly. I have attached a 3 cm strip of adhesive film to the lead screw in order to be able to see tiny movements better

This is part of my start-code: G28 X0 Y10 Z0
M420 S1 Z2.0

Somehow, it works now. I think it was important to perform "Save EEPROM" in the special menu after performing the manual bed levelling. Otherweise the values would only exist until the next reset.

claversky commented 1 year ago

Hey Everyone and thank you for all the replies!

I will try that @nCoderGit thank you for the help.

In terms of making sure that the mesh bed leveling was not working, I basically created a mesh but with opposite values (in some instances making the nozzle way higher from the bed and sometimes lower) and I realized that the nozzle will consistently just maintain the height, without detecting any changes.

Thanks again and I will keep you guys updated whenever I try things out!

mlewis-everley commented 1 year ago

Somehow, it works now. I think it was important to perform "Save EEPROM" in the special menu after performing the manual bed levelling. Otherweise the values would only exist until the next reset.

Yes, you need to save to EEPROM after performing mesh leveling. To my understanding, the mesh is wiped from memory when you home (G28) unless you have this disabled in firmware. If this is the case, I think the mesh data needs to be restored from the EEPROM when a M420 is called (thought I could be wrong).