C51 C语言怎么实现42步进电机加速、减速控制?

C51 C语言怎么实现42步进电机加速、减速控制?,第1张

42步进电机是一个两相电机,一般控制可以分为全步或半步控制,全步控制,每一切换相序,步进电机走1.8度,半步控制则走0.9度。

全步控制相序分配为: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或地,就应该可以看到转动了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11417853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存