6、实现多段运动【51单片机控制步进电机

编程入门 行业动态 更新时间:2024-10-28 21:21:35

6、实现多段运动【51<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机控制步进电机"/>

6、实现多段运动【51单片机控制步进电机

摘要:本节介绍用控制步进电机三个主要参数角度、速度、方向,实现简单的步进电机多段控制

一、目标功能
输入多个目标角度,以及每个角度对应的速度,实现步进电机的多段多速度转动

二、计算过程
2.1 简化C与n函数关系
根据上一节内容,定时器初值与速度函数关系为:

硬件系统确定后,angle、Xtal、X均为定值,为降低计算量,将公式中可以提前计算好的地方直接计算出来

根据硬件设置情况,step=1.8,Xtal=12000000,X=2,计算K值

2.2 计算步数(step_num)与角度(angle)函数关系

三、程序代码

//定义步进电机转动段数及运动参数
#define para 5 
unsigned int angle[5]={90,360,720,180,0};  //电机目标转角
unsigned int v[5]={20,60,120,60,20}; //电机速度void main()
{	
//计算step_num与cstep_num=10*angle[0]/9;c=65536-150000/v[0];//计算V[0]对应的定时器初值while(1){}
}//定时器0中断程序
void time0_int() interrupt 1
{TH0=c/256;//重装定时寄存器初值TL0=c%256;//低电平切换到高电平,产生一个脉冲PUL=1;_nop_();_nop_();nop_();nop_();PUL=0;DIR==1?n++:n--;//根据方向,判断步数加或减if(n==step_num)//当前阶段完成判断{i++;if(i==para)//整个运动阶段走完{TR0=0;//电机停止}else   //计算下一阶段参数{//刷新步数与速度值step_num=10*angle[i]/9;c=65536-150000/v[i];//判断方向if(angle[i]>angle[i-1])DIR=1;else DIR=0;}}
}

四、总结
此种方式利用定时器精确定时能力,从而控制电机转速,同时实现步进电机的多段运动,至此实现了步进电机三个主要参数角度、速度、方向的简单协同操作

五、附件
完整代码工程文件请见微信小程序:

更多推荐

6、实现多段运动【51单片机控制步进电机

本文发布于:2023-12-03 13:44:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1656004.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   步进电机

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!