element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
3D Printing
  • Technologies
  • More
3D Printing
3D Printing Forum Closed-loop control for low-cost 3D printers
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join 3D Printing to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 48 replies
  • Subscribers 334 subscribers
  • Views 8085 views
  • Users 0 members are here
  • closed-loop
  • servo-control
  • 3d-printer
Related

Closed-loop control for low-cost 3D printers

morgaine
morgaine over 11 years ago

A challenge given to Ben Heck in March of last year was "Challenge - cheap 3D printer" (design a 3D printer more cheaply), and that thread continues to receive replies to this date.  Unfortunately nobody in that thread actually addressed the matter as a design issue.  Instead, most of the replies (including from Ben) seem to have addressed an entirely different question, how to build the same kind of 3D printer as you can buy today, but for less money.

 

Those are two completely different questions.  It was pointed out by Ben that because of the race to the bottom by a huge number of manufacturers, the current designs can't be made a lot cheaper while still retaining the same speed and accuracy.  That's probably correct with respect to current standard designs, but it says nothing at all about different designs.

 

So, this thread suggests a different design approach that may offer a solution, and it's a pretty natural step to take.

 

A useful observation with which to start is that the accuracy and precision obtainable with today's RepRap-style models stems from the design of their stepper motors and the limitations inherent in screw drives and belts and pulleys and the rigidity of their physical construction.  Because of this, if you retain the existing design model but in the quest for lower cost you compromise on one of these areas, you are very likely to lose the necessary degree of printing accuracy even if you are performing steps at very high resolution, so that's not likely to be a good way forward.  Printing with high precision in the wrong place is not helpful.

 

That observation about accuracy and precision leads us directly to a solution though.  Engineers know full well how to gain high and definable accuracy without each of the components being manufactured to extreme tolerances, and that's by using closed-loop control with negative feedback, the basis of servo-systems.  In a closed-loop system, the only thing that needs to be highly accurate and with known precision is determination of current position, and the heart of that need be nothing more costly than a very accurately printed graticule which can be produced for pennies.  Given the ability to know where the operating head is located very accurately in each relevant axis (not necessarily Cartesian), the only other requirement for maintaining that limit of accuracy is rigidity of coupling between sensors and operating head, ie. the hot end in a 3D printer.  Very importantly, there is no need for rigidity in the motor assemblies --- as long as they're moving the head in the right direction, that's good enough.

 

So, I'll recast the original question differently and tie it to this specific way forward:

 

"How can we design a 3D printer based on closed-loop control to gain high accuracy and overcome low cost construction through use of negative feedback?"

 

It's mostly a matter of examining alternative physical arrangements to find one with good rigidity while also having low suspended mass and being amenable to construction with today's open-loop 3D printers as a stepping stone.  It's worth pointing out that virtually all 2D inkjet printers already use closed-loop control --- if you take one apart you'll find a positional sensor and fine graticule in there somewhere to provide very high accuracy in one dimension at the lowest cost.

 

Once we start thinking about closed-loop control for 3D printers, many possible advantages start to appear:

 

  • As already mentioned, it compensates for low-quality parts, so prices could fall much lower.
  • Closed loop operation compensates for latitude at assembly time as well, also leading to lower costs.
  • Very much higher accuracy than we have today is possible, and that cannot be done open loop.
  • Motors of many different kinds can be used, AC, DC, brushed, brushless, linear, and also steppers.
  • If steppers are used in a closed-loop system, you can overdrive them without worrying about "lost steps" because the steps aren't used for position control anyway, yet you still retain the advantage of high holding torque.
  • Much higher speeds are possible than we have today because of the two-fold advantage of wider motor choice and arbitrarily high acceleration while the control loop seeks to its desired position.
  • Accuracy and precision are more independently controllable in closed-loop systems.  This provides more opportunities for cost reduction through tradeoffs, as well as dynamic optimization in favour of speed, for example on in-fill.  In open-loop printers with stepper motors, the step size places a limit on precision of positional control, but this is very rarely reflected in the accuracy of actual positioning which is primarily determined by physical construction.

 

I'm sure there are many other benefits.

 

The main disadvantage is that this direction requires new thinking, new solutions.  And there's the challenge! image

 

Morgaine.

  • Sign in to reply
  • Cancel

Top Replies

  • morgaine
    morgaine over 11 years ago +3
    The topic above is deliberately open-ended and proposes nothing more than closed-loop control, hopefully to encourage people to think laterally and very widely instead of being shackled by a specific construction…
  • morgaine
    morgaine over 11 years ago in reply to Former Member +2
    I'm talking about making the work head's position be determinable to high levels of accuracy --- the distinction between accuracy and precision is important in this context, because we need to know the…
  • vsluiter
    vsluiter over 11 years ago in reply to morgaine +2
    Hi Morgaine, It's what Nanotec is already selling for industrial use: stepper motors driven as 2-phase brushless DC motors. Very nice features as high torque, high accuracy, low noise....
