The question may be a little too specific since it refers to some special choice of the motor parts that may not be used for everyone, yet I would like to learn about the general debug methods if similar problems occur.

I used a motor driver QJ-215 or CW-215 to control the moving of a linear stage PSL-85. My Labview program sends out the trigger pulses to the motor driver in order to control the direction and step size of linear stage. The pulse sequences for both directions are the same, so the linear stage is supposed to achieve a raster scanning with the moving distance same at both directions (+x and -x). The whole system works well.

Now I have an exactly same motor control circuit as the worked one. However, there is a problem with the new motor control part: the distance that the stage moves along +x axis seems more than the one it moves back (-x axis). As a result, the linear stages moves far away the original starting points as the scanning proceeds.

I can exclude the software glitch because: (1) it all worked well on my previous motor control circuits; (2) the pulse of direction is always provided prior to the pulses of moving steps in both direction, so there may not be pulse missing.

I also excluded the possibility of QJ-215 damage (H-bridge circuits broken, transistor not enough gain, etc.) since I have already changed another QJ-215 but same problem existed.

So there may be something wrong in the circuit connections onto the motor driver QJ-215. As you can see, the motor driver is not complicated designed with only a magnetic coil (A+,A-,B+,B-), and the H-bridge circuits with a bi-switch (DIR) and a step pulse receiver (CP)). I would like to know what kinds of errors in the circuits connections may cause such a unequal moving distance along +x and -x direction of the linear stage?

  • \$\begingroup\$ Try slowing the step-rate down and see if there is any change. \$\endgroup\$ – Tut Jan 20 '14 at 16:24
  • \$\begingroup\$ @Tut, thank you Tut, Based on my test,it seems like the loss is independent of step rate and total step size. \$\endgroup\$ – lennon310 Jan 20 '14 at 16:26
  • \$\begingroup\$ Make sure you don't have a loose set screw (a too persistent problem I am currently having :) ) \$\endgroup\$ – Tut Jan 20 '14 at 16:36
  • \$\begingroup\$ Without more info, like scope traces of the inputs and outputs of your motor controller or some very organized presentation of what the motion profiles are in response to your input, we're as in the dark as you. You're asking all the right questions. I think you'll need to roll up your sleeves and get very personal with your motor controller. \$\endgroup\$ – Scott Seidman Jan 20 '14 at 16:37
  • \$\begingroup\$ Guys thank you very much for your help. Yes I have to admit that my question still lacks more details. I guessed it may be just some ground or magnetic coils connection bugs that lead to the problem before I posted the question here, so I anticipated a general possible solution to my problem, yet the problem itself is too localized. My update now is: it seems like some of the pulses are lost due to the high clock rate of the digital card. \$\endgroup\$ – lennon310 Jan 22 '14 at 0:06

I think you might be looking at BACKLASH, which is basically loose fit parts in mechanical transmission systems. You have to turn the motor just to eat up the slack before any actual stage motion can happen. Ideally, motion feedback would come from the position of the stage, and not the pulses to the motor.

Such effects are NONLINEAR, and often hard to deal with. I suppose you can measure the backlash associated with changing directions (it doesn't have to be the same for both directions, and it doesn't even have to be consistent between instances) and work it into your control scheme.

  • \$\begingroup\$ Thank you Scott. Yes there is backlash effect in my case, but it is reflected by different step intervals. If you are doing the imaging during scanning, there will be a pixel mis-align between the 2k and 2k+1 lines. Such backlash did not change the strokes from two directions in my previous circuit. Thanks \$\endgroup\$ – lennon310 Jan 20 '14 at 16:31

How is motion feedback produced? The first time I tried to program a robot with motion feedback (decades ago), I failed to consider that motors could coast a little bit when they were powered off, and so attempting to move the motor e.g. 23 pulses would sometimes cause it to move 23 and sometimes 24. That could cause the next move to be processed incorrectly. To solve such problems, one should (1) slow down the motor as it approaches its destination, and dynamically brake it when it reaches its destination, to avoid or minimize overshoot, and (2) use a constantly-modified quadrature encoder to determine when overshoot occurs, and adjust the next move request based upon the overshoot (each count of overshoot should shorten the next move by a count if it's in the same direction, or increase it if it's in the opposite direction).

  • \$\begingroup\$ Thank you very much for your answer. In my system I don't have the feedback although it is better for me to have one (you are right, an encoder is very recommended for my system in the future). The pulse sequence is designed in prior (number, intervals) and then send to the motor driver. The pulse sequence is not evenly distributed, and it considers the acceleration and deceleration process. \$\endgroup\$ – lennon310 Jan 21 '14 at 23:52
  • \$\begingroup\$ It is strange that I decrease the clock rate of the PCI card (used to read the pulse input and generate the sequence at the output port), such a pulse lost disappeared. But with my previous (same) circuit I did not need to adjust the clock rate value...Still cannot figure out which part in my circuit may lead to such a problem.. \$\endgroup\$ – lennon310 Jan 21 '14 at 23:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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