步进电机的执行过程具有一个经典过程是: 加速阶段--运行阶段--减速阶段
参考链接:https://www.cnblogs.com/heyxiaotang/p/5701087.html
arduino的线性控制简单示例:
int x; int s=110; int step_l=7000; void setup() { pinMode(6,OUTPUT); // Enable pinMode(5,OUTPUT); // Step pinMode(4,OUTPUT); // Direction digitalWrite(6,LOW); // Set Enable low } void loop() { digitalWrite(4,LOW); // Set Direction high 正转 for(x = 400; x > s; x--) // Loop 200 times 加速阶段 { digitalWrite(5,HIGH); // Output high delayMicroseconds(x); // Wait 1/2 a ms digitalWrite(5,LOW); // Output low delayMicroseconds(x); // Wait 1/2 a ms } for(x = 0; x < step_l; x++) // Loop 200 times 运行阶段 { digitalWrite(5,HIGH); // Output high delayMicroseconds(s); // Wait 1/2 a ms digitalWrite(5,LOW); // Output low delayMicroseconds(s); // Wait 1/2 a ms } for(x = s; x < 400; x++) // Loop 200 times 减速阶段 { digitalWrite(5,HIGH); // Output high delayMicroseconds(x); // Wait 1/2 a ms digitalWrite(5,LOW); // Output low delayMicroseconds(x); // Wait 1/2 a ms } delay(1000); // pause one second digitalWrite(4,HIGH); // Set Direction low 反转 for(x = 400; x > s; x--) // Loop 200 times 加速阶段 { digitalWrite(5,HIGH); // Output high delayMicroseconds(x); // Wait 1/2 a ms digitalWrite(5,LOW); // Output low delayMicroseconds(x); // Wait 1/2 a ms } for(x = 0; x < step_l; x++) // Loop 200 times 运行阶段 { digitalWrite(5,HIGH); // Output high delayMicroseconds(s); // Wait 1/2 a ms digitalWrite(5,LOW); // Output low delayMicroseconds(s); // Wait 1/2 a ms } for(x = s; x < 400; x++) // Loop 200 times 减速阶段 { digitalWrite(5,HIGH); // Output high delayMicroseconds(x); // Wait 1/2 a ms digitalWrite(5,LOW); // Output low delayMicroseconds(x); // Wait 1/2 a ms } delay(1000); // pause one second }