Stepper motor problem

Hi!
I edited a code with labview to control the motion of my stepper motors
by simply sending a command to the serial port 1, this command depends
on the controller card.
It works absolutely fine but when the code is running for long, the
stepper motor goes funny and doesn't stop , I have to switch off the
controller card power supply resulting in the lost of the reference
point I have previously set up.
It might be the buffer memory getting full, I tried to initialise the
port without any success, it still does it.
It is crucial for me to solve this, the stepper motors are used to
transverse optics such as lens and mirror. If this happens again the
optics could be crunched.
Thanks
Fabrice
Sent via Deja.com http://www.deja.com/
Be
fore you buy.

Stepper motors can get stuck and resonate if they are driven at too high as
frequency or if they are overloaded. If that is what is happening when "the
stepper motor goes funny and doesn't stop" you should try changing your driving
frequency or if you are using a six-wire two-phase stepper you may be able
to change the wiring configuration to allow more torque or a faster frequency
response.
-Jim
[email protected] wrote:
>Hi!>I edited a code with labview to control the motion of my stepper motors>by
simply sending a command to the serial port 1, this command depends>on the
controller card.>It works absolutely fine but when the code is running for
long, the>stepper motor goes funny and doesn't stop , I have to switch off
the>controller card power supply resulting
in the lost of the reference>point
I have previously set up.>It might be the buffer memory getting full, I tried
to initialise the>port without any success, it still does it.>It is crucial
for me to solve this, the stepper motors are used to>transverse optics such
as lens and mirror. If this happens again the>optics could be crunched.>Thanks>>Fabrice>>>Sent
via Deja.com http://www.deja.com/>Before you buy.

