Become a fan of Slashdot on Facebook


Forgot your password?
Hardware Hacking Printer Build

Servo Stock 3D Printer Brings Closed-Loop Control To Reprap 56

A limitation of current (affordable) 3D printers is their use of open loop controllers and stepper motors which limits reliability (drove the motor too quickly and skipped a step? Your model is ruined) and precision (~300 steps per revolution). A new project, Servo Stock instead uses cheap RC Servomotors combined with Hall Effect sensors, using a closed-loop controller to precisely position the extruder. The Servo Stock is derived from the delta robot Reprap Rostock (which is pretty cool even with stepper motors). The sensors give a resolution of 4096 ticks per rotation, and the controller can currently position the motors to within +/-2 ticks. They've also simplified the printer electronics by driving as much as possible from the controlling computer using Bowler, a new communication protocol for machine control. The Servo Stock also includes sensors for the hot end, presumably to be used to control the filament feed rate and temperature. The hardware models are fully parametric, allowing reasonably straightforward scaling of the design. Source for the hardware, firmware, and software is available.

A note on the video: the extruder platform is tilted in the video, but a project update indicates it was fixed by making the support arms more rigid.

This discussion has been archived. No new comments can be posted.

Servo Stock 3D Printer Brings Closed-Loop Control To Reprap

