8-3、T型加减速单片机程序【51单片机控制步进电机-TB6600系列】

摘要:根据前两节内容,已完成所有计算工作,本节内容介绍具体单片机程序流程及代码

一、程序流程图

根据前两节文章内容可知,T型加减速的关键内容是运动类型的判断以及定时器初值的计算,在输出运动参数后即可判断出运动类型,再根据运动类型在主循环程序中计算定时器初值,在定时器中断中判断各运动阶段是否完成,最终实现T型加减速过程,程序流程图如下所示

二、误差分析

在动态计算的过程中,由于51单片机没有硬件乘、除法器,下述定时器初值的递推计算耗时最多,为尽量提升性能,将此步计算放入了主循环中,以节省定时器中断计算量

在12Mhz,12T模式下,STC89C52RC单片机实测控制最高转速约为200RPM,最大的瓶颈在于51单片机的主频速度实太慢,此处可以勾选STC单片机特有的6T双倍速模式,电机的转速上限会有明显的提升

三、关键程序代码

c 复制代码
void cal_init()//预计算
{
	K1=sqrt(a*X);
	tn=4056000/K1;//计算t1
	
	cn=65536-tn;  //计算c1 
		TH0=cn/256;//装定时寄存器初值
		TL0=cn%256;
	
	angle_step=angle*X/18; //计算总步数
	
	K2=10*w*w/a;
	K3=10*X*w*w/(36*a);
}

void cal_cn()//计算cn
{
	if(ready_flag)
		{
			ready_flag=0;
			
			if(flag==2)
			{
				tn=tn-2*tn/(4*n+1);
			}
			else if(flag==4)
			{
				tn=tn+2*tn/(4*n-1);
			}
			
			cn=65536-tn;
		}
}

void cal_motion()//计算运动模式
{
	if(angle_step==1) flag=1;       //转一步
	else                            //转多步
	{
		if(angle>K2)                  //有匀速过程
		{
			motion_flag=1;
			angle2_step=K3;
			angle3_step=angle_step-2*K3;
			angle4_step=K3;
		}
		else                          //无匀速过程
		{
			motion_flag=0;
			angle2_step=angle_step/2;
			angle4_step=angle_step-angle2_step;
		}
	}
}

void main()
{
	device_init();
	TR0=1;//开步进电机
	
	while(1)
	{
		cal_cn();
	}
}

void time0_int() interrupt 1
{
	TH0=cn/256;//装定时寄存器初值
	TL0=cn%256;
	PUL=1;_nop_();_nop_();nop_();nop_();PUL=0;//上升沿产生脉冲
	
	switch (flag)
	{
		case 1:                  //转1步
			TR0=0; 
			break;
		case 2:			           //加速阶段
			n++;
			if(n==angle2_step)    //加速结束
			{
				if(motion_flag)    //有匀速
				{
					flag=3;          
					n=0;
				}
				else               //无匀速
				{
					flag=4;          
					n=angle4_step;
				}
			}break;
		case 3:                //匀速阶段
			n++;
			if(n==angle3_step)
			{
				flag=4;
				n=angle4_step;
			}break;
		case 4:               //减速阶段
			n--;
			if(n==0)
			{
				TR0=0;        //关步进电机
			}break;
		default:
			break;
	}
	
	ready_flag=1;
}

四、总结

上述代码实现了步进电机采用T型加减速的方式转动5圈,输入参数有驱动器细分值,转动角度,加速度、最大角速度。其中转动角度的单位是0.1°,例如输入100,实际代表转动10°。此种控制方式相对于S曲线加减速灵活性更高,可以实现加减速大小的实时调节,灵活性较好,同时可以大幅节省data资源

五、附件

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

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