全步控制相序分配为:A,/A,B,/B
半步控制相序分配为:A,AB,B,B/A,/A,/A/B,/B,/BA
加速的话,就使相序切换快一点就可以;当然减速就是相序切换慢点就行。举例如下:
#include<reg51.h>
#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
}
}
}
最下两个是电机供电,线太细容易烧,可以接到任意合适的直流电源上,不一定要从arduino接。两个pul接arduino的PWM口和地,输出一个合适的脉冲即可,这个程序应该容易的。这个其实不需要单片机,任意脉冲发生器都可以。把任意ena去接arduino的5V或地,就应该可以看到转动了欢迎分享,转载请注明来源:内存溢出
评论列表(0条)