步进电机插补算法stm32.docx

上传人:b****1 文档编号:319221 上传时间:2022-10-08 格式:DOCX 页数:20 大小:14.59KB
下载 相关 举报
步进电机插补算法stm32.docx_第1页
第1页 / 共20页
步进电机插补算法stm32.docx_第2页
第2页 / 共20页
步进电机插补算法stm32.docx_第3页
第3页 / 共20页
步进电机插补算法stm32.docx_第4页
第4页 / 共20页
步进电机插补算法stm32.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

步进电机插补算法stm32.docx

《步进电机插补算法stm32.docx》由会员分享,可在线阅读,更多相关《步进电机插补算法stm32.docx(20页珍藏版)》请在冰豆网上搜索。

步进电机插补算法stm32.docx

步进电机插补算法stm32

#include"stm32f10x.h"

#include"delay.h"

#include"misc.h"

#include

#include"stm32f10x_tim.h"

#include"stm32f10x_rcc.h"

#include"stm32f10x_usart.h"

#include

voidRCC_Configuration;

voidGPIO_Configuration;

voidNVIC_Configuration;

voidTIM_Configuration;

voidUSART_Configuration;

intfputc;

intfgetc;

floatMx=1.44f,My=2.88f;//起点

floatNx=10.0f,Ny=7.61f;//终点

floatX1,Y1;

floatX2,Y2;

floatX3,Y3;//三种方法走后的坐标

floatk;//斜率

floatb;//y=kx+b

floatX,Y;//实际运行的坐标

floatDelta1,Delta2,Delta3,Delta4;//三种方法的误差,4为不走最后一步的误差

floatDelta;//实际误差

//floatDeltaMax;//最大误差

charway;//选择的走法

inta;//TIM6中断次数

intnum=0;//总步数

inttx=1,ty=1;//用来判断中断是否发生

intnumx,numy;//计XY的步数

intcounter=0;//计数值

floattime;//时间

floatnxd,nyd;//开始减速坐标

floatnx,ny;//nx=Nx-0.0144f;

floatfenmu;//公式中分母

//intfrex[20]={2,10,30,60,100,150,220,300,390,500};

//intfrey[20]={2,10,30,60,100,150,220,300,390,500};

intfrex[20]={1098,2931,7585,18242,37754,62245,81757,92414,97068,98901};

intfrey[20]={1098,2931,7585,18242,37754,62245,81757,92414,97068,98901};

intprex[20]={0};

intprey[20]={0};

intmain

{

inti,j;

intnpwm=10;//加减速每段脉冲数

//算出预分频值

for

{

prex[i]=72000000/;

prey[i]=72000000/;

}

//配置,初始化

RCC_Configuration<>;

GPIO_Configuration<>;

USART_Configuration<>;

TIM_Configuration<>;

NVIC_Configuration<>;

Delay_Init<>;

TIM_Cmd;//catchXY

TIM_Cmd;//计时

//TIM_SetCounter;

//开始运行

{

//计算相关量

X=Mx;

Y=My;

k=/;

b=My-k*Mx;//y=kx+b

nxd=Nx-90*0.0144f;

nyd=Ny-90*0.0144f;

nx=Nx-0.0144f;

ny=Ny-0.0144f;

fenmu=sqrt;

for//加速阶段,分10段

{

while

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs/fenmu;

Delta2=fabs/fenmu;

Delta3=fabs/fenmu;//三种走法的误差

//选择最小误差走法

if

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if

{way=3;Delta=Delta3;}

switch//实际走法,while<>为等待中断发生〔中断失能,以确保一步一脉冲

{

case1:

X=X+0.0144f;TIM_Cmd;while;tx=1;break;

case2:

Y=Y+0.0144f;TIM_Cmd;while;ty=1;break;

case3:

X=X+0.0144f;Y=Y+0.0144f;TIM_Cmd;TIM_Cmd;while;tx=1;ty=1;break;

}

num++;

j++;

}

TIM_PrescalerConfig;//改预分频,频率

TIM_PrescalerConfig;

j=0;

}

while//最高频率阶段

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs/fenmu;

Delta2=fabs/fenmu;

Delta3=fabs/fenmu;

if

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if

{way=3;Delta=Delta3;}

switch

{

case1:

X=X+0.0144f;TIM_Cmd;while;tx=1;break;

case2:

Y=Y+0.0144f;TIM_Cmd;while;ty=1;break;

case3:

X=X+0.0144f;Y=Y+0.0144f;TIM_Cmd;TIM_Cmd;while;tx=1;ty=1;break;

}

num++;

//ifDeltaMax>

//DeltaMax=Delta;

}

for=0;i-->//减速阶段,分10段

{

TIM_PrescalerConfig;//改预分频,频率

TIM_PrescalerConfig;

while

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs/fenmu;

Delta2=fabs/fenmu;

Delta3=fabs/fenmu;//三种走法的误差

//选择最小误差走法

if

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if

{way=3;Delta=Delta3;}

switch//实际走法,while<>为等待中断发生〔中断失能,以确保一步一脉冲

{

case1:

X=X+0.0144f;TIM_Cmd;while;tx=1;break;

case2:

Y=Y+0.0144f;TIM_Cmd;while;ty=1;break;

case3:

X=X+0.0144f;Y=Y+0.0144f;TIM_Cmd;TIM_Cmd;while;tx=1;ty=1;break;

}

num++;

j++;

}

j=0;

}

while//最低频率阶段

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs/fenmu;

Delta2=fabs/fenmu;

Delta3=fabs/fenmu;

if

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if

{way=3;Delta=Delta3;}

switch

{

case1:

X=X+0.0144f;TIM_Cmd;while;tx=1;break;

case2:

Y=Y+0.0144f;TIM_Cmd;while;ty=1;break;

case3:

X=X+0.0144f;Y=Y+0.0144f;TIM_Cmd;TIM_Cmd;while;tx=1;ty=1;break;

}

num++;

//ifDeltaMax>

//DeltaMax=Delta;

}

//判断是否要走超出终点

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=sqrt<*+*>;

Delta2=sqrt<*+*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1