概述
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曲线的原理与实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复