Follow Slashdot blog updates by subscribing to our blog RSS feed


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 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 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?
  • 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.

When you are working hard, get up and retch every so often.