06-05-2012 06:11 PM
I am writing a vi that controls two stepper motors, and am looking to be able to control the degree rotation between the two motors.
2 Stepper Motors (CTP12ELF10MAA00)
MID-7604 Drive Box
PCI-7330 motion controller
I've attached my vi, what I am trying to do is control the amount of twist (alternating from no twist to the max twist) between the two motors. I belive the vi performs this fairly well as I can visually see the twist when I run it.
I run into an issue sometimes that one of the stepper motors will stall when I reach RPMs of about 600+ (10Hz) although the motor is rated for 3000 RPM. This has occured even with no load on it, which leads me to believe there is something else causing it. Could anyone offer some improvments to the vi (functionality or architecture), or see where a problem like this could be coming from?
Thank you for any help you can offer,
06-06-2012 10:24 AM
Stepper motors can stall out before reaching the rated maximum velocity if the acceleration is too high, even with no load applied to the shaft.
Can you try to lower the acceleration rate?
06-06-2012 11:49 AM
Would the acceleration rate only be controlled by how fast I'm changing the RPMs? Or is there some other control or way to monitor the acceleration rate. The stepper has stalled even when I was not changing RPMs but keeping it at some constant rate for a few minutes.
06-06-2012 03:23 PM
I am not sure how the motion control HW/SW set accelleration rates, maybe setup in MAX?
Have you set your DIP switched on the MID to match the current rating of your motors? (default on the MID is 0.5A peak I believe, motors rated at 1A)
06-07-2012 12:30 PM
Thanks for your help, I think you may be right about the acceleration being the limiting factor in my application. I did some calculations on what the angular acceration is during the run, but couldn't find what the motors are rated to, just the encoders. But, the encoders are rated to 10^5 rad/s^2, which is much higher than what I'm running it at.
I do hvae the DIP swtiched to 1A which is what the motors are rated to. I was looking around but haven't found where the acceleration rates can be controled in MAX.
I've attached a cleaned up version of the vi. I was thinking about putting it into a state machine structure with event loop. I know that is a much better architecture for many labview programs; is it compatible with motion control? Would it be beneficially trying to go that route?
06-08-2012 05:52 PM
So the issue is that both identical motors should be turning at the same rate, but a difference is developing? How are you verifying the difference? Is the difference apparent from the encoder measurements or can you actually see it stalling? Have you tried swapping the motors and see if it's a motor issue rather than the code itself?
06-11-2012 01:40 PM
Hi, sorry if I wasn't clear on the application and problem.
Think of it like a rotating torsion-type fatigue test. I have a flexible tube between the two motors. I set a certain degree of torsion per rotating cycle (say 10 degrees for example).
The program I wrote seems to maintain that torsion pattern over time (no accumulating difference), however when I bring the motors up to speed; in the 600 RPM range, after a minute or two a motor will stall. Its very clear it stalls (no more rotation, my chart drops to 0).
I thought AK2DM may have hit upon whats going on, acceration rate. But it seems that my acceleration rate even at 600 RPM is quite low.
Any ideas you could offer? I was worried if the way the program was written is not very efficient, and at high rates the data can't be sent to the motors quick enough and it stalls. But, im not sure if thats even logical
06-12-2012 07:19 PM
Would you mind swapping the motors just to see if the behavior is unrelated to motor? It sounds like only one is stalling, not both. Is this correct?