Motor control loop
All movement and extrusion in 3D printer are done by electric motors.
These motors need to deliver a precisely known displacement or rotation.
There is different possibilities to obtain such precision.
An ensemble of a physical device, its control and power driver and eventual sensor system is called a loop.
It is a generic denomination which apply to any system, being it a unit generating a movement, a heater system, light generator or anything producing a physical effect.
An open loop is a system where an order to a device is sent without controlling the effective execution of this order.
If a feedback sensor is installed, the control system can adjust its command to have the device effectively comply with the order. This is called a 'closed loop system'.
While it does exist linear motors, all 3D printers are using rotating motors.
Sending orders to the motors
In the 3D printer world, orders are send in the form of requirement movements steps, which are calculated by a movement unit. It does exists others protocols where more simple orders of position or movement with acceleration and speeds are sent to the drivers, which are then doing detailed calculation to directly command the motor.
We will only expose systems where orders are sent with two signals called 'step' and 'direction'. A change in step signal give the order to move of a step (or fraction of step) , while the direction signal decide of the movement direction.
Simple stepper control
The most frequently used system is an open loop unit driving a stepper motor. Bipolar steppers with two coils (4 wires) are used in 3D printers. Change in current direction in the coils of a stepper makes the motor moving one step. Controlling the current of one coil relatively to the other gives finer movement control allowing to divide main steps in what is called 'microsteps'.
Such control can give a precise positioning system without having any measurement of the effective position. The wiring is simple as only one cable of 4 wires is needed to command the motor.
In 3D printers, most steppers are used with direct driving without any gearing, except for some extruder steppers as an extruder need more torque than movement.
The torque of a stepper depends from its speed, but in open loop system, the current is generally set constant, with only sometimes reduction when idling.
'Hybrid' stepper control
This is operating with steppers like in simple stepper control, but the stepper is equipped with a sensor giving information about the effective movement. The sensor also divide the movement in steps, but at a higher resolution than the stepper resolution. Having this feedback allow constant current adjustment and sending power only when it is really required. Most of the time, the required torque is much lower than the nominal torque so the stepper motor is less noisy and heat less.
If the position target cannot be reached, a default is triggered.
This is commonly used in CNC world but in 3D printer world, this kind of setup is extremely rare.
Servo control with brushed motors
DC brushed motors are very low cost. In a common brushed motor (named 'universal' motor), the coils are energised one after the other because a collector attached to the rotor switches the current while passing over the brushes.
As the switching is done by the motor itself, there is no direct link between the power sent to them and the effective position, so for a controlled movement system they shall be equipped with a sensor.
It is possible to have the sensor on the moved part instead of the motor, but this is a rare setup.
The brushes and collector are a source of noise, sparks, parasites and is wearing. In addition, most brushed motors have lower torque than steppers, so they shall have a geared transmission to movement, which add wear and imprecision. The advantage is that, even with a gearbox, for a given power, the weight of a motor is lower than the weight of stepper. If motors are parts of the moving components, this is an important point.
The low cost of the motor is counterbalanced by the cost of the sensor, however there was miscellaneous attempts to use them in 3D printers.
When used with a feedback sensor, motors are called 'servomotors'.
Servo control with brushless motors
Brushless motors are more costly than brushed motors but with the development of high power magnets, they have a very good power to weight ratio and better efficiency than brushed motors. They rotate because coils are energised one after the other and so the driver coil switching sequence defines the rotation speed. They became ubiquitous in the RC modeller world and so are available at relatively low cost. In addition, some development in the technology of these motors allow them to be built with high torque capabilities. These high torque motors have the rotor with magnet outside with fixed coils inside and are called 'outrunners'. As there is no brush, they have very low wear and are quite comparable to stepper. Indeed, steppers are brushless motors, but with different wiring and magnet circuits. In RC, motors are most of the rime running at minimum speed and the induced current in not energised coils is used to detect the position of the rotor. they are called 'sensorless' motors. However, to detect the position needs a minimum speed, so this is not usable for 3D printing and you need a position sensor.
Hybrid stepper controller projects
- uStepper Hybrid stepper controller integrated with stepper, based upon Arduino (8 bits) and A4988 driver.
Servo controller projects
- Servolulu brushed motor controller on RepRap forum Software is closed source
- dcservo by Misan, with open source code for Arduino and motors with quadrature encoders
- GitHub repository of sanchosk with a port of Misan's dcservo code to ATtiny85
- Mechaduino By Tropical-labs, using same processor as Arduino zero (32 bits)
- RepRap forum with DC closed loop efforts
- Pico-extruder attempt with DC motor and closed loop - goal is to make full extruder under 30 grams
- Brushed motor controller on RepRap forum
- Brushless motor controller on RepRap forum with main site Odrive
- Have a look at Category:Servo motors