-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
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
G35/ASSISTED_TRAMMING always fails on point 1 #20412
Comments
And I'll admit in advance, I probably have a configuration issue, in which the bug is a missing safety check, or there's actually something wrong in the tramming code. 🤔 |
I ran into this problem too. I think the relevance of PROBING_MARGIN should be mentioned in documentation, or perhaps PROBING_MARGIN should be ignored for tramming. |
@Pyro-Fox can you confirm what @hamster65 says? @MarlinFirmware/docs-maintainers |
Ditto, same experience here. Nozzle_XY gets adjusted to Probe_XY with the probe offsets, this results in a probe destination XY, which is subject to the MIN and MAX range of the bed, and also the PROBE_MARGIN as @hamster65 said. To see the problem, turn on debug levelling and watch for the "destination cannot be reached" error message. |
Instead of checking if probe points can be reached during runtime, wouldn't a sanity check with a comprehensive error message work? It would save space and prevent users from running into that issue. I set probe_margin to 30 so that my bltouch does not collide with the bed clamps. At the same time, I'd like tramming to probe the outer edges of the bed, as close to the screws as possible. This is even outside of my prinable area. So I don't think tramming should be restricted by probe_margin or the bed size. |
If I have to account for
I know the probe can't reach the spots based on my offsets ( |
Any other ideas? |
Also, I noticed the order of positions defined in Configuration_adv.h
Serial output (minus "busy: processing" messages)
|
I guess it starts counting at zero, so "failed at point 1" means the second point. I found the sentence "Define positions for probing points, use the hotend as reference not the sensor." confusing as well. Of course it probes the coordinates specified by TRAMMING_POINT_XY and of course it has to move the probe to this coordinates by adding the probe offsets. To rule out Probe_margin, you could try setting that to a negative value. |
Hrmmmmmmmmmm. |
OK. It is
Is this something that could be added to sanity check? |
@Pyro-Fox I know what I saw, @hamster65 I agree a sanitycheck would be a good idea. In order for the corner points to be in a symmetric pattern, the formula for recommended points is a nice task, also.
|
I was unaware of needing |
Out of curiosity, can anyone provide insight into why with |
I have a local implementation of a sanity check for G35 points. I need to do some cleanup on it but can post something soon. This will catch initial configuration errors, but will not help if you store a different probe offset into the EEPROM. @FanDjango, in your assessment, what do you think this needs to be able to close the issue. Is just the sanity check enough? |
This issue is not a bug. The OP has succeeded in setting 4 points fo G35. So the issue itself can be closed. BUT A sanity check will help towards preventing further such issues, albeit not totally. BECAUSE All over the place, where probing points (X, Y) can be specified, the methodology is different to a degree or rather, it is not transparent and consistent to the user. The repeated questions in support channels re. XMIN/YMIN, MARGINS and INSETS, and BED_SIZE_XY together with PROBE_OFFSET_XY for probe-reachability show that there is room for improvement. Since the maximum probe-reachable area can be easily calculated, would not it be nice if Marlin could inform the user of the four outermost places on the bed that the probe can reach? I lifted the following code from
Something very like this should be common code for all users of G29 (ABL) generates a mesh automagically using similar maths. It is of course historic that each routine cooks it own soup. If it can be done in the preprocessor without generating code, so much the better. But since the preprocessor is so limited, how about a small python "config assistant" as a pre extra script, that scans for the above X/Y limits, Offsets, Bed Size and so on and makes the calculations, informs the user and maybe terminates. |
The following output is produced by a quick and dirty python pre-check:
and here is the code to produce that:
|
My implementation that I will post soon transforms the same probe.h helpers used at runtime into constexpr functions that I can use in build-time static_asserts. That will ensure the same rules are used everywhere. That provides some imperfect protection, since changing offsets using M851 would invalidate those checks. We have for a long time needed better messaging when a probe fails. Maybe it is time to add a more descriptive message as well. Specifically when a point is not reachable. I personally won’t be adding anything right now for auto point selection or a scripted helper. I’m not saying they’re bad ideas, it’s just further than I feel like going with it. |
@sjasonsmith full ack. Just wanted to add this to the long range to-do list. |
You can probably tag this as a feature request then if that makes tracking easier. You are correct, I was able to resolve this myself once I understood the math. |
I was hoping to post the build-time sanity checks today, but I realized my solution increased firmware size on AVR by about 600 bytes. I have reworked it to eliminate this increase, but the solution seems a little messier. I need to spend a little more time with it and will get it posted as soon as possible. |
This issue has had no activity in the last 30 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 7 days. |
I am trying to configure tramming for my Ender 3 v2 with a BL Touch. I have it working with the default settings, but the probe points are off from where the bed screws are located (approx 33mm in from the edges) The probe is offset by -43,-8 to the left/front, so even with a right probe margin of 0, it won't accept x probe positions over the bed screws. |
This Issue Queue is for Marlin bug reports and development-related issues, and we prefer not to handle user-support questions here. (As noted on this page.) For best results getting help with configuration and troubleshooting, please use the following resources:
After seeking help from the community, if the consensus points to a bug in Marlin, then you should post a bug report. |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Bug Description
G35
/ASSISTED_TRAMMING
always fails on point 1. Additionally, if I uncomment and try to useASSISTED_TRAMMING_WIZARD
, it can only probeTRAMMING_POINT_NAME_1
. If I try probe any of the other points, it will report the last measurements as gibberish on my LCD, and not move. Even if I try to measure the other points as my first operation from entering the wizard, it will just move to the default Z height and sit there.Configuration Files
MarlinConfig.zip
Steps to Reproduce
G35
via serial, or select "Assisted Tramming" from the LCD.Expected behavior:
Honestly, I don't know. I'm just trying to use a new feature.
Actual behavior:
(see Bug Description)
Additional Information
BTW, I'm really just trying to improve my overall hot bed replacement and UBL probing process. I figure if I can get the corners level quickly with auto-tramming, then
G29 P1
is more likely to be in the ballpark on the first try. Yes, my 12x12 grid +MULTIPLE_PROBING 3
is probably unnecessary, but damnit... it makes printing on clean glass so great, even if building the mesh takes about 30 minutes. (Seriously, if someone could add an M-code to controlGRID_MAX_POINTS
, that would solve my terrible workflow problems too 😅).Here's the G-code output from
G35
and my EEPROM settings.The text was updated successfully, but these errors were encountered: