如果不加渐进加速的话,在本程序中脉冲的间隔时间最短要delay(780),加了渐进加速后,可以到delay(500),速度不少。但是输出力矩会下降,在高速下,稍微捏住电机轴,电机就不转了。
#include "stc15f2k60s2.h"
#include "intrins.h"
void delay(unsigned int time);
#define dr_clr() {P0=0xf0;}
unsigned char code CW[8]={0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8};
unsigned char code CCW[8]={0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9};
//蓝粉黄橙接P0.0-P0.3
void main()
{
unsigned int i,n,speed=0;
for(n=0;n<512*3;n++)
{
speed++;
if(speed>=500)
speed=500;
for(i=0;i<8;i++)
{
P0=CW;
delay(1000-speed); //直接跑,要delay780,不然电机卡住 。渐进加速后可到1000-500=500
}
}
dr_clr();
while(1);
}
void delay(unsigned int time)
{
while(--time);
}
测试电压是5V。
心得:如果要提高步进电机最快转动速度,必须要有渐进加速的过程。