求单片机c语言控制步进电机调速程序

求单片机c语言控制步进电机调速程序,第1张

几相的步进电机啊?用不用驱动芯片?用的庆绝话选什么型号的驱动芯片?你要说埋扮具体点啊!

先给你三相的,个不用驱动芯片弯差灶的步进电机程序。(驱动电路自己做)

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

uint time

void timer1(void) interrupt 1 using 1{ //定时器0中断,定时1ms//

TH0=(65536-1000)/256

TL0=(65536-1000)%256

time++

}

void delay(uint n){ //一般延时

while(--n)

}

void delay(uint dtime){ //延时

TR0=1

while(time<=dtime)

time=0

TR0=0

}

void moto(bit cf,uchar n,uint dtime){ //电机驱动子程序,

uchar idata zhpai[4]={0x78,0xb8,0xd8,0xe8}

uchar idata fpai[4]={0xe8,0xd8,0xb8,0x78}

uchar i,l=0

if(cf==0) //正转,A-B-C-A

for(i=0i<ni++){

P1=zhpai[l]//P1.7~1.4为输出口,分别为A、B、C、D

l++

delay(dtime)

if(l==4)l=0

}

else{ //反转,C-B-A-C

for(i=0i<ni++){

P1=fpai[l]

l++

delay(dtime)

if(l==4)l=0

}

}

}

void main(){

TMOD=0x01

TH0=(65536-1000)/256

TL0=(65536-1000)%256

EA=1

ET0=1

while(1){

moto(0,4,70)//正转,转四相,每相间隔70ms

delay(10000)

moto(1,4,70)//反转,转四相,每相间隔70ms

delay(10000)

}

}

步进电机可以通过三种方式实现电机的调速:1、选择脉冲控制型的驱动器,可以通过改变控制脉冲的频率实现步进电机的调速;2、选择内置控制脉冲的步进驱动器,可以通雀旅兆过拨码开关或电位器或模拟信号实镇册现电机的调速;3、带通讯控制功能,可以通过控制指令顷租直接改变电机得到运行速度。

sbit K1=P1^0

sbit K2=P1^1

char y=0

while(1)

{

pangduan()

for(i=0i<4i++) //4相

{

/*P1=F_Rotation[i] //输出对应的相 可以自行换成反宽察转表格

Delay(500)//改变这个参数可以调整电机转速

Delay(5000)*/

P1=B_Rotation[i]

Delay(265+y)

P1=F_Rotation[i]

Delay(265+y)

}

}

void pangduan()

{

if(K1==0)

{ y++ //加

while(~k1)

}

if(K2==0)

{ y--

while(~k2)//减

}

}

}

没有下上限要是仔物调的话 需慎戚茄要判断显示延时时间


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

原文地址: http://outofmemory.cn/yw/8283624.html

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

发表评论

登录后才能评论

评论列表(0条)

保存