三相
步进电机的三相六拍工作方式,正转的绕组通电顺序:A、AB、B、BC、C、CA、A,反转的通电顺序:A、AC、C、CB、B、BA、B、A。 由于步进
电机转子有一定的惯性以及所带负载的惯性,故步进电机的工作过程中不能及时的启动和停止,在启动时应慢慢的加速到预定速度,在停止前应逐渐减速到停止,否则,将产生失步现象。 步进电机的控制问题可总结为两点: 1、产生工作方式需要的时序脉冲; 2、控制步进电机的速度,使它始终遵循加速、匀速、减速的规律工作。 系统:
接口:
程序: #include<io8515v.h> #include<macros.h> const char zhzhuan[7]={0
x06,0
x04,0
x05,0
x01,0
x03,0
x02,0
x00}; const char fanzhuan[7]={0
x06,0
x02,0
x03,0
x01,0
x05,0
x004,0
x00}; const int time[5]={4000,3200,2400,1600,800}; char num; char direct; char num_run; void main(void) { DDRA=0
x07; TCCR1A=0
x00; TCCR1B=0
x09; TIMSK=0
x10; SREG|=0
x80; while(1) { ; } } #pragma interrupt_handler time1coma:5 void time1coma(void) { char i,j; if(num>9) { if(num_run<5) OCR1A=time[num_run]; else if(num_run>(num-5)) OCR1A=time[num-num_run]; } else { i=(num+1)/2; if(num_run<(i)) OCR1A=time[num_run]; else OCR1A=time[num-num_run]; } if(num_run<num) { j=num_run%6; if(direct==1) PORTA=zhzhuan[j]; else PORTA=fanzhuan[j]; num_run+=1; } else { OCR1A=0
x0fa0; } }