求推荐!!步进电机怎么加速与减速?
42Q电机是一个两相电机,一般掌控可以分成全步或半步掌控,全步掌控,每一切换相序,Q电机走1。8度,半步掌控则走0。9度。
全步掌控相序分配为:A,/A,B,/B
半步掌控相序分配为:A,AB,B,B/A,/A,/A/B,/B,/BA
加快的话,就使相序转换快一点就可以;当然滑行就是相序转换慢点就行。 举例如下:
#include
#define uchar unsigned char
uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09};
uchar num=0,fx=0;
sbit keyup=P3^0;
sbit keydn...全部
42Q电机是一个两相电机,一般掌控可以分成全步或半步掌控,全步掌控,每一切换相序,Q电机走1。8度,半步掌控则走0。9度。
全步掌控相序分配为:A,/A,B,/B
半步掌控相序分配为:A,AB,B,B/A,/A,/A/B,/B,/BA
加快的话,就使相序转换快一点就可以;当然滑行就是相序转换慢点就行。
举例如下:
#include
#define uchar unsigned char
uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09};
uchar num=0,fx=0;
sbit keyup=P3^0;
sbit keydn=P3^1;
sbit keyfx=P3^2;
int speed=10000;
void t0isr() interrupt 1
{
TH0=(65536-speed)/256;
TL0=(65536-speed)%256;
P2=stepd[num];
if(fx==0){num++;num%=8;}
if(fx==1)
{
if(num==0)num=7;
else num--;
}
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(keyup==0)
{
while(key1==0);
speed-=10;
}
if(keydn==0)
{
while(keydn==0);
speed+=10;
}
if(key3==0)
{
while(key3==0);
fx=~fx;
}
}
}。
收起