单片机控制电机转速的程序,定时中断

单片机控制电机转速的程序,定时中断,第1张

这还不简单,因为你定时芦氏器定时才50微秒,而你在中断程序里面写了那么长的程序,也就是是说单片机刚刚跳出中断程序就进入新的中断程序了 ,或者还没跳出中断程序就又有新的中断请求,所以程序之运行前面的,不运行后面的,你把则旅中断程序这陪盯散么写试验下!不行再q我 357157293

void timer0() interrupt 1 using 2

{

if(t==0) /* 1个PWM周期完成后才会接受新数值 */

{

temp1=m1

temp2=m2

}

if(t<temp1)

{

s1=1

s2=0

}

else

{

s1=0/* 产生电机1的PWM信号 */ //一个PWM信号的周期为2.5ms

s2=0

}

if(t<temp2)

{

s3=1

s4=0

}

else

{

s3=0

s4=0

}/* 产生电机2的PWM信号 */

t++//完成一次中断,记数一次

if(t>=50)

t=0/* 1个PWM信号由50次中断产生 */

jishu++

;******************将修改定时器初始值放在后面**************

TH0=(65536-50)/256//一次中断的时间为50us

TL0=(65536-50)%256

}

事情没有你想象的那么简单,步进电机的运行和停止,是有个对应的加速和减速过程,不是像LED那样给个电平就能亮。

按照你现有的程序,i是肢敏孙在变化的,那么是否就会有频繁变化的可能?这样的话步进电机就会频繁地开停,这个过程是否有考虑到?

步进电机运行是一个过程,可在电机的驱动函数里面增加一个停止检测,检测到停止条件时,就开始停止,这个是比较合理的停止过程,拿祥不会损坏电机,当然,如果对于急停那种,可以直接在else里面将步历链进电机的PWM停止,这种情况对于高速运行的电机会有损伤的。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存