Comments Filter:
  • by gl4ss ( 559668 ) on Tuesday May 27, 2014 @08:09AM (#47098449) Homepage Journal

    but bigger servos tend to cost more than steppers for same performance.

    if the encoders could be used with freely chosen dc motors - and the encoders be cheap when used that way - then it would be pretty nice.

    • by plover ( 150551 )

      Don't think of it as "more expensive", think of it as "the price of precision." If you pay less today for the components, you'll pay more tomorrow in making scrap parts. Make your own tradeoff - would you rather get into cheap printing, and pay in terms of delays and waste, or would you rather produce more usable parts?

      At least if you pay up front, you've theoretically reduced the long term expense. The downside to that theory is: will today's 3D printer be the technology you want in 2018? If you think

      • Yes. If it's worth it for you to own one, it's worth having it work properly.

        And hopefully you don't find yourself holding the Betamax version a few years in.

      • At least if you pay up front, you've theoretically reduced the long term expense. The downside to that theory is: will today's 3D printer be the technology you want in 2018? If you think these machines will improve a lot in other ways in the next four years, adding extra costs today won't save you much if you're just going to replace it anyway.

        Assuming you can't re-use the motors in whatever improved design you have in 2018, anyway...

      • Re:this is cool (Score:5, Informative)

        by ShanghaiBill ( 739463 ) on Tuesday May 27, 2014 @10:04AM (#47099033)

        Don't think of it as "more expensive", think of it as "the price of precision."

        It is not as simple as that. Stepper motors can use microstepping [] to improve their precision and stability. All you need is a controller with multiple PWMs (one for each phase). A $25 Arduino will work to microstep up to three two-phase steppers. "MIssing steps" is not a problem if you don't push the motor outside its performance envelope. The head on a 3D printer is not moving against variable resistance, so that should not be a problem. You could even slap an encoder onto a stepper, so you can detect and recover from missed steps. A servo motor has its own issues, such as gear backlash, that can make it less precise than a stepper in many applications. Servo motors vs steppers may be more for marketing than for real precision.

        • It's nice to read a comment from someone who knows what he's talking about, for a change.

        • Besides, the extruder is the one motor where if you lose a couple of steps, your project won't be ruined.

          Wake me up when they get closed loop positioning for the other axys.

        • A harmonic gearbox will reduce the backlash on a servo to zero, but then it all depends how much money you have to spend.

          To be honest, I am quite surprised they weren't already using encoders and feedback control. That and a small PID loop and you can even minimize overshoot. Or just have acceleration/deceleration profiles...

    • You seem to have mistaken 3d printing for a cheap hobby. Given the price of a reel of filament, it's madness to cheap out on the machine itself.

  • by Gothmolly ( 148874 ) on Tuesday May 27, 2014 @08:23AM (#47098519)

    Stepper motors have known performance curves, so you could simply NOT send pulses to them faster than they can react.
    Or you can zero them (or your coordinates) periodically by returning them to their start point.
    Or you could have stepper motors AND a feedback loop.

    TL;DR - shitty printer design is shitty.

    • by Anonymous Coward on Tuesday May 27, 2014 @09:55AM (#47098965)

      Or you could do ALL those things, which in non-hobbyist robotics is commonly known as "the bare minimum". I see a lot of industrial robotics in semiconductor fabs. The standard for the last 30 years has been:

      Use stepper motors of adequate torque, geared appropriately so as to have very high resolution,
      AND you use high-resolution encoders on the steppers,
      AND you check the end effector motion against fixed "home" positions with breakbeam or similar sensors.

      The software constantly compares the stepper commands with the shaft encoder reading. If they ever don't match, the tool instantly stops and thows the ubiquitous "encoder mismatch" error. If a home-position flag is ever missed, the tool freezes and throws the almost-as-common "robot position error" error. This is the bare minimum when you are moving around $10,000 wafers.

      The idea that 300 steps per revolution is "not enough" resolution is so wrong as to be not-even-wrong. That's why God invented gear ratios. If there is no space for gears or timing belts, use a harmonic drive. A very common configuration on AMAT cluster tools is a 500steps/rev 5-phase stepper with a 100:1 harmonic drive giving 50,000 steps per revolution.

      • by OzPeter ( 195038 )

        ^^What he said

        Closed loop control with continual re-homing is standard for any position critical industrial automation system.

        Shit I even do that with cranes that lift cargo containers off ships - so the scale of the end process is irrelevant!

      • The idea that 300 steps per revolution is "not enough" resolution is so wrong as to be not-even-wrong.

        No to mention that I've seen 24, 48, 100, 200 and 400 steps per revolution steppers, but I've never even heard of a 300 steps one.

  • by daid303 ( 843777 ) on Tuesday May 27, 2014 @09:11AM (#47098719)

    Pretty much all lies from the start.

    First off, almost nobody is missing steps in their cheap 3D printers. They simply do not move fast enough for that to happen. And if they are missing steps you have a bigger issue, usually lots of friction somewhere.

    Secondly, 200 steps per rotation is normal for motors. However, the drivers everyone is using do 16x microstepping, good for 3200 steps per revolution. Accurate steps per revolution. That's better then 4096 +- 2 steps.

    You also lose the close coupling between the 4 axis that you need (the feed stock of the material is also an axis that you need to control), which is a big deal in running accurate prints.

    The cheap hobby servos will also have mechanical play, which will cause vibrations to be transferred to the head, which will result in a reduction of print quality.

    I'm also willing to argue that it's more expensive. But I didn't do the math on that part yet.

    (Who am I to say so? Just a guy who has been working at Ultimaker for 2 years. Kinda know what's needed for quality 3D printing at a low price and what's not)

    • by gigne ( 990887 )


      I have spent a lot of time with servo motors and closed loop PID. (mainly Openservo) Even the best servo has some slop in the mechanics.

      The real problem here isnt the mechanics, it is the PID loop. Unless precicely calibrated (and I mean really precicely) then the overshoot or settle becomes a big problem.

      Much better to close that loop with a stepper motor or decent DC and precision gearbox.

      My UM has never missed a step that I know of, and is certainly more precise than +/- 2 steps.

    • 3d printing accuracy needs to be defined much the same way a cnc is. Expecting to get good parts on a cheap printer with an accuracy of 1/4" is setting yourself up for failure. It's not just that the cheap models are inaccurate but that their inaccuracy is not defined leading people to think their $250 printer has 1/64" precision. Simply defining the precision of the printers will make a huge difference, like you said 200 points per rotation is not an issue, it's the backlash in the gears moving the head, t
    • I would also argue that the cheaper (affordable) 3D printer lack enough structural rigidity to really push the servos to their limits.

      But, the reality is what you describe. Unlike a CNC milling machine, there is no load being transferred to the head. It is just moving its own weight. Barring bad mechanical assembly, you can not miss steps in normal operation. On a milling machine, I have seen steps missed when making a rapid change of direction in a deep cutting operation. In that scenario, the correct thin

    • 200 steps per rotation is normal for motors. However, the drivers everyone is using do 16x microstepping, good for 3200 steps per revolution. Accurate steps per revolution. That's better then 4096 +- 2 steps.

      No, those motors are not good for 3200 accurate steps/rev: Motor accuracy here is likely to be +/-5% (10% range), so ideal accuracy will be closer to 2000 steps/rev, but real world accuracy drops with increased microstepping resolution due to varying load and detent torques, stiction, etc.

      The good news is that this level of motor accuracy is irrelevant here. All you really need to do is beat the required positioning resolution (likely on the order of a few mils). A 20tpi lead screw and 200 step/rev motor

    • by Animats ( 122034 )

      Pretty much all lies from the start.

      Agreed. Making an CNC positioner work is a solved problem. There are botched positioner designs in the 3D printer world that fail, but that's because of bad engineering. It's an easy positioner problem - the load doesn't vary much. If a stepper is missing steps, you probably did something very wrong. Like using the crap Arduino stepper board from Adafruit, which uses a chip intended for LED dimming.

      When I saw the article title, I thought that perhaps someone had closed loop thermal control of the extrusi

    • by Artraze ( 600366 )

      > First off, almost nobody is missing steps in their cheap 3D printers. They simply do not move fast enough for that to happen.
      > And if they are missing steps you have a bigger issue, usually lots of friction somewhere.

      Well, keep in mind that not moving fast enough is a bit circular: One reason they don't move fast enough is to prevent them from skipping steps. Of course, on hobby machines rigidity is probably a bigger issue so it's not terribly helpful in that regard.
      (I will say, though, that steps

  • by csumpi ( 2258986 ) on Tuesday May 27, 2014 @09:42AM (#47098871)
    While it sounds like a cool project, using servos instead of steppers is just a bunch of added complication, cost and downsides.

    But first, let's be realistic: we are extruding plastic at several 0.1mm width. For example a 0.35mm nozzle has to lay down plastic at a minimum of about 0.4mm width to achieve good layer adhesion. So having 4096 steps per rotation on a servo vs 3200 steps on a stepper (200 steps * 16 microsteps) will make zero difference. (Although higher microstepping is also possible at the cost of power output and processing speed.)

    Then you add a whole bunch of electronic components, increasing cost and failure points. Brushes in servos wear out, needing replacement. And I'm sorry, but some cheapo small servos from RC cars will not be a replacement for the beefy steppers used in even the cheapest 3d printers. BTW, servos are a major point of fail in RC car, and a decent servo costs several times that of a nice stepper.

    Let's also think about what happens if there's a mechanical failure that would trigger a step being lost, for example a stuck bearing. A stepper would simply stop working. A servo would not stop until the encoder wheel reaches its position, so without some added safety system the servo would just commit suicide, burning itself down or chewing up its gears.

    Having said all this, my current reprap printer has yet to skip a step after several hundreds of hours of print time. So looking for a solution to a problem that doesn't exist?
    • Skipping steps becomes a real issue when you start driving it faster and faster ...
      and print time is a serious issue with current gen 3d printers... make it faster, without loosing precision or causing missed steps, at the same cost makes tons of sense.

      • To be fair my (badly constructed?) printer loses precision from vibration much before the stepers have any problem.

        Also, all steps that it missed were due to electronic or software problems. Except when the software sent things beyhond the end of the printer, it never lost a step due to physical resistence.

      • by csumpi ( 2258986 )
        Did you see the speed in the video? That thing goes at max 10mm/sec. I print at 100mm/sec, no skipped steps.

        At some point, there are just limitations. For example how much plastic you can melt through the hotend.

        With speed you also face the biggest evil of 3d printing right in the face: acceleration. High acceleration is what makes a good print. More speed, more inertia, crappier prints. In fact skipping steps has not much to do with speed, and a lot more with the lack of acceleration.

  • To be an improvement it has to either perform better or cost less for equal performance. I'm not sure it does either.

    Better performance: it would need to be faster or more precise/accurate. I don't think it's going to go faster without some very expensive motors and controllers, and how much precision/accuracy can you get when you're squirting molten plastic out of a nozzle that's 0.25 mm diameter or larger? The properties of the plastic and the temperature at which it extrudes are going to affect the pr

  • by drinkypoo ( 153816 ) <> on Tuesday May 27, 2014 @10:53AM (#47099423) Homepage Journal

    So you take a servo, which has a resistive sensor, and then you add on another sensor. Why not just take a motor and a gearbox, and add a sensor?

    • by gigne ( 990887 )

      That servo has to turn more than the 270 degrees of a normal servo. The pot isn't setup for 360 degree rotation. The end result is that you have to modify the serv and replace the pot with something else.

      • Right, but if you're going to have to modify it anyway, what are you gaining? Servos are cool primarily because you buy them and plug them in and use them.

  • by LoRdTAW ( 99712 ) on Tuesday May 27, 2014 @11:35AM (#47099755)

    I do a lot of industrial automation using steppers as they are very cheap and pretty robust for low speed work. In fact as we speak I am building a stepper indexer using off the self motors and drives.

    Steppers stall because they are driven faster than the current can build up in the coils. As a result, the torque drops off since torque is directly proportional to the current in the motors coils. The motor can no longer move its load so it simply stalls. This happens after missing 2 or more steps and even if you remove the load the armature is stuck until the current is shut off. All of these 3D printers are probably using 12 volts to the bridge drivers which severely limits their torque curve.

    One way to fix this is to increase the bus voltage to the bridge drivers. Industrial stepper drives mostly use 80-160V. Larger drives usually rectify the mains 120/240V AC and send it to the bridge drivers after some filtering. This allows the current to build faster and extend the torque curve further into the higher RPM's. But these are still stepper motors and they typically all drop torque after you go over 1000-2000 RPM. Remember, missed steps from resistance on the motor shaft is bad, it almost always leads to a stall.

    Stepper motors are an indexing type motor and have physical teeth cut into the armature which line up with the stator poles. You index the motor by turning the poles on and off in sequence and the armature follows, cogging into place as the magnetic field lines up. Most steppers have 200 steps per rev, smaller steppers can vary quite a bit. There are a few stepper out there with more than 200, the 5 phase steppers from oriental motor are an example with 1000 steps per rev. The step count per rev can be increased using what is called micro stepping. The steps get divided up by varying current to the poles to hold the armature between the two poles using fast PWM.

    Very rarely are steppers closed loop. If you command a stepper to move 200 counts, you will get 200 counts. The only reason you would need it is if you want to detect a few missed steps and compensate for it in your motion loop or detect a stall. The controller cant fix a stall unless it stops the current flows and starts over. And at that point you just ruined a part so its not much help.

    Servo motors on the other hand can run at very high speeds. Servo drives can supply extra current when necessary to overcome resistance and keep the motion smooth and on track. This is done via the velocity loop which calculates the speed from the encoder feedback. When the motor slows, current is bumped up to overcome the resistance. But its usually only for a fraction of a second. Too much resistance and the drives will stop with an over current fault. You need to slow your system down, reduce the load or up the motor size.

    Servo motors don't stall unless you lock up the output shaft which is usually a mechanical fault (hard limits hit, shaft coupler failure, bearing failure, etc.) or an undersized motor. And if you really want performance you get rid of the lead screws and rotary motors and go balls out with linear motors. They can achieve accuracies greater than 1 micron and speeds to 2+ meters per second. I have seen a few systems using them in person and its scary how fast they can gracefully accelerate and position a load.

    And torque? Man they have torque. I had a large XY table with little NEMA 23 500W motors snap the aluminum couplings like a twig. The drive went bad, lost sync and tried to launch the table to the moon. Even jammed the table guides and ball screw nut requiring me to un-stick it with a come-along. A real mess. A similar sized stepper would have stalled. That table can easily position 500+ pounds though most of our motion is low speed so we don't need huge motors.

  • by wagnerrp ( 1305589 ) on Tuesday May 27, 2014 @11:46AM (#47099863)

    All designed using Bowler, a new communications spec for machine control, because with Modbus, and Profibus, and ProfiNet, and ControlNet, and DeviceNet, and CAN, and EthernetIP, and EtherCAT, and X2X, and Pamux, and all the dozens of other industrial communications protocols, surely we need one more, and they're going to do it right this time.

    Obligitory! []

    • While I in general agree with you, you're conflating the issue between protocols and physical wiring.

      DeviceNet, ControlNet, and EthernetIP are all the same protocol (more or less) just over different physical buses.
      CANOpen and EtherCAT use the same protocol (more or less) just over different physical buses.

      CAN describes a physical layer for CANOpen, DeviceNet, and a few other protocols.
      Ethernet is used as the physical layer for EtherCAT, EthernetIP and ProfiNet.

      • Bowler is just the packet protocol, independent of physical wiring or wire protocol. That still has nothing to do with the primary issue of why they chose to write their own protocol, rather than choose an existing one that sufficiently approximated their needs. As a garage tinkerer, surely you would want to use hardware that operated on an industry standard interface, so you could choose from a vast selection of existing hardware. As an educator, surely you would want to use hardware that operated on an

  • Great... Don't current 3D printer controllers use microstepping?
    With a 300 step motor and 16 microsteps you can drive a stepper motor to 4800 steps per revolution +/- 0.

Real Programmers don't write in PL/I. PL/I is for programmers who can't decide whether to write in COBOL or FORTRAN.