步进电机算法s曲线的原理与实现

  • Post author:
  • Post category:其他


s曲线图形如下



上图的曲线图在步进电机中可看为是步进电机的速度变化图,步进电机速度是和频率成正比,即也可看为是频率递增的曲线图。加速在加速的过程中一共可以分为两个阶段,分别为前半部分和后半部分,前半部分是加速度匀速递增的曲线,称为:加加速阶段曲线,后半部分是加速度匀速递减的曲线超,所以称为:减加速度阶段曲线。

s曲线图对应的加速度变化,即曲线斜率图如下:

前半段斜率大于0,加速度从0变为最大值,后半段斜率小于0,加速度从最大值变为最小值。

一、S形速度表的计算方法

根据网上资料的最终推导公式可得:

a=( ( 2 * ((Vm) – (Vo)) ) /t*t;  Vm为中间速度,Vo初速度;t为时间

Vm = (Vo + Vt)/2;

总加速时间为t,则加加速时间为t/2;减加速时间为t/2。

S=1/6*a*t*t*t;

频率与速度对应,则f=sppd;T=1/spzeed;

可得出计算表如下:

Vt:t时刻速度     ,T总加速时间

void  SpeedTab(int Vo, int Vt, float T)

{

int32_t i = 0;

int32_t Vm =0;      // 中间速度

float a = 0;    // 加速度

float Tn = 0;      // Tn时刻

float DeltaV = 0;  // Tn时刻的速度

float TimeDel = 0; // 时间间隔

T = T / 2; //加加速时间,与减加速时间一样

Vm = (Vo + Vt) / 2; //中间速度

a = ( ( 2 * ((Vm) – (Vo)) ) / pow((T),2) );// 加速度值

Step  = (int)( ( (a) * pow( (T) ,3) ) / 6 );// 加加速的位移和减加速一样

Step  = abs(Step ); // 取绝对值

if( Step  % 2 != 0)     //

{

Step  += 1;

}

TotalStep =Step * 2;           // 加加速和减加速的总步数

TimeDel = T /Step;加加速时间除以步数等于每步对应时间间隔

for(i = 0; i <= Step; i++)

{

Tn = i * TimeDel;//每步对应的时间

DeltaV = 0.5f * a * pow(Tn,2);       // tn时刻对应的速度变化量 v = V0+1/2 * a * t^2;

Speed.Form[i] = Vo + DeltaV;//  v = V0+1/2 * a * t^2;

Speed.Form [ TotalStep – i] = Vt – DeltaV ;        // 减加速与加加速是对称的加速度变化量,由于减加速斜率为负,则是减去 DeltaV

}

//就可以得到速度表的内容了,即对应的频率值

}

下一篇再说一下如何运用到电机上吧!!!

感谢关注!!



版权声明:本文为xxxsdn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。