Tweaking a stepper controller

Thread Starter

atferrari

Joined Jan 6, 2004
4,771
I got for free a board controlling a stepper motor.

No manual and very few technical notes available.

I managed to reproduce the circuit myself so that is not a problem. Trying to interfere the micro in charge is useless. I will program my own.

Motor driver is a SLA7020M. http://www.datasheetcatalog.com/datasheets_pdf/S/L/A/7/SLA7020M.shtml

The circuit, according to data, generates three different Vref values applied to the above IC: 0.620V, 0.320V and 0.060 V) for three different speeds (1900, 900 and ??? pps). So far so good but the when the motor is iddle, I measure a Vref which is not the highest nor the lowest: 0.157 V.

The very limited functionality I could check shows that Vref changes almost continuously (my guess is acceleration - contsant speed - deceleration stages).

Up to now I believed I understood the basics of controlling current in a stepper but I see some questions are in order:

a) What is the actual reason to change the Vref (thus actual current) when varying speed?

b) Why the Vref used whit motor iddle is not the lowest one (thus lowest current) Puzzling, to say the least.

c) When iddle, that current is the one ensuring the holding torque?

d) I am going to use that stepper at much lower speeds. Lower speed means a lower Vref being applied to the SLA7020M?

e) Honestly I do not want to do a wrong first atempt that could damage the circuit nor the stepper. What is the safest (even coward) approach?

Tried to conclude something from the datasheet but since hardware is already there all I can imagine myself changing is software and (maybe) Vref.

Gracias for any help.
 

SgtWookie

Joined Jul 17, 2007
22,230
I got for free a board controlling a stepper motor.
Free is most often good. Sometimes free stuff can become more trouble than it's worth, but it sounds like you're learning a lot from this board. ;)

No manual and very few technical notes available.
That makes it more interesting. ;)

The circuit, according to data, generates three different Vref values applied to the above IC: 0.620V, 0.320V and 0.060 V) for three different speeds (1900, 900 and ??? pps). So far so good but the when the motor is idle, I measure a Vref which is not the highest nor the lowest: 0.157 V.

The very limited functionality I could check shows that Vref changes almost continuously (my guess is acceleration - constant speed - deceleration stages).

Up to now I believed I understood the basics of controlling current in a stepper but I see some questions are in order:

a) What is the actual reason to change the Vref (thus actual current) when varying speed?
The higher the current through the stepper motor (within limits), the more torque the motor produces, thus higher stepping rates/greater RPM can be achieved. However, this dissipates more power in the motor itself, and if left at maximum power for very long, the motor may overheat. Also, power consumption increases quite a bit, which is not environmentally friendly.

Another good reason for changing Vref is the nature of the load. If it were purely resistive (as a zero-mass shaft that had high friction as in a brake), high torque would be required to start the shaft turning, and the faster the stepping rate, the more torque would be required to get it there. However, when the stepping rate were being rapidly decreased, the braking action of the load could permit lower motor current, as the flywheel effect of the motors' rotor itself would supply some torque. Idle torque might be able to be reduced, as the friction might be sufficient to hold the shaft in place.

At the opposite end, a load that was a large flywheel would require a great deal of torque (and high Vref) to make ANY change in speed. Once the desired RPM were reached, the Vref could be reduced, as much less torque would be required to keep a flywheel spinning at a fixed speed than to change the speed of the flywheel.

b) Why the Vref used with motor idle is not the lowest one (thus lowest current) Puzzling, to say the least.
The original load may have been something that was required to be held in a rigid rotational position, that did not require as much torque as when accelerating to high speed, but required more torque than when de-accelerating.

c) When idle, that current is the one ensuring the holding torque?
This question seems to be kind of redundant to the previous one.

Basically, you need to consider the nature of your load. Use enough torque (high enough Vref) to ensure that the load can be held w/o rotating at idle. You'll really need to experiment to find the right balance. Or, you might try to compute the whole thing out.

d) I am going to use that stepper at much lower speeds. Lower speed means a lower Vref being applied to the SLA7020M?
It depends upon your load. If it's mainly a friction-type load, you may need fairly high torque no matter what the stepping rate is. If it's a flywheel-type load, you may need high torque when changing stepping rates, but less torque when it's at the desired speed.

e) Honestly I do not want to do a wrong first atempt that could damage the circuit nor the stepper. What is the safest (even coward) approach?
Make certain that the Vref cannot exceed a value that will result in too much current through your stepper motor.

For example, let's say that your stepper motor is rated for 1A maximum, and you are using sense resistors that measure 0.5 Ohms exactly. Since E=IR, then E=1A*0.5=0.5v; Vref must not exceed 0.5v, or damage to the motor may occur in a short period of time. The lower you keep your Vref, the lower the power dissipation in the stepper motor, and the lower the temperature rise. If you want to really play it safe, stay below 50% of the current rating of the motor.

Keep in mind that stepper motors dissipate heat through their mountings. I suggest that you get a fairly good-sized chunk of scrap aluminum or the like, and bolt the stepper motor to it. If you don't have something like that, then you will need to monitor the temperature of the motor, and shut it down when it starts getting warm. Without adequate heat sinking, you might wind up overheating the motor even when operating it at reduced power.

Tried to conclude something from the datasheet but since hardware is already there all I can imagine myself changing is software and (maybe) Vref.
Sure, you can do that. But, you need to determine what your load is going to be. For starters, why not just make a simple pointer or "flag" using a piece of tape wrapped around the motor shaft so you can see what the rotational position of the shaft is while the motor is running?
 

Thread Starter

atferrari

Joined Jan 6, 2004
4,771
Thanks for your reply, SW.

Motor described as 4-phase 48-pole. My intention is to drive it in 2-2 phase mode.

Prior starting to write code I would like to solve these doubts:

a) If a full cycle takes 4 steps, to make a full turn I should complete 12 cycles. Am I right?

b) The notes I got mention "1200 pps". Does it means 300 full 4-steps cycles?

c) If I do 360º/48 = 7,5º / step. Is it correct?
 

SgtWookie

Joined Jul 17, 2007
22,230
If there are 48 poles, then you will have 7.5° degrees per step. If you use half-stepping, you'll get 3.75° per step. If you want to look at it as "complete cycles", then 48/4= 12 cycles. I don't know why you would want to look at it as "complete cycles" though.

1200 pps would be the maximum stepping rate. If for some reason you have to look at it as "complete cycles", then yes - 1200/4-300.
 
Top