如何实现简单的步进电机多段控制呢?

发布时间:2024-02-22  

一、目标功能

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

二、计算过程

**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与c

 step_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;

 }

 }

}

四、总结


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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>