Hey folks. I'm running an Arduino Uno controller with an adafruit motor shield attached, used to control a 200 step, 2 phase stepper motor. The motor runs on 12v, 0.3amps, and it is drawing this power as it should be. We've had no problem running other stepper motors on the shield, but we're using the stepper motor described above to turn a powerscrew, and we need a very high speed from this motor, 900rpm (or 15Hz). The motor is rated at a 1200rpm max speed, but the fastest we can get the motor running consistently is only 300rpm. We're using the AF motor library to control the motor. I'm trying to figure out why the motor isn't running as fast as it should be.
The clockrate of the Uno is 16MHz, which initially told me that the controller shouldn't be the problem. But is the clockrate the actual rate at which pulses are sent by the controller to the motor, or is the signal converted to some kind of sampling rate, and there are losses there? For instance, if the controller can only send 1 pulse per millisecond to the motor, then the Arduino can only produce 1000 pulses per second, where each pulse will create one step of the motor. This would result in a speed of 5 Hz (1000/200 steps), if 1 msec is the default setting. Then 5Hz = 300rpm, which is roughly what we are getting now. Is this how the controller works, with 1 pulse equating to 1 step of the motor? If so, how can I increase the frequency? Any help or input would be greatly appreciated!