一、目标功能
输入多个目标角度,以及每个角度对应的速度,实现步进电机的多段多速度转动
二、计算过程
**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;
}
}
}
四、总结
此种方式利用定时器精确定时能力,从而控制电机转速,同时实现步进电机的多段运动,至此实现了步进电机三个主要参数角度、速度、方向的简单协同操作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
寄存器
+关注
关注
31文章
5290浏览量
119792 -
步进电机
+关注
关注
150文章
3089浏览量
147250 -
定时器
+关注
关注
23文章
3230浏览量
114313 -
定时器中断
+关注
关注
0文章
49浏览量
11157 -
控制电机
+关注
关注
0文章
234浏览量
18047
发布评论请先 登录
相关推荐
基于FPGA的步进电机多轴控制器该怎么设计?
步进电机是一种完全数字化的电动执行机构,从原理上说,其角位移与驱动脉冲的个数成正比,在正常情况下,步进电机具有使用简单、运动精确、连续运行无
发表于 09-19 06:55
步进电机控制系统的设计与实现
论文介绍了步进电机的控制原理,利用脉冲叠加原理,以Verilog HDL 为实体设计输入,设计并实现了一套集成于FPGA 内部的步进
发表于 01-18 14:52
•314次下载
步进电机控制系统的设计与实现
论文介绍了步进电机的控制原理,利用脉冲叠加原理,以Verilog HDL为实体设计输入,设计并实现了一套集成于FPGA内部的步进
发表于 07-13 16:14
•45次下载
如何使用FPGA实现步进电机控制器
,极大地减少了外围元件的使用。同时,采用V HDL 语言控制可以根据步进电机的不同,改变模块程序的参数就可以实现不同型号步进
发表于 02-05 11:37
•27次下载
步进电机最简单的驱动方法_步进电机控制方法
最简单的步进电机驱动方法是单相双极驱动方式,也称为双相步进驱动方式。该方式只需要使用一个 H桥驱动器和一个脉冲发生器,即可实现
发表于 03-08 14:21
•1.5w次阅读
评论