Similar Messages

  • Smc emy2 stepper motor problems

    Hi,
    I am trying to set up a stepper motor to run with labview 8.2. I am pretty sure that the code I have written should work so I am trying to figure out if I have wired everything correctly, I hope this is the right place for this. I have added the description and manual for the SMC EMY2 stepper motor (page 22 is where I am looking mainly for the wiring, I am using the 5-point Stoppable Type) and manuals for the two NI DAQs I am using, NI9474 for the control singals to the motor and NI9423 for receiving signals from the motor. I am using an external power supply with these that is set to 24V. I have the NI 9474 in slot 5 of the cDAQ-9172 and the NI 9423 in slot 6. I have attached to the power supply cable wires wires as described in the EMY2 manual to the power supply and the motor runs fine when using the attached controller, then I have attached the I/O wires as follows:
    Brown - Vsup of the NI 9474
    Blue - Com of the NI 9474
    Pink - line 0 of the NI 9423
    Orange - line 1 of the NI 9423
    Yellow - line 2 of the NI 9423
    Red - line 3 of the NI 9423
    Green - line 4 of the NI 9423
    Purple - line 3 of the NI 9474
    Gray - line 7 of the NI 9474
    Black - not attached
    White - line 2 of the NI 9474
    I can get the NI 9474 to output a signal but the stepper motor does not seem to react at all. I had a colleague recommend that I connect the - terminal of the power supply to the ground terminal, is that a good idea. If anyone can think of something to help that would be great and if you need more information just ask and I'll try to get it.
    Thanks.
    Attachments:
    Stepper Motor Manual.pdf ‏2396 KB
    NI 9474 Operating Instructions.pdf ‏237 KB
    NI 9423 Operating Instructions.pdf ‏401 KB

    Hi rlacroix156,
    Looking at page 22 of the stepper manual, it looks like there are two seperate power supplies that are referenced.  Are you using 2 power supplies? Also, have you considered using just one module since you are only using 7 lines?  Then you eliminate the split grounds between the modules.  Which brings me to another point.  The 9474 DIO lines are tied to the power supply ground.  The Blue and Brown lines you mention, are those DC2 or DC1?
    Kristen H.

  • Stepper motor input pulse problem

    Hello
    I've purchased 4 autonics a41k-m599 model 5-phase stepper motors and 4 MD5-MF14 model drivers. I want to pulse the drivers via parallel port with c++. Now I have some serious problem, first I can't get a higher speed than 666 pps (1500 microseconds interval), second and more important when I send pulse to driver I see motors rotate smoothly but in some moments (and not regularly) they produce some small pauses which result in some small shakes or vibrations. Here I send you a scrap of my c++ code:
    // ten cycle
        for(int iLoop = 0; iLoop < 10; iLoop++) {
            // 500 step to complete a cycle (each step is 0.72 degree)
            for(int j = 0; j < 500; j++) {
                outp(LPT1, HIGH);    // send HIGH to CW through LPT1
                outp(LPT1, LOW);    // send LOW to CW through LPT1
                DelayMicroSleep(1500);    // delay 1500 microseconds as pulse interval
    Here's a picture of my driver's time chart and input pulse specifications:
    http://lh4.ggpht.com/_sFND_wFW_Qo/SttpJRzLpKI/AAAAAAAACGA/uRNWYH519dU/s800/StepperMotorTimeChartPuls...
    So now what could be the problem?

    Should you not have a delay between sending the high and low pulse? Otherwise the pulse will happen very quickly.
    // ten cycle
        for(int iLoop = 0; iLoop < 10; iLoop++) {
            // 500 step to complete a cycle (each step is 0.72 degree)
            for(int j = 0; j < 500; j++) {
                outp(LPT1, HIGH);    // send HIGH to CW through LPT1
                DelayMicroSleep(hightime);
                outp(LPT1, LOW);    // send LOW to CW through LPT1
                DelayMicroSleep(1500);    // delay 1500 microseconds as pulse interval
    nrp
    CLA

  • Problems when trying to move 3 stepper motors

    Hello,
    I am having problems when I try to build a program to control 3 stepper motors.
    I have 3 steeper motors and the controller (3 SMCP33 + SMCP33-EVA) from nanotec.com they provide also a Vi example to control one motor that works successfully but the problems come up when I try to adapt the program to try to run the 3 motors. The final application for that is going to be a Cartesian robot XYZ so eventually I will need to program coordinates to move the 3 motors.
    I am new in LabVIEW so what I am doing is trying to adapt the nanotec example to control the 3 motors doing the following.
    - I assign each motor a different address, doing that I can run each motor separately. But when I try to run 3 programs at the same time, they work but all of them move the same motor (the first that was run).
    - If I try to do a kind of subVi the same thing happens, only one motor is driven.
    - Furthermore,  I get back a warning when I try this, I enclose a screenshot of that.
    I enclose the Vi and screeshots to enhance my description.
    I woul be grateful if someona can aport some help.
    Regards.
    Solved!
    Go to Solution.
    Attachments:
    Untitled.jpg ‏59 KB
    error details.jpg ‏136 KB
    Nanotec Motor1.zip ‏68 KB

    Hello johnsold,
    Thank you for replying. Enclosed is a picture where can be seen the motor address. This case is for motor 1, for motor 2 would be number 2 and 3 for motor 3. It works if I run the programs one by one. Anyway I enclose the generic example without any manipulation by myself.
    Thanks again.
    Attachments:
    error details1.jpg ‏259 KB
    Nanotec-Example for LabView 2011.zip ‏68 KB

  • Trouble positioning a stepper motor accurately (to one step)

    I'm using a PCI-7344 with an MD7506 motor driver from RS. I'm testing angle sensors whose voltage output is proportional to (you've guessed it...) angle.
    I'm stepping the motor round by one step, checking that it's got there by reading the encoder, measuring the sensor voltage and repeating.
    My problem is that the motor sometimes 'hunts' around the target position. In closed loop (with an encoder associated with a motor) this results in sometimes not being able to reach the target exactly with the pull-in moves.
    Using open-loop and reading the encoder directly I get better results because I can loop more times, but the motor will still 'hunt' around a target point, changing direction a few times as it over
    shoots by a step.
    As there are a million MAX settings for this I won't list them all here, but I'm checking for a move complete when the InPos flag is set and I have a deadband of 0 steps too. I'm only rotating at 120 step/sec with a 10ms pause between steps.
    Do I have to accept that stepper motors are only accurate to +/- 1 step or am I doing something wrong?
    Thanks,
    Mike
    Mike Evans
    TRW Conekt
    N.I. Alliance Member, UK
    http://www.Conekt.net

    Mike,
    Maybe other people will have better suggestions, but in my case I can advise to either:
    1. increase the number of pull-in moves,
    2. increase the microstepping of your drive,
    2a... together with a higher precision encoder...
    Other than that, the accuracy is advertised to +/- 1 step, so maybe you would like to consider a stepper with more steps/rev.
    Good luck!, I hope other people will give other suggestions.
    Nestor.
    Nestor
    National Instruments

  • Stepper motor and loacell PID control - waveform motion.

    Hi, 
    Hardware :  cRio9073, C series module 9403 for stepper motor control and 9215 for load cell data acquisition. 
    I am trying to control a stepper motor in a closed feedback loop system with a load cell. The user would have to input two things : the maximum load applied and the frequency of the motion. At the moment I have it working in open loop controlling how many steps forwards or backwards it does and at what rate, with a display showing the load being applied.
    I am now looking to include the "PID.vi" built into labview into my existing code. I am using the load cell output as the 'process variable' and the 'output' of the PID will control the wait time between an ON and OFF signal to the motor (since I have to do the PWM in software as the 9403 module doesn't do it in hardware. Is this the right way to do it? ) 
    I wish to make the motor do a sinewave motion, thus the 'setpoint' of the PID would be dynamic. I have therefore linked the "Sinewave form.vi" (also built into labview) to the setpoint and the frequency of the "Sinewave form.vi" will be the user input for the frequency of the motor. However my problem lies with the 'Sampling info' of the "Sinewave form.vi" : Previously that is what controlled my number of steps, defining the maximum displacement of the motor. Now I need the peak of the generated sinewave to coincide with the maximum load applied defined by the user. How can I make it do that? 
    I have attached my existing code with how I have attached the PID.vi at the moment. 
    Many thanks for your help
    Lawrence 
    Attachments:
    PIDControl.vi ‏23 KB
    BIOGROWTH.lvproj ‏46 KB

    Hi Lawrence,
    Here is an example PID VI.
    Regards
    Rico P
    Attachments:
    General PID Simulator.vi ‏22 KB

  • Stepper motor closed loop control using 7344

    I have some question about the closed loop control of stepper motor using 7344. From the NI website I got that closed loop steppers work differently from closed loop servos. Instead of adjusting the output on each PID iteration like a servo system, closed loop steppers will do a pull-in move at the end of a move to adjust for any difference between the target position and the encoder feedback. By default, it will attempt the pull-in move three times.
    Now for example I got five points: (0,0) (10,20) (30 40) ( 31 60) (50 65). The request time interval I set as 10ms. This mean that in the first 10ms, the machine should move from (0 0) to (10 20). But for some reasons the machine can not move to (10, 20), it moves to (8,16) and the first 10ms passed. In the second 10ms, how it move? Move from (8 16) to (30 40), If like this, the following error will accumulated. In practise, it is not accumulated. Is there anyone can explain something about the closed loop control of stepp motor? Thanks a lot!

    Requested Interval is additional data for the Position buffer type. The Position buffer type requires a Requested Interval parameter, and indicates the time between contouring data points in milliseconds. For all other buffer types, the Requested Interval parameter is ignored.
    The controller will use the closest value it can that is greater than or equal to the interval value you requested. Your time interval must be an even multiple of the PID rate.
    For example, given a PID rate of 250 ms, a time interval of 11.2 ms between points is physically impossible, so a call to configure buffer with an interval of 11.2 causes the  buffer to actually be configured for 11.25 ms, since 11.25 is the nearest possible interval greater than 11.2. The following table shows valid intervals for each PID rate.
    My question is like this. For example I got five points: (0,0) (10,20) (30 40) ( 31 60) (50 65). The request time interval I set as 10ms. This mean that in the first 10ms, the machine should move from (0 0) to (10 20).  If it is impossible for the machine to move from (0 0) to (10 20), there are two ways to solve this problem. First is the time interval is 10ms and assume it move to (8 16) within 10ms and take (8 16) as the start point and (30 40) as the end point of the second move. Second is extend the time interval, assume it takes 14ms to move from (0 0) to (10 20). After 14ms, the (10 20) is the new start point for the second move. I think it works as the second ways.If not, the following error will accumulated.  Is there anyone can explain something about the closed loop control of stepp motor in detail? Thanks a lot!

  • Stepper Motor with Linear Stage (Position Control and Data Acquisition)

    Hey All,
    So.. I've attached a stepper motor to a linear stage and so far it's working pretty well.  Using a stepper motor driver from Pololu, I've simplified the control of the motor by just using output pulses from the counter output of a PXI-6143.  I've tested the motor using the Pulse Train examples in LabVIEW and all is working well.  
    My goal now is to allow the user to collect data from a pressure sensor, attached to the linear stage, every X number of steps.  From what I can tell so far, and please correct me if I'm wrong, the motor step movement is synchronised with the pulse train input.  That is to say, if I give the motor a 200 step pulse train, the pulse train ouput is completed at the exact time the motor has moved 200 steps.  From this, I've created a VI that moves the motor X steps, aquires the data point, and then repeats this process for the required amount of data points.  The problem with this is that the motor movement is not continuous; it stops for a split second to take the data point.
    How can I have labview ouput a pulse train of say 1000 steps and record a data point every 50 steps?
    Two ideas that came to mind were:
    1. Use the counter input port on the card to count the pulses being sent to the motor.  
    2. Use an encoder connected to the motor shaft.
    I wanted to stay away from theses ideas though since they require resources from the DAQ card.  
    Thanks,
    Ryan

    Hi Ryan,
    Just to cover all the bases, what version of LabVIEW are you using and can you attach your VI? Initially your ideas sound like they should work, do you expect to be nearly maxing out the DAQ?
    Thank you,
    Deborah Y.
    LabVIEW Real-Time Product Marketing Manager
    Certified LabVIEW Architect
    National Instruments

  • How to generate digital pulses to run stepper motor in a sinusoidal motion profile using NI DAQ 6229 card

    Hi,
             I need to make a stepper motor undergo rotary oscillation with a sinusoidal motion profile. As it nears the extreme points it should decelerate and finally slow down to zero velocity and then it should reverse direction and accelerate until it reaches the other extremity where it should slow down and stop and reverse direction and repeat this motion.
            The hardware is NI DAQ 6229 and the stepper motor can be controlled using digital Hi-Low (1,0) pulses. For each high pulse(1's) the motor turns 1 step. I am able to generate a analog sine wave and convert it to digital data using Analog-to-Digital.vi  But i am not able to convert the digital data to a stream of 1's and 0's in the correct sequence to get the sinusoidal profile with the amplitude and frequency i require.
            The direction of rotation can be changed by giving a pulse to another input of the stepper motor. So only half cycle of sine wave needs to be generated and it can be replayed after changing the direction to get the full sinusoidal profile.
    Any ways of making this approach work or any new approaches to this problem would be helpful. Thank You.
    Regards,
    Prabu.
    Solved!
    Go to Solution.

    Hi,
             I finally figured out a way to do it. The analog sine wave is converted to digital and sampled. Consecutive values are compared and if the least significant bit(LSB) changes then a pulse is sent to the stepper motor to turn one step.
    I have included the sub-VI's that accomplish it for the particular stepper motor and connector block i have. The front panel of both sub-VI's are quite messy but the block diagrams should be much clearer. The sub-VI's get their inputs from a third VI which i have not included. So take a look at the VI connector panel to figure it out. Hope this helps. Kinda messy but worked out fine in the end for my application. 
    Thanks again for all the help. I appreciate it very much.
    Regards,
    Prabu Sellappan
    Graduate Student
    Aerospace and Mechanical Enggineering
    University of Southern California
    Attachments:
    start motor test waveform dtest.vi ‏73 KB
    sine profile generation subVI.vi ‏41 KB

  • Shared variable engine modbus - Getting a stepper motor to work

    Hello,
    I am new to Labview. I need to trigger the stepper motor to start by allowing current to run through the motor. This can be done by turning bit3 on the16 bit register 007Dh. The register address has been attached below as 007Dh.png so please view that before you go any further to have a better sense of what i'm trying to accomplish. Please also note that the decimal conversion of 007Dh is 125.
    So my question is, how do you turn on bit3 of that 16 bit address? How would you translate the holding registers from the manual
    into a 5-6 digit data item that labview can understand?
    (Please refer to this page for the types of data items: http://zone.ni.com/reference/en-XX/help/371618J-01/lvmve/dsc_modbus_using/)
    Attachments:
    007Dh.png ‏17 KB

    Hello Frank,
    Thank you for the help with the modbus slave simulator, everything worked just fine. However I still can't get the real device to work with labview. I am wonding if you can answer a question for me as I am not sure I can do what I want with the equipment I have. 
    What I need to do is turn a stepping motor on and off using Labview as well as get Labview to record the speed and position of the stepping motor over time. I have an AED-AD stepping motor driver made by Oriental Motors. I have attached the user manual in case you need to see it. I am conecting the motor driver device to a computer using an RS485 converter, which oriental motors suggested I use for the purpose of using Labview to collect data. 
    My question is, will this setup work for what I need to do, or do I need some kind of data aquisition device as well? 
    After I solve this, I will be adding three more motors to the Labview program monitoring the same thing as well as some pressure sensors.
    I have just finished my second year in the engineering program and have been hired as a research assistant to solve this problem so I am completely new to Labview. If there is anything else you can suggest to read or someone I can talk to to get more information about this type of control systems I would be very greatful. So far, I have been reading as much stuff as I can find about Labview on the internet but I have not come across anything that helps me figure out if my setup is appropriate for collecting data in Labview.
    Thank you again for your help and advice! I hope you are having a great weekend!
    Kind Regards,
    Meesh
    Attachments:
    HM-60065-3E.pdf ‏1787 KB

  • Anaheim Automation stepper motor with PCI-7330 and UMI-7764

    Hi, I'm fairly new to LabView 2010 and stepper motors in general. I've been trying to get an Anaheim Automation stepper motor and encoder to work with LabView with some success but it isn't quite right. My main problem is when the home switch is activated the whole thing is killed and I cannot get it to respond unless I manually turn the motor so that it is not on the home switch anymore. After that it will run ok, unless it hits the home switch again (btw if it hits the forward limit switch it will stop but it will accept a command to move away from it).
    Could someone please take a look at my wiring diagram in the link below and let me know if there is anything obviously wrong with how I wired it up or if you have any suggestions on where my settings might be going wrong I'd really like to hear from you. 
    Thanks,
    Rob
    Wiring diagram: https://docs.google.com/present/edit?id=0AW08JmeQD7nyZHBzejljOF82OWc4NHg4Z2M4&hl=en_GB&authkey=CPbsv...
    Tech sheets:-
    Stepper motor: http://www.anaheimautomation.com/manuals/stepper/L010130%20-%2023MD%20Series%20Users%20Guide.pdf
    Encoder: http://www.anaheimautomation.com/manuals/encoder/L010723%20-%20ENC-A2N%20Single-Ended%20Encoder%20wi...

    Thanks for the reply, I am trying to run any of the find reference example VIs from NI. I've not edited the code in any way.
    The motors will run with the wiring I've posted, it'll move to the forward limit switch then come back again but it will then hit the home switch, the motor stops and cannot be started again until it is manually moved off the home switch. It has never made it all the way to the reverse limit switch meaning I cannot use home (it stops) or the centre (can't find the reverse limit) as a reference point.
    It was suggested to me I might have the grounds miswired, the manuels were not all that clear so I'm unsure.

  • Using LabView, Arduino, and Easy-Driver to control a Stepper Motor

    Hello fair folks of the LabView forums!
    I am a humble engineering student in need of some advice and input on a project I am working on.
    I’ve also done a fair amount of reading on the LabView forums with people trying to use LabView and Arduino to control stepper motors, and I’ve used as much information from each as I could. However the problem I'm encountering now is one which is unique to my VI Configuration.
    So, here is what has been done thus far:
    -Installed LabView Interface for Arduino [LIFA]
    -Installed necessary VISA drivers for LabView to communicate with arduino
    -Uploaded firmware to Arduino to allow it to communicate with LabView
    -Properly wired Stepper Motor with Easy Driver and Power Supply; I have verified this by first using the Arduino independently of LabView, using example code found here.
    -I have created a VI, and have just recently got it to run without reporting back any errors. While I suspect the behavior I’m encountering has to do with something inside the VI, it is difficult to determine as there are no errors being reported!
    But here is general problem I am encountering:
    -Connect Joystick to USB Port, connect Arduino to USB Port.
    -Plug in outlet for Power Supply
    -Open LabView VI
    -Run LabView VI
    -LabView successfully detects Joystick, and Arduino.
    -Tilt Joystick; Stepper Motor moves in proper direction, but it only takes a single step. If held, it does not move further. If returned to zero, and then tilted, it again only takes a single step.
    I know that in the example code, the Arduino issued the step command by writing the signal from LOW to HIGH, and varied the speed by how often it did this.
    I assumed that the Write-PWM feature would do this same thing, but perhaps my assumption is wrong. I will continue to tinker with this myself, but I would be extremely grateful for any insight you might be able to lend.
    I’m thinking, if not the Arduino Write-PMW feature perhaps a simple timing-sequence that could be used to alternate between writing 0 and 1, with the timescale of the sequence being scaled to the X-Axis from the Joystick. But, I am open to suggestions, and certainly appreciate any thoughts you may have to offer!
    Attached to this is the VI used in this setup, a picture of said VI, as well as a rough sketch of the hardware configuration.
    Thank you!
    Attachments:
    Arduino Stepper Control.vi ‏1224 KB
    VI Picture.png ‏82 KB
    Configuration Sketch.png ‏522 KB

    Hi danjifraga,
    I am not so familiar with the Arduino toolkit functions, but you may have better luck looking at the Arduino page at:
    www.ni.com/arduino
    I'll ask around on Monday to see if anyone is more familiar with the toolkit.
    Good luck,
    Brian
    Brian G.

  • Drive a stepper motor

    Hi,
    I'm using LV 7.1 Pro under Windows XP. I can use a PCI 6602 card and also a PCI MIO 16 XE-10. I must drive a stepper motor via a specific driver : Philips TJA1010. This driver is working with a clock at ~7 Khz used as timebase and it has a serial data input  that will activate the differents driver outputs connected to the stepper motor to create the rotation.
     The sequence order to send via the serial data input is described in the attachment. The problem is to be able to generate this sequence on the serial data input. I already checked on the forum and found the .vi attached but I don't see how to create my sequence.
    Thank you in advance for your help
    Attachments:
    drive stepper motor.vi ‏139 KB
    cycle_stepper_motor.JPG ‏72 KB

    Hi pasolo,
    I'm not familiar with the TJA1010, so I'm assuming for this post that you have already hooked up one of the digital lines from your DAQ card to the input on the motor driver.
    From what you describe, it sounds like you want to do a specific pattern generation on an external clock.  There is actually a great example for that in the NI Example Finder.  Just open LabVIEW and go to Help >> Find Examples.  From the Browse tab, go to Hardware Input and Output >> DAQmx >> Digital Generation >> Cont Write Dig Port-Ext Clk.  This should allow you to write a pattern of 0s and 1s that correspond to your required waveform.  Also, some of the other examples in there might be helpful to look at as well.
    I hope this helps!
    Thanks,
    Justin M.
    National Instruments

  • Code drived stepper motor

    Hello,  first to
    apologize for my bad English 
     I made a program for
    driving a stepper motor CW and CCW with pulse.
     I used USB-6008 for
    sending pulse to a motor driver..
    Now I’m making a program for driving a motor with typed in
    code:
    F=4        // Forward
    (CW) 4 steps
    B=12     //Backward
    (CCW) 12 steps
    S=2000  //Speed 2000
    B=2        // … and so
    on…
    Parser splits this code in 2 array’s then determinates a tip
    of command and then sends them to a block for driving a motor..
    PROBLEM:  Motor
    driving block is not responding ()
    (In Motor driving block Instead of  pulse generator I’ve putted a random number
    generator. Just to avoid constant connecting a hardware )
    Pleas help mi solve this problem. Thanks in advance !
    Attachments:
    Step Motor Bot.vi ‏82 KB
    Motor.vi ‏139 KB
    Parser.vi ‏30 KB

    Step Motor bot only runs once.
    If you pick Auto and run it, the block gets parsed into two arrays.  You pick out the first row of the array and send that to STM.  But there is nothing left to loop back and and set the other values in your parser.  Turn on Execution Highlighting and run it.  I'll think you see what is going on.
    I think you still need to rethink your architecture.  I think the Action Engine nugget would help you figure out what you want to do.
    Message Edited by Ravens Fan on 02-02-2009 05:49 PM
    Attachments:
    Step Motor Bot_BD.png ‏19 KB

  • Position drift during the stepper motor controlled back and forth motion

    Hi everyone there,
    I get a headache position drift problem during the stepper motor controlled back and forth motion. I have been wroking on the problem for the last two weeks, and still can not figure it out. So I write down here my problem in hope of getting some clues from those have some experiences in stepper motor motion control.
    My goal is to use a stepper motor to drive a beam flage fixed onto the shaft to go back and forth for a certain angle, and this back and forth motion needs to be stable and reproducible within hours. With the SMD1 stepper motor driver, I only need to send in a pulse train to control the number of steps(the pulse frequency defines the stepping rate), and another pulse to controle the direction (i.e., cw or ccw). To do this, in LabView, I used the counter of the DAQ board to produce a finite pulse train to step the motor, and used one digital line to produce a pulse to switch the direction every 500ms, the timing is contolled by the software.(I used the oscilloscope to monitor these two pulses, the pulse train produced by the counter looks very stable, and delay between the pulse edges of the direction pulse and the pulse train is also very stable within 500ms. There seems no software timing problems at such a long delay.)  And this labview controlled motor appears to work perfectly as I required, the motor steps a defined number of steps at one direction, and then steps back at the origin position. But after running for a few minutes, the back position shifts gradually(I can not observe a obvious shift at the first few minutes) with repect to the origin position(the position I start running). I looked it up at the manual and also the website, I got a clue that this might because the motor steps at the resonace frequency of the motor and hence misses or takes extral steps sometimes. So I changed the steping rate from 1Hz to 1000Hz to see if the shift disappears or gets smaller at certain frequency range, but the shift always exists.
    I did observe the shift got smaller within the same running time when change the step model from full step (1.8degree/step)to half and quarter step model. According to this, the motor did miss steps (or pulses) during running, the quarter step model has smaller shift due to the smaller steps.  But I also noticed that the motor always shift at one direction, no matter I started with clockwise or counter-clockwise, this seems really strange to me. Because the motor should shift at each direction with the same probability if we assume the motor missis steps randomly.
    There is something must be wrong, either the labveiw program or the motor, but I don't even know a clue of this weird shift problem. And because of this, I haven't made any progress in my lab for the last three weeks. So any suggestions could be very helpful for solving this headache and will be really appreciated.
    Thanks a million in advance and Merry Christmas!
    Li

    Hey, Brian Beal,
    Thanks for your quick response. "accel" and "decel" mean acceleration and deceleration, am I understanding right?
    If yes, then I don't have these in my LabView program, I just generate one TTL pulse train and one TTL pulse with LabView and send them into the SMD1 stepper motor driver.
    The pulse train steps the shaft, and the other switchs the direction.
    Yesterday, I confirmed that if the motor steer always at one direction either CW or CCW, then the stepping were very stable, no missing or extra steps happen for hours.
    And I also observed that the motor took one extra step  from time to time when the direction changes. And this only happens when the direction switch from CW to CCW. (bizarre!)
    I guess this indicates that some pulse noise happens when the motor switch the direction too often.  But I just don't have any clue for irregular extra steps.

Maybe you are looking for