我是靠谱客的博主 耍酷可乐,最近开发中收集的这篇文章主要介绍步进电机算法s曲线的原理与实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

}

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

}

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

感谢关注!!

 

最后

以上就是耍酷可乐为你收集整理的步进电机算法s曲线的原理与实现的全部内容,希望文章能够帮你解决步进电机算法s曲线的原理与实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部