-
Notifications
You must be signed in to change notification settings - Fork 80
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
[FR] Make "Heaters off when probing" user-configurable #106
Comments
I agree, I never had an issue with inaccurate probing on stock firmware so all it does for me is slows down the print when the nozzle needs to preheat again after probing. |
Yes, that's why two firmware builds have been released. |
Implement it for MarlinUI Implement EEPROM saving Implement gcode C001
Okay, this took the better part of the evening. Implemented in MarlinUI and DWIN touch screen, saved to EEPROM. Temporary gcode I chose to call it "Improve leveling accuracy" so people pick the right choice by default - and so they must explicitly make a choice to take the risk to make it inaccurate, and when they do that and complain we can send them this 😉 All jokes aside. This is how it is looking - and although I didn't use pink comic sans I imagine @grobux will still have a look at it. |
For me it would be totally fine to leave the heater off but while heating. But please move the nozzle a lot more up, and, even better, also to another location. Usually while probing some material will be placed on the print bed. Then, while heating, the nozzle continuously drips out some plastic. On the middle of the print bed. And there is not enough room between the nozzle or the print bed to clean both of them. |
That has already been picked up in #143
Don't set the temperatures too high when probing (leveling or homing). Can't fight physics 😉 |
You can add a 30-50mm retraction to end gcode in your slicer, after each print the filament will back a bit. The purge line and skirt are enough to prime the nozzle again and you avoid dripping and having to reheat the nozzle to swap the filament. That, or just pull it out slightly during the preheat process. This is better than moving the nozzle higher or away from the middle between the preheat and probing. When you probe, the heaters go off so if the nozzle is higher, it will take longer to reach the bed. The process is already taking painfully long time, sometimes I need to print a small 20-25minutes item and I spend half of it just waiting for things to preheat, probe and preheat again... If you retract the filament before probing, only a tiny strand of filament might drop, plenty of time between the first and second probe to grab it with a pair of long tweezers which is what I do. |
@ThisIsMyUniqueUsername Sounds reasonable, and there are a few good ideas. There is always at the beginning, cold start, coming some material out of the nozzle. Physics or not. Even at 200°C, PLA. And that is placed onto the print bed during probing. Also in the stock firmware. And while the nozzle sits directly above, waiting 20-30 seconds for the correct temperature: There is plenty of time to clean everything, but there is no room to do it. Otherwise: I like the firmware a lot, thanks @Sebazzz and the team for the hard work!!! I'm fighting other nasty problems. Two times in the last few days the printer was in an unstable state when powered up without a SD card. One it it stops feeding material. Never saw this with the stock firmware. But that is off topic here and I need to create a "steps-to-reproduce" list. |
I guess my comment was not clear, sorry. |
Exactly - to prevent oozing just us a different start gcode. |
Just for fun I ran some bed levels... Mesh with heaters on
Mesh with heaters off
Quite a significant difference! The point at (0,0) is almost a layer height different! |
There might be a different reason for it. Run it few times with and without heater and compare - the results will vary each time. Now remove the bowden tube and do the same, you'll notice that each pass is much closer to the others. I've been running it several times with and without the PTFE tube: -0.131 | -0.106 | -0.227 | -0.182 2nd pass: -0.109 | -0.118 | -0.217 | -0.186 3rd pass: -0.116 | -0.121 | -0.215 | -0.132 And now with the PTFE tube removed: 0.004 | 0.003 | -0.11 | -0.092 2nd pass: 0.002 | 0 | -0.117 | -0.087 The explanation - when the strain gauge sensitivity is set low enough to be accurate, it is affected by the PTFE tube pushing and pulling on it with different force in each mesh probe position. The hot end is attached to the flexible plate so for best results I recommend running ABL with the bowden tube pulled out. |
No, the taring is supposed to compensate with that - and it does [in my experience]. I got more or less the same results trying it multiple times. |
Perhaps I adjusted mine to be too sensitive, but I ran 5 or 6 passes with and without the tube and no other changes, the results are much more consistent without it. I've done it on glass bed, my PEI sheet seems to be a bit less consistent for some reason. |
Not a big deal anyway, with the glass surface I've done it few weeks ago and never had to touch it since. :) |
Anyone tested the actual real height with feeler gauge? |
No, but I've done a different test. It's not very scientific but I have a flat electronic kitchen scale which is quite accurate (tested with known weights) and as I was adjusting the strain gauge sensitivity I let it home on the scale few times to see the max reading. I got it down to around 130g force on 1st touch and 75-80 on the second, anything lower is way too easily triggered even by the filament weight in the ptfe tube during homing. |
I sort of understand how taring could remove the effect of any tugging on the hot end being exerted by the tube, filament, harness, etc., if those forces were always the same. I think it will still leave a random error term in the data, though, proportional to any difference in that upward force from point to point, as the tube "straightens out a bit" when the head moves from I=0, to I=1 to I=2 to I=3. Even the length of the Bowden tube - and whether there is filament in or or not - may start to contribute differences between individual users' experiences, if any error atributable to the tube's leverage proves significant. I know I am presently scratching my head as to why the bed level test squares look so good in only one or two spots on my bed but they are clearly printed too high or too low at other spots. Maybe trying ABL with the tube removed will help me improve on that... Easy enough to try and report back. |
Sorry if it's a dumb question but when does the taring occur?" Is it on the first probe in the middle of the bed before the ABL starts, or the first touch for each point? Even then the tube will never move in the exact same way on 1st and 2nd touch. Just touch it gently and you can see the blue LED indicating the bed touch flash. |
The tube also twists (turns, rotates) when the head moves on the x axis, at least mine does. |
Important question. We all need to understand this. This is what I believe: Marlin is basically using a "dead-reckoning navigation system" to keep track of where the tip of the nozzle is. In the CF implementation, Marlin is configured to understand that the X an Y axis end stops are each "found" by stepping the applicable motor in the counter-clockwise direction until the associated end stop switch is activated. It is also configured to "bounce" when it first triggers that switch and to then approach it again, more slowly, until it activates a second time. Upon the first activation of the end stop switch, Marlin "Tares that axis, to define a coarse 0.0 reference from which it can safely count the number of steps corresponding to the specified bounce distance. (e.g. 5mm in the cases of X and Y.) Marlin keeps track of the Z axis position in a very similar way to X and Y. It uses probe activation as the Z end stop switch. It bounces 2mm instead of 5mm, but otherwise the Z axis taring logic is the same as for X and Y. When Marlin is performing ABL, it is also performing "taring", but in that case it is not defining the position of z=0.0 for the axis, rather it is measuring the local variations in Z=0.0 at the various probe points.
Probably a longer answer than expected. Hopefully just long enough to remove any false assumptions, or to clarify any relevant details. NOTE: all of the above is only the best of my knowledge. If anyone reading this finds factual errors or omissions, please contribute qualified corrections below. |
No this is incorrect. Taring refers to telling the strain gauge to take a new zero position.
Met vriendelijke groet,
Sebastiaan Dammann
…________________________________
Van: Thinkersbluff <[email protected]>
Verzonden: Thursday, February 4, 2021 1:49:27 AM
Aan: CR6Community/Marlin <[email protected]>
CC: Sebastiaan Dammann <[email protected]>; Mention <[email protected]>
Onderwerp: Re: [CR6Community/Marlin] [FR] Make "Heaters off when probing" user-configurable (#106)
Sorry if it's a dumb question but when does the taring occur?"
Important question. We all need to understand this.
This is what I believe:
Marlin is basically using a "dead-reckoning navigation system" to keep track of where the tip of the nozzle is.
"Taring" is the function by which Marlin defines a specific position to be coordinate 0.0 on an axis.
In the CF implementation, Marlin is configured to understand that the X an Y axis end stops are each "found" by stepping the applicable motor in the counter-clockwise direction until the associated end stop switch is activated. It is also configured to "bounce" when it first triggers that switch and to then approach it again, more slowly, until it activates a second time.
Upon the first activation of the end stop switch, Marlin "Tares that axis, to define a coarse 0.0 reference from which it can safely count the number of steps corresponding to the specified bounce distance. (e.g. 5mm in the cases of X and Y.)
Starting at that bounced position, Marlin again drives the motor counter-clockwise until the end stop switch is activated a second time. Upon the second activation, Marlin "tares" that axis and uses that position as the definitive 0.0 coordinate for the origin on that axis. All subsequent moves on that axis are performed by stepping the motor the applicable number of steps to move the required distance and direction. Moving the axis to 0.0 returns the axis to the last tared position.
Marlin keeps track of the Z axis position in a very similar way to X and Y. It uses probe activation as the Z end stop switch. It bounces 2mm instead of 5mm, but otherwise the Z axis taring logic is the same as for X and Y.
When Marlin is performing ABL, it is also performing "taring", but in that case it is not defining the position of z=0.0 for the axis, rather it is measuring the local variations in Z=0.0 at the various probe points.
At each ABL probe point, Marlin will:
1. sense the bed once
2. tare the local mesh point value,
3. drive Z upwards from that point by the distance specified,
4. drive down to detect the bed a second time and subtract that position from the Axis z=0.0 position
5. tare the local mesh point value
6. drive Z upwards from that point by the distance specified,
7. drive down to detect the bed a second time and subtract that position from the Axis z=0.0 position
8. Calculate the average of those two measurements, and set that average as the value of the local probe point's local deviation from the Z axis = 0.0 position on the lead screws.
9. Tare the probe a third time, to provide a reference value for raising Z before moving to the next probe point.
10. Move up to the defined position and move to the next probe point.
Probably a longer answer than expected. Hopefully just long enough to remove any false assumptions, or to clarify any relevant details.
NOTE: all of the above is only the best of my knowledge. If anyone reading this finds factual errors or omissions, please contribute qualified corrections below.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FCR6Community%2FMarlin%2Fissues%2F106%23issuecomment-772939177&data=04%7C01%7C%7Cf4590d655f4d46b1aa3d08d8c8a6ba16%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637479965692114463%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=L%2F%2B9axMlKepGZiOvY2uj2c4PrXd1eI1k7RQVwcBna8c%3D&reserved=0>, or unsubscribe<https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAAK4FMKRMPS54CXQDRHSTBDS5HVJPANCNFSM4VOLZSWQ&data=04%7C01%7C%7Cf4590d655f4d46b1aa3d08d8c8a6ba16%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637479965692124456%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hl4iezBHft3I34kkZcyqPZRRV61jZOpAUHpkP5x5r3c%3D&reserved=0>.
|
Thanks for the clarification, but I could use a bit more help, then, to properly describe the sequence of events. |
Interesting informations. thanks for sharing the info. Does anybody know how "bending of the bed" is corrected? I mean, on my machine, especially on the outside of the bed, the nozzle bends the bed noticeable down when it touches it for probing. For sure a 1mm or more. But not in the middle of the bed. The sensor needs some force to get activated. And the bed mount is a little bit floppy on the outside. Are there some "compensation values" for this? |
Better to ask this question in the Discord. Issues should remain focused on the issue in the title. |
@thaukap Bending of the bed is not corrected because the printer/firmware doesn't know the bed is bending. Think of it from the perspective of the printer - it only has the limited sensors it has, so how could it know the bed is bending? That said - you need to adjust the sensitivity of your strain gauge if the bed is bending. It is probably set way too high. Check the chapter here on strain gauge calibration on how to do it. Also, of course, because this leveling system is so susceptible to mechanical issues, make sure you've ruled that out (eccentric nuts etc). @Thinkersbluff Rewriting what you wrote: Let me first define some things:
Yes, that second bump is safety and accuracy measure:
You are forgetting the homing offsets here. In the default firmware, the endstops are actually at -5 and -2 for X and Y respectively. So, endstop activation for X means X=-5. That makes that endstop + 5mm is X=0.
No, this is incorrect. First:
With this knowledge it is also easy to see:
Also good to note the the point of the strain gauge triggering while it bends plus the correction of the Z-offset determines the Z=0 position.
Note that this is dependent on the probing configuration. This procedure describes how the community firmware and mostly stock is configured.
With this in mind you can also see why that having a negative or positive only mesh is incorrect.
|
This is useful for users who have the temperature commands after G28 or G29 anyway. Then it has no use to wait up after homing.
This is useful for users who have the temperature commands after G28 or G29 anyway. Then it has no use to wait up after homing. CR6Community/Marlin#106
Thank you for making time to correct my write up. Cheers. |
@Sebazzz: You made my day, thanks a lot. Calibrated the strain gauge as described. Now the bed didn't tilt anymore when it's probed on the edges. I took the skirt from my last print and it differs by 0.03 in height, end to end, 7 cm or so. Not 100% but perfect for me. Used the original glass plate from Creality. Further, using your script from here, solved the other issue with spots of material right in the middle while heating up the nozzle. Also great! After a material change let it cool down and clean the nozzle during that process. Before the next print is started. Had the strange behaviour that the Z-axis when tuning to values below zero during print jumped back to zero all the time. But I will wait to check again and report this until it happens again in the next version. AFAIR there was a bug that the printer crashed when changing the value too fast. Maybe that is related. Thanks again! |
Closing this as this has been implemented. |
Description
It would be preferred to have the "heaters off when probing" configurable. For me and many others it increases accuracy, yet @Ranney1 reported issues with this functionality. It would be nice if it could be configured, for instance from the "leveling" screen.
As simple on/off toggle would do.
The text was updated successfully, but these errors were encountered: