6、实现多段运动【51单片机控制步进电机-TB6600系列】

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

一、目标功能

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

二、计算过程
2.1 简化C与n函数关系

根据上一节内容,定时器初值与速度函数关系为:

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

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

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

三、程序代码

c 复制代码
//定义步进电机转动段数及运动参数
#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;
		}
	}
}

四、总结

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

五、附件

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

相关推荐
皮皮黄-机电工程师1 年前
8-1、T型加减速控制【51单片机控制步进电机-TB6600系列】
皮皮黄步进电机系列教程
皮皮黄-机电工程师1 年前
8-3、T型加减速单片机程序【51单片机控制步进电机-TB6600系列】
皮皮黄步进电机系列教程
皮皮黄-机电工程师1 年前
8-2、T型加减速计算简化【51单片机控制步进电机-TB6600系列】
皮皮黄步进电机系列教程
皮皮黄-机电工程师1 年前
7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】
皮皮黄步进电机系列教程
皮皮黄-机电工程师1 年前
5、计算电机速度【51单片机控制步进电机-TB6600系列】
皮皮黄步进电机系列教程