Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature probe level corner #1742

Merged
merged 343 commits into from
Apr 7, 2021

Conversation

Cal1sto
Copy link
Contributor

@Cal1sto Cal1sto commented Mar 18, 2021

Requirements

New Feature request to have the Marlin function of Level Corner on the TFT with more function and for best leveling experience with a probe.

Description

The Level corner function added in ABL menu give the potentiality to quick level the bed by measuring with the probe the 4 corner and adjust it, the tested point could be adjusted like the manual leveling

Benefits

Easy and very quick bed leveling could be performed with this function and usefull for bed level check.

Function

Level corner (L corner): give you the following function , it will probe all the 4 corners , display the Z value measured on each corner, then you could adjust each corner individualy and you could use your own tolerance based on the probe precision that you could get with the M48 . You could scan all corner again and again or check and adjust individualy the 4 corners in cross adjustement or linear adjustement manually. Like the manual leveling function you have also the possibility to set the corner position test, this is limited already with a minimum value set depending of the probe offset to the nozzle to reduce the risk the printing head is not going outside the X and Y bed area, set a reasonable lowest value to measure nearest the 4 corners leveling screw of the bed (default value will be set automatically on the lowest possible offset based on the probe offset to be accurate and optimal).

Implements / Resolves

resolves #1646
resolves #1102
resolves #549

@oldman4U
Copy link
Contributor

Nice👍🏻

TFT/src/User/API/coordinate.c Show resolved Hide resolved
TFT/src/User/API/coordinate.c Outdated Show resolved Hide resolved
TFT/src/User/API/coordinate.h Show resolved Hide resolved
TFT/src/User/API/menu.c Outdated Show resolved Hide resolved
TFT/src/User/API/menu.h Outdated Show resolved Hide resolved
TFT/src/User/API/parseACK.c Outdated Show resolved Hide resolved
TFT/src/User/API/parseACK.c Outdated Show resolved Hide resolved
TFT/src/User/Configuration.h Outdated Show resolved Hide resolved
TFT/src/User/Menu/BedLevelingLayer2.c Outdated Show resolved Hide resolved
platformio.ini Outdated Show resolved Hide resolved
@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 26, 2021

Added after G34 (Z-Alignment) the call of M18 S0 X Y Z , to reduce the risk when Marlin is not compiled with no timeout on the stepper that the Axes could move.

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 26, 2021

Added value refresh that was missing after setting new corner offset point.

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 26, 2021

So nothing else to add there, is everything so far tested and ready , enjoy

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 26, 2021

@bigtreetech So far ready

To secure coordinate initialization
@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 30, 2021

Last fine tuning to force coordinate init on going into "L Corner", to reduce risk because the coordinateIsKnown() function is not accurate when motor are off over Marlin or other function.

@digant73
Copy link
Contributor

@Cal1sto if I can suggest a layout, I would move:

  • the "start" button on the left of "back" button
  • the "M48" button above "back" button
  • the "distance" button" on the left of the new "M48" position (so on top at 3rd position from left)
    That layout will be more similar to other menus (e.g. manual leveling, MBL etc...)

Reordered the icons
@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 30, 2021

@digant73 Yes good idea it is done

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 30, 2021

We are testing, the last change , is not validated yet

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Mar 30, 2021

Last menu function reordering is tested and worked, like expected

@ETE-Design
Copy link

ETE-Design commented Apr 1, 2021

@Cal1sto There seems to be 2 different ways to do the messuring in Marlin, one mesure each point one time and give the result at the end... The other messure 1 point and set it to be the "Zero" Point, move to the next, mesure it and show the result, then you adjust it, then it messure again, you can keep on messure and adjust each point before go to the next, that way you can adjust on the go to get best result... Also if using solution two would it be possible to show "live" messurement if using an inductive / capasitive sensor instead of an BLTouch...

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Apr 1, 2021

@ETE-Design The idea of the current implementation is to get from the mesured Z = 0 initialized with the Home (G28), the corner level , and adjust each on arround 0.01 precision, what is mostly enought . To be generic this implementation should work with all the probe able to give good accurency (see M48 function icon). So the solution provided here take the zero Z point on middle and display the difference on each corner. About inductive/capasitive sensor this should work if the accurency (precision) of the probe is enought, for this you could check it by pressing the M48 icons, what do you mean with live messurement, the live messurement is done when you press the start button.

@ETE-Design
Copy link

@Cal1sto So to understand it right it stop at each corner and let you level it before it goes to the next corner? About "Live" Messurement I was thinking about letting the sensor stand over one corner when you level it, then let the Inductive / Capasitive sensor messure all the time since it dosen't need to raise / lower the probe to messure as long as the bed is close enough it will be possible to see the exact messurement all the time... This is of cause not possible with a BLTouch since the probe need to touch the bed each time to get the messurement.

@Cal1sto
Copy link
Contributor Author

Cal1sto commented Apr 1, 2021

@ETE-Design I make it generic and simple enought to all user, i do not integrate a logic analysis depending on the accurency of the probe to make this automatismus, an automatismus will be great with a motor on each screw that is yet not used on mostly printer. Therefore this version will be integrated like it is , and when you use it like i did you will be happy to have the possibility to make your bed in a better leveling state than the paper mode leveling. Try and enjoy.

@bigtreetech bigtreetech merged commit a072ce5 into bigtreetech:master Apr 7, 2021
@discip
Copy link
Contributor

discip commented Apr 27, 2021

@Cal1sto
Good evening sir,
I am somewhat confused, because I can't get this to work.
I am on the latest commit 0f464dc and no matter what I do, it does not work for me.
What exactly do I have define in Marlin or set in config.ini, to make this feature work?

thank you in advance

btw: I am running the same machine as you do! 😃👍

kind regards

jeffeb3 pushed a commit to V1EngineeringInc/BIGTREETECH-TouchScreenFirmware that referenced this pull request Nov 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
8 participants