I am trying to get high RPM output from my stepper motor, but no matter what I try I can't get it to spin more than 65,000 steps/sec.
I have tried many combinations of settings, drivers, power supply, accelerations, etc but the motor just won't go above 65000 steps/sec. It works fine at up to 65000 steps/sec but as soon as I increase like even by a 1000 steps/sec the motor just stalls (stops spinning and starts vibrating between single steps.) The motor also stalls at high microstepping but same steps/sec. That is even at low RPM it can’t take more than 65000 steps/sec.
I am sure that this is not an acceleration issue, because acceleration of even 100000 steps/sec^2 works fine when the maximum steps/sec is 65000 or below. But when maximum steps/sec is 66000 motor stalls even if the acceleration is 5000 steps/sec^2.
Also, I have checked the output of the waveform generated by the microcontroller. The oscilloscope shows a 5.4us of positive cycle. Stepper drivers are edge triggered. So, I can get stepping frequency of 150Hz.
Microcontroller used – Teensy3.6
Stepping library used – TeensyStep (https://luni64.github.io/TeensyStep/index)
The combination of stepper motor, drivers and setting are listed in the table below:
(Power source used for the following testing is 24V 3A)
Stepper motor used:
1.
- IMPULSE IM86HS78-5504X-07J
- Resistance/Phase: 1.16ohm
- Inductance/Phase:6.8mH
- Stepper Online 23HS45-4204S
- Resistance/Phase: 0.9ohm
- Inductance/Phase: 3.8mH
Driver & Current Settings:
TB6600 (4.0A)
DM542 (4.2A)
Microstepping:
- 3200
- 6400
- 12800
With the above mentioned motor, driver and microstepping I have tried all the combinations and the maximum steps/sec achievable was 65000.
I have also tried DRV8825 and A4988 with couple of other motors also and with different power supply, but I still got the same result.
All the testing has been done at zero load.
Summarizing:
I just can’t get my stepper motor to go beyond 65000 steps/sec with different motors, drivers, settings combination where controller is Teensy3.6 and library TeensyStep.
also here's the code I used :
#include "TeensyStep.h"
Stepper motor(13, 11);
StepControl controller;
void setup() {
Serial.begin(9600);
motor.setMaxSpeed(66000);
motor.setAcceleration(60000);
}
void loop() {
motor.setTargetRel(600000);
controller.move(motor);
delay(1000);
motor.setTargetRel(-600000);
controller.move(motor);
delay(1000);
}
This program would make motor stall at any microstepping settings. But motor would not stall immediately, it would accelerate to approximately 65000setp/s and then immediately stalls.