Truthiness. Verified Truthiness.



  • My first work-a-day job in software was in various parts of the remote sensing world. One term that seems even more amusing in this political climate is "Truthing." which I have abused to produce Truthiness. In remote sensing, "Truthing" was the process where you went out in the field, located things you could see on your image and, using a GPS or (even further back) a map known to be accurate for that feature. This could be short circuited if you had already truthed your feature (say last year's image). Inevitably, you'd be using the truthing interface to indicate the coordinates of several pixels of the image.

    (interesting sidebar: most images were shot with the camera moving relative to the subject, and the scan could take seconds or minutes. Using a model of the way a particular image was taken, your truthing points could then be used to warp your image to orthogonal projection. Fun stuff. Lotsa math and modeling of mechanical processes...)

    Anyways, my concern is that we don't have the true position of the print head at all times. Really ... it seems we home it and then we proceed with luck and gumption that it stays accurate. I realize that the motors we use help this, but I'm just (while I write this) restarting a print that failed because the print head got momentarily stuck on a "glob" on the print. I'm going to continue from this paragraph with some freeform ideas. I'd like to know if anyone has tried any of these and or what I'm missing.

    Fundamentally, we could do as little as a piece of conductive tape on the belt or an "endstop" that you can run right through in both directions. Placed near the middle of the X or Y run, it would pulse at a certain location in each direction. If the pulse comes either than when we expect it, we know that the system is compromised and we can stop... or re-home ... or whichever.

    More sophisticated solutions could (say) use an idler that works similar to most ABS or many old printers I've taken apart. A wheel with holes in it and an optical sensor. With two sensors offset slightly, you can even determine rotation direction. Complicated when you vibrate back an forth quickly --- and I suppose that same could be said (although slightly less common) for the previous solution.

    It strikes me that something between the two might be sufficient as the motors... for the most part... work. Is there some feedback from the motor when it's turning or not? Have any firmware tried to probe a feature like this?



  • Have you seen stall detection? Not as reliable as an external encoder, but not bad for skipped steps.

    https://duet3d.dozuki.com/Wiki/Stall_detection_and_sensorless_homing



  • @zbeeble this discussion goes back at least a decade to the early RepRap days — are open-loop steppers acceptable or do we need some kind of servo feedback?

    The short version is, the physics of the stepper motor allow it to execute billions of steps with no drift whatsoever, as long as you configure the system properly (eg motor current and speed limits) and don’t run into anything. You can confirm for yourself by homing at the start and end of the print and seeing if the offsets differ. (They will match within the precision of your endstop switch.) The mechanical drivetrain in a typical Cartesian printer is a lot more reliable and accurate than the noodle of molten plastic squirting out by the extruder at high pressure.

    Many, many people have worked on various servo solutions to get closed-loop performance with position feedback. The dream is either an encoder tape on the linear axis, or a non-contact rangefinder to absolutely position the hot end to the build plate. Most people give up on that true linear motion measurement and instead use a rotary encoder of some sort on the motor shaft. That’s a bit less accurate in terms of absolute position (eg doesn’t see belt stretch or backlash) but it plenty good enough to detect skipped stepper steps due to collision etc.

    For the rotating sensor options, there’s everything from high-end precision quadrature encoders to simple rotating flags tripping an optical endstop.

    My personal opinion is that simple open-loop steppers are more than adequate for small and medium printers. Occasional failed prints are cheaper than closed-loop positioning. Very large printers should probably incorporate some sort of servo position feedback because the loss caused by a failed week-long print is so large.



  • I actually hadn't read the stall detection thread that's running around right now, and that link to the wiki will certainly be good for further reading. Obviously, the "reprap" goal is to find a "good enough" hack that is also cost effective. I will agree that the absolute position may be more out-of-reach, but the rotary encoder you discuss may not be.

    The stall detection topic makes reference to several different stepper drivers. Which ones are used with the duet series... and if the best aren't used, what is the cost difference on that?



  • Hi,

    I would think that the tens of thousands of stepper motor based printers which work just fine would suggest that closed-loop system isn't really needed in most cases.

    I would think that in your example of a "glob" stopping the movement you need to figure out why you have "globs" in the first place and why your printer couldn't push right past it in the second place.

    That situation is not one I have encountered in hundreds of hours of printing.

    Still the pursuit of a closed-loop system is still worth considering if the additional cost is too great.

    Frederick



  • Closed loop servos also have their own engineering issues, like feedback tuning, jitter, hunting, inertia matching, polling speeds, encoder resolution matching...

    The way this typically goes is that someone builds a closed-loop feedback system for 3D printers, everybody goes “ooh, ahh” and then it gets minimal uptake due to added cost and complexity. Mechaduino is a good example; it has a really slick way to read stepper shaft position and had a successful round of sales, but it had kinks to work out and more complexity to deal with and after a year or so everybody kind of lost interest.

    If you want to play with servo motion systems, the best ways to start are to either buy a prepackaged motor+encoder+drive that accepts the step/dir signals your Duet already outputs and handles the feedback loop on its own, or get into MachineKit with a Beaglebone setup where servo loops are baked into the controller code. Reinventing the wheel to do it internal to the Duet with some makeshift encoder rig doesn’t make a lot of sense to me.



  • @rcarlyle The most accurate machines in the machine shop that I work in are Wire EDM machines. The don't use encoders but instead use glass scales to detect movement. That way back lash in the couplers, ball screw nut and uneven wear in the lead screws don't have to be compensated for. The glass scale detects and reads the movement of the head in each direction very accurately. With a machine resolution of .00005".

    Encoders are nice but they still only rely on the motor shaft movement and don't account for wear in the lead screw.

    Even if you could have the printer head move with extreme precision, can you have the hot plastic squirt out with just as much precision?

    In my opinion the reality is these printer are just glorified play-doe fun factories in that they just squirt stuff through a hole.

    I have used indicators set up to confirm I am getting great repeatably with my X and Y axis. Much closer than my extruder can print.



  • @timcurtis67 said in Truthiness. Verified Truthiness.:

    In my opinion the reality is these printer are just glorified play-doe fun factories in that they just squirt stuff through a hole.

    👍 Couldn't agree more - (although I prefer the analogy of hot melt glue gun).



  • Milling is just whacking a piece of metal over and over, breaking small pieces off. EDM is just vaporizing a small piece of material over and over. Casting is just pouring a bunch of molten metal into a hole.

    I don't get the point of over-simplifying a process that can be made as accurate or as sloppy as one works to achieve.



  • @timcurtis67 said in Truthiness. Verified Truthiness.:

    @rcarlyle The most accurate machines in the machine shop that I work in are Wire EDM machines. They don't use encoders but instead use glass scales to detect movement.

    OK, I am going to be "That Guy".

    A glass scale IS "an encoder". Attached to the final carriage instead of the motor shaft, which has tremendous advantages. Still, it is encoding position.

    I think what you are saying is that they don't use rotary encoders on the motors. Which, as you point out, attaching the (glass scale) sensor to the final "control point" self-compensates for all backlash, etc. I have a mill that works this way, and it is great.



  • There's no absolute right or wrong answer to "open" vs. "closed" loop, nor to the kind of sensor and where it is attached when closing the loop.

    However... there is tremendous market pressure to hold down cost. And open loop steppers "just work" in the vast, vast, vast majority of 3D print applications.

    Furthermore, many of the proposed closed loop sensors, namely those that go on motor shafts, won't detect the two most common failures: A belt that jumps a tooth, or a pulley who's setscrew comes slightly loose and it can move just a little on the shaft.

    Yes, an encoder/sensor on the final "control point" item, the effector or hot end or tool holder or whatever, could detect any mis-match... but those are even more complex and expensive. Sometimes, adding complexity to a system makes it LESS reliable. Sometimes.

    .

    So again, I'm not saying there is a right/wrong perspective here... I am saying that there is a pragmatic perspective, and it leans very strongly toward open loop steppers on 3D printers. Which is why there's thousands of models that have sold tens or hundreds of thousands of printers with open loop. At this moment, I'd be hard pressed to find a link to a closed loop 3D printer, that is not also a multi tens or hundreds of thousands of dollar commercial specialty unit. I'm sure they exist... they are just rare in the hobbyist market.



  • I’m of two minds about it. Closed loop offers intriguing possibilities but it has to be done just right to be any improvement. The biggest issue is it will cost more money, be more complicated (and more parts to fail) and it isn’t guaranteed to be an improvement. Unless you’re a big name manufacturer, add $30 per motor on your machine. I’ve even seen a few different examples where closed loop feedback made the print finish look worse.

    Also, TMC drivers have eaten away some of the features once thought exclusive to closed loop.



  • @danal said in Truthiness. Verified Truthiness.:

    @timcurtis67 said in Truthiness. Verified Truthiness.:

    @rcarlyle The most accurate machines in the machine shop that I work in are Wire EDM machines. They don't use encoders but instead use glass scales to detect movement.

    OK, I am going to be "That Guy".

    A glass scale IS "an encoder". Attached to the final carriage instead of the motor shaft, which has tremendous advantages. Still, it is encoding position.

    I think what you are saying is that they don't use rotary encoders on the motors. Which, as you point out, attaching the (glass scale) sensor to the final "control point" self-compensates for all backlash, etc. I have a mill that works this way, and it is great.

    Yep that's what I'm saying. A glass scale is a type of encoder. A much more accurate one over time for the simple fact that with age the driving forces behind any mechanical movement wear. Rotary encoders on the end of servos (like in most CNC mills) only read the shaft movement, and that is before the coupler even.

    But truly my point was the fact that are encoders really necessary on a glorified hot melt glue gun machine? (Thanks Ian 👍 )

    If you like them and feel you will get better prints with them then by all means go for it.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.