-1
\$\begingroup\$

I have access to (not quite working) 3D printer. It has no endstops, no switches that would detect extreme positions of head or table. I know this because I was there when it was assembled. All cables are accounted for. 4 for each Nema 17 step motor, 2 x 2 for thermistors, 6 x 2 for heaters and that's all.

Yet, despite the lack of any sensors, printer can move head to extreme right or left, can move table to the bottom or to the top and so on. And motors don't get hot. It just goes to the end and then moves back a fraction of millimeter and stops.

So, how could they do it? What's the "signal" of end of possible movement, when all we got to work with is 4 cables that power said motor? Of course in my projects I plan to use proper endstops, but in case they fail, this would be a welcomed backup mechanism.

To clarify: When we first assembled this thing, it didn't crash to the side, and head was at pretty random position then. Or even if it was a crash, printer apparently somehow got to know about it, because now it has no problems with positioning.

\$\endgroup\$
8
  • \$\begingroup\$ Can you move your hand close to your face without touching it or watching it? The printer head knows how far it has moved and how big the table is. If if lost that information at some point and was not zeroed, it would crash into the side. \$\endgroup\$
    – Samuel
    Commented Feb 5, 2016 at 19:37
  • \$\begingroup\$ @Samuel it didn't when we first assembled it, and head was at pretty random position then. Or even if it was crash, printer somehow got to know about it... \$\endgroup\$
    – Mołot
    Commented Feb 5, 2016 at 19:38
  • \$\begingroup\$ Then it possibly has absolute encoders. It gets to know about it by zeroing it. \$\endgroup\$
    – Samuel
    Commented Feb 5, 2016 at 19:41
  • \$\begingroup\$ @Samuel I'll try to read about these "absolute encoders". And just by the way, human body does have sensors for joints angles. Humans that have them damaged can not move hand close to their face and not to slap themselves without looking. \$\endgroup\$
    – Mołot
    Commented Feb 5, 2016 at 19:43
  • 1
    \$\begingroup\$ Another method of sensing such extreme loads is to measure a current. When there is no possibility to make move at the end of axis (and driver still fed current to the motor) the torque increase abnormally and the current also increase a few times. \$\endgroup\$ Commented Feb 5, 2016 at 21:34

1 Answer 1

3
\$\begingroup\$

Stepper motors seldom use encoders. As you suspect, they normally run a homing routine, reset a counter to zero and keep track of the steps from then on. If you stall the mechanism the controller loses track and everything from there on will be offset.

The ST dSPIN L6470, for example, states,

The L6470 device, realized in analog mixed signal technology, is an advanced fully integrated solution suitable for dr iving two-phase bipolar stepper motors with microstepping. It integrates a dual low R DS(on) DMOS full bridge with all of the power switches equipped with an accurate on- chip current sensing circuitry suitable for non- dissipative current c ontrol and overcurrent protection. Thanks to a unique control system, a true 1/128 steps resolution is achieved. The digital control core can generate user defined motion profiles with acceleration, deceleration, speed or target position, easily programmed through a dedicated registers set. All commands and data registers, incl uding those used to set analogue values (i.e. current control value, current protection trip point, deadtime, PWM frequency, etc.) are sent through a standard 5-Mbit/s SPI. A very rich set of protections (thermal, low bus voltage, overcurrent, motor stall) allows the design of a fully protected application, as required by the most demanding motor control applications.

On page 35 of the data sheet we read,

Sensorless stall detection

Depending on motor speed and load angle characteristics, the L6470 offers a motor stall condition detection using a programmable current comparator. When a stall event occurs, the respective fl ag (STEP_LOSS_A or ST EP_LOSS_B) is forced low until a GetStaus command or a system reset occurs (see Section 9.2.20 on page 66).

Enjoy reading!

\$\endgroup\$
1
  • \$\begingroup\$ That seems to be it. And sounds more probable than encoders. \$\endgroup\$
    – Mołot
    Commented Feb 5, 2016 at 20:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.