什么软件能创建网站,wordpress更新关闭,花店网站设计,wordpress微博评论箱项目场景#xff1a;
项目场景#xff1a;代码中写了S型加减速算法#xff0c;相查看生成的加减速数组#xff0c;直观的展示出来#xff0c;USB通信一次64字节#xff0c;对于我几个个32位的频率值不太方便#xff0c;于是采用Excel进行仿真。 代码中如何生成S加减速曲…项目场景
项目场景代码中写了S型加减速算法相查看生成的加减速数组直观的展示出来USB通信一次64字节对于我几个个32位的频率值不太方便于是采用Excel进行仿真。 代码中如何生成S加减速曲线数组
这是原理传送门 不再过多赘述本文要点在于仿真。 这是我用代码复现 使用2种曲线对比效果 uint32_t CurveS_Para[100]{0}; //频率列表/*正常版
*pbuff 存放S曲线的脉冲对应 ARR寄存器的值fre_max 最大频率fre_min 起始频率count 需要加速次数
*/
void CurveS_init_1(uint32_t *pbuff,uint32_t fre_max, uint32_t fre_min,int16_t count)
{int16_t i;uint16_t flexible 4;//曲线区间4-6float del_fre fre_max-fre_min;float deno;float melo;float fre;for(i 0;icount;i){melo flexible* (i-count/2.0f) / (count/2.0f);deno 1.0f / (1 expf(-melo));fre del_fre * deno fre_min;pbuff[i] (uint32_t)ceil((float)TIM1_CLOCK_FREQ/fre);}
}
/*
平移拉伸版
*/
void CurveS_init_2(uint32_t *pbuff,uint32_t fre_max, uint32_t fre_min,int16_t count)
{int16_t i;float del_fre fre_max-fre_min;float deno;//分母部分float melo;//指数函数自变量float fre;for(i 0;icount;i){melo ((-i*14.0f) /count)7.0f;deno 1.0f / (1.0f expf(melo));fre del_fre * deno fre_min;pbuff[i] (uint32_t)ceil((float)TIM1_CLOCK_FREQ/fre);}
}Excel如何实现上述仿真
代码中有循环在Excel中某列输入顺序数右下角下拉生成需要的数组个数。 第二列编辑公式保存后下拉。 正常版CEILING.MATH((495001)/(1EXP(-4((A1-50)/50)))500) 拉伸版CEILING.MATH((49500)/(1EXP((-14*A1/100)7))500) 选中AB 或AC列生成散点图 修改名称 正常版 拉伸版 效果展示
经过Excel仿真后用这个数组在代码中对步进电机进行加减速控制。生成PWM波形如下
百步加减速 按比例20步加减速