Parents
  • morgaine
    morgaine over 11 years ago

    The topic above is deliberately open-ended and proposes nothing more than closed-loop control, hopefully to encourage people to think laterally and very widely instead of being shackled by a specific construction.  The range of possibilities is enormously varied, probably infinite.

     

    I will however express my own preferences, which are much narrower and more tightly directed.  Please don't be constrained by the following.

     

    Personally, I think closed-loop 3D printers need to head in the direction of direct drive, avoiding intermediate transmission components as much as possible.  Not only would this eliminate loss of rigidity and the severe problems of slip and play and backlash, but it would also open up the possibility of printing our own motors using pancake designs (effectively linear motors arranged in a circle).

     

    This direction is not in the slightest bit easy, but the elimination of transmission components would make this approach more viable at MEMS scales, which are on the path towards which all engineering is leading:  nanotechnology.  The machinery which builds the machinery which builds the machinery which builds the machinery ... of nanoscale systems is in our grasp right now.  It's going to be an interesting voyage.

     

    Morgaine.

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to morgaine

    so your suggesting that you use servos with encoders? thats dandy and all but its much more complex to set up being that as far as i know (which is verry little i will admit) there arent any programs as side from mach3 that will read encoder data not only that but the reason most people sue steppers today is because they are much cheaper and simpler to use in simple hobbycraft

     

    if you are talking about for the wave of commercial 3d printers? well Great! i definitely see the benefit to useing encoders to determine position it will provide more accurate movement and possibly a better print quality

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • morgaine
    morgaine over 11 years ago in reply to Former Member

    I'm talking about making the work head's position be determinable to high levels of accuracy --- the distinction between accuracy and precision is important in this context, because we need to know the true position of the hot end when printing.  Inferring head position from the commands we've sent to the motors is absolutely not adequate --- that's open loop operation.  Whatever means are used to move the work head (it's not limited only to hot ends), the motive force should be part of a closed-loop system to reduce the error signal between where you are and where you want to be, as determined by the work head and not by the motors.

     

    There is no difference in setup complexity.  In fact closed-loop systems generally require less calibration since the whole idea is that negative feedback should compensate for the work head being in an unexpected place --- that includes being in the wrong place because of latitude at assembly time.  Good design of positional sensing corrects a huge range of cumulative errors quite automatically.

     

    Commercial servomotors containing encoders employ the same approach but are not needed here.

     

    My interest lies entirely in individual empowerment, and whether the commercial sector picks it up or not isn't particularly interesting except that it might lower the cost of components.  In the end, the future is in our own hands, regardless of where companies want to go for profit.  It's unlikely and would be surprising if the same solutions were best for both.

     

    Morgaine.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • vsluiter
    vsluiter over 11 years ago in reply to morgaine

    Hi Morgaine,

    It's what Nanotec is already selling for industrial use: stepper motors driven as 2-phase brushless DC motors. Very nice features as high torque, high accuracy, low noise....

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 11 years ago in reply to morgaine

    It's a lot to hope for that the open source/hardware community could easily solve problems which have been at the core of machine tool design for the last 300 years (or more). However there are some modern developments that might help a bit.

    The traditional machine tool approach relies on stiffness of the mechanical structure and this makes the design of the feed back control system much simpler - so my conventional HAAS CNC milling machine uses a cast iron framework, ball screws and positional feedback. I can (slowly) manage the same precision as the mill when doing a task under the microscope using soft biological structures, visual feed back and a lot more processing. The RepRap and all the similar machines use cheap versions of the traditional machine tool structure but without the feedback (as you mentioned in your first post).

    There are two ways you could make cheap and much more precise 3D manipulators - one is to try to reduce the cost of the traditional stiff structure and the other is to attempt a 'soft' machine with much better control systems. People have been trying the first approach for ages and I don't think you will see the cost of a machine with a 30cm cube working area drop much below a £10k - so we had better look elsewhere.

    The RepRap approach is dogged by issues with backlash, friction, steppiness of the stepper motors, frame rigidity etc etc - I'm not convinced that it's the best place to start.

    Reasearch into soft manipulators doesn't seem to have resulted in any commercial products (can anyone tell me of one - I'd like to be wrong) so I'll offer my own cheapo idea:

    How about a suspended hexapod -  I think you can design it so all 6 legs are always in tension so they can be strings wound up and let out by brushless motors - now if someone can suggest how to measure the position accurately enough you're almost there - apart from the control system.

    You might prefer hydraulic actuators (much faster, bipolar forces etc but also much more expensive). There are biological prototypes for both schemes.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 11 years ago in reply to michaelkellett

    What a great thread. Unrelated, I was recently trying to figure out how to measure across a small distance (about 10mm) and I was thinking of using a cheap micrometer end and some sort of camera measurement since they usually have their markings etched quite clearly.

    For a larger platform for a 3D printer, if the string or wire is always wound on a cylinder (like an elevator), a normal rotary encoder could be used maybe? This assumes the wire rolls flat of course and not in a bunch - no idea if that would happen :-(

    Or, replace the wire with flat metal tape of a controlled thickness - then it can roll on top of itself, and the software can compensate for the thickness as more tape is rolled up.

     

    EDIT: I think it would be worth an experiment in one dimension, if some tape could be found!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • shabaz
    shabaz over 11 years ago in reply to michaelkellett

    What a great thread. Unrelated, I was recently trying to figure out how to measure across a small distance (about 10mm) and I was thinking of using a cheap micrometer end and some sort of camera measurement since they usually have their markings etched quite clearly.

    For a larger platform for a 3D printer, if the string or wire is always wound on a cylinder (like an elevator), a normal rotary encoder could be used maybe? This assumes the wire rolls flat of course and not in a bunch - no idea if that would happen :-(

    Or, replace the wire with flat metal tape of a controlled thickness - then it can roll on top of itself, and the software can compensate for the thickness as more tape is rolled up.

     

    EDIT: I think it would be worth an experiment in one dimension, if some tape could be found!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • morgaine
    morgaine over 11 years ago in reply to shabaz

    shabaz wrote:

     

    I was thinking of using a cheap micrometer end and some sort of camera measurement since they usually have their markings etched quite clearly.

     

    As camera resolution gets better and better fueled by consumerism, the same sensors give us new capabilities at low cost for machine control as well.  The 1920 horizontal pixels of 1080p is almost 11 bits of resolution horizontally, and with some creativity one could use the 2200 or so diagonal pixels to get a little bit more, but on the whole it's still low resolution if one is thinking of 2D camera sensors as a cheap means of providing position feedback for 2 axes of a 3D printer by observing it from the top.

     

    By Nyquist, a 1920x1080 array of sensors at most allows you to sample 960x540 data points (adjacent pixels 1 and 0 to detect a single period), which at the commonly sought lowest FFF feature resolution of 0.1mm provides only a 96x54mm manufacturing space, and that's assuming that everything else is perfect.  Needless to say, perfection is rarely achieved.  On the whole this approach of using a camera isn't quite there yet, as it doesn't match the product of workspace size times lowest feature resolution of the open loop approach, for now.

     

    It's a pity that those 2 millions pixel sensors aren't available in a nice long line for us. image

     

    Linear camera sensors are available as well of course, but they don't get the volume pricing benefits of 2D arrays.  It's worth keeping an eye on them though, since no-contact position sensing of the work head is a very desirable approach.

     

    Morgaine.

     

    PS.  A 2x2 array of 1080p cameras would put us more or less on a sensing par with the Size*Res of current-day open-loop FFF printers.  The Pi's camera board is just about cheap enough for it, although using 4 x Pi just for sensing would be pretty silly.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 11 years ago in reply to morgaine

    Morgaine Dinova wrote:

    As camera resolution gets better and better fueled by consumerism, the same sensors give us new capabilities at low cost for machine control as well.  The 1920 horizontal pixels of 1080p is almost 11 bits of resolution horizontally, and with some creativity one could use the 2200 or so diagonal pixels to get a little bit more, but on the whole it's still low resolution if one is thinking of 2D camera sensors as a cheap means of providing position feedback for 2 axes of a 3D printer by observing it from the top.

     

    (Battling with failed DSL connection today! and VF decided to change the 3G APN settings on their most recent SIMs, which left me confused for hours..).

    I'm no expert on mechanics (although I have used manual milling machines and lathes) nor 3D printers : (

    I was thinking of moire patterns (with clear sheets with lines on them), that I remember would produce large changes in bands of light and dark areas for a small angular movement for example. But I couldn't figure out if this would work for a large area.

    Then I thought it doesn't need that, if there was (say) a rule with (say) markings every 0.1mm, and numbers printed every cm just like a normal rule (or some barcode type pattern instead of a number), and if it was parallel to a linear rail and close to the travelling block, then a camera on the block with 1000x1000 resolution that was focussed on a (say) 2x2cm area could easily precisely measure where it was, and use OCR to know the exact position because at least one number would always be fully visible. This method would need cameras for each axis however, and good focus on a small area. So, maybe too complicated. Maybe a method where only one point is well referenced somehow, and the head always goes to that point and then moves only in one direction from there (and always travels back to the reference point and then moves only in one direction again) may be an alternative way.

    Hard to know without someone with the tools/skills to try it and measure it : (

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • morgaine
    morgaine over 11 years ago in reply to shabaz

    shabaz wrote:

     

    if there was (say) a rule with (say) markings every 0.1mm, and numbers printed every cm just like a normal rule (or some barcode type pattern instead of a number), and if it was parallel to a linear rail and close to the travelling block, then a camera on the block with 1000x1000 resolution that was focussed on a (say) 2x2cm area could easily precisely measure where it was, and use OCR to know the exact position because at least one number would always be fully visible.

     

    Yep, that sounds entirely viable, and I think it can be done in two different ways.  One way (1a) is to make the absolute position markers for OCR occupy a defined box size and have a known positional relationship to the grid pattern between them and OCR being performed continually during movement, and another way (1b) is to scan for an area within the field of view containing self-syncing blocks of reference pattern (no OCR) and use those for the relative speed and direction reference --- OCR areas can then be ignored during traversal but used for calibration and periodic confirmation, which is less intensive.  I like both ideas.  (There is a downside though, namely low precision since the camera senses a relatively wide field of view.)

     

    Another approach (2a) that I was considering uses spaces in a regular reference grid of dots to carry metadata about absolute position of the reference grid.  This would allow for very high magnification (tiny FoV) so that only a very small area of the pattern needs to be examined at any time during traversal (3x3 dots should be enough), which would result in very high sensitivity and precision and very low processing overhead at the same time.  If any one of the 9 dots is missing it is simply ignored for speed/direction feedback, yet a pattern of such "holes" can be used to carry metadata which builds up during traversal, so no OCR is needed.  I like this idea not only because of its high precision and sensitivity but because the speed and direction processing will be so fast that the feedback will have very low latency and hence will cope with faster movement of the head.

     

    And since the cheap cameras that one would be using would inevitably have colour sensors, there's another very obvious variation to this theme:  use the 3x3 dot array for fast speed and direction processing, but use the colours of the dots to encode absolute position labelling (2b).  This would even increase the already high speed advantages of 2a, since there would be no exception cases of missing dots for it to consider.  But colour can be used for a lot more than that --- imagine encoding two orthogonal graticules using different colours (2c), or using multiple colours to encode reference grids with different resolutions simultaneously (2d).  There's an awful lot of new flexibility obtained once colour is added to the solution space.

     

    I've labelled these approaches in case we want to reference them, but I'm sure there are countless others.  This is a really fun area where the mind can be given free reign to seek alternatives.

     

    Morgaine.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 11 years ago in reply to morgaine

    Here is one method someone devised.

    It would be nice to have some open source engine that could be used to detect position from an image, and some software to generate the co-ords of where to print dots on a surface.

    image

    image

     

    image

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • morgaine
    morgaine over 11 years ago in reply to shabaz

    shabaz wrote:

     

    Here is one method someone devised

     

    ... which the open source community has to explicitly avoid as it's patented, at least until such a time as Google makes it royalty-free.  Fortunately there are a billion and one other encodings available.

     

    It would be nice to have some open source engine that could be used to detect position from an image, and some software to generate the co-ords of where to print dots on a surface.

     

    Yes indeed.  I wouldn't be at all surprised to find that it already exists in one of the many image processing communities, especially in machine vision since pattern recognition is one of its core elements.  I doubt that 3D printing will have to invent much that is new in this particular area, only apply it in creative ways.

     

    Morgaine.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 10 years ago in reply to morgaine

    Hey guys,

     

    Not only am I new to this community, but I'm pretty new to hardware development. However, this thread just grabbed me so I couldn't resist chiming in. Alas, with my limited knowledge, I will still try to contribute in some way. I have a few ideas:

     

    1. if you are contemplating using a camera anyway, why not use a laser too. You can project it to 3 surfaces and judge distance based on the size.

     

    2. I haven't heard anyone mention triangulation. Not that I know entirely what the cost that would be involved, but the algorithms are everywhere and it should be easy to implement. It could be sound or light. I like the idea of an IR pulsing LED on the head, cameras pick it up (cheap ones at that) and triangulate based on latency of the received pulse. Could probably be done many times a second, but might not be sensitive enough.

     

     

    Anyhoo, I'm just learning and would love to hear your comments.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube