搜索
bottom↓
回复: 32

一种步进电机加速曲线的实现方式

  [复制链接]

出0入0汤圆

发表于 2018-4-23 10:03:17 | 显示全部楼层 |阅读模式
本帖最后由 qaya 于 2018-4-24 08:44 编辑

在论坛学习了这么久,无以回报,把自己的一个雕虫小技发上来给大家参考,做成PDF方便下载。

补充一下,楼下有朋友问到S曲线,这里加上一段求S曲线的代码。代码是从其他地方拷贝来的,已经不记得来源了,这里对作者表示感谢。
/*  calculate the Period and Freq array value, fill the Period value into the Period register during the timer interrupt.

*calculate the acceleration procedure , a totally 1000 elements array.

* parameter    fre[]: point to the array that keeps the freq value.

*   period[]: point to the array that keeps the timer period value.

*   len: the procedure of acceleration length.it is best thing to set the float number, some compile software maybe transfer error if set it as a int

*   fre_max: maximum speed, frequency vale.

*   fre_min: start minimum speed, frequency vale.  mind : 10000000/65535 = 152, so fre_min can't less than 152.

*   flexible:  flexible value. adjust the S curves

*/

void CalculateSModelLine(float fre[],  unsigned short period[],   float  len,  float fre_max,  float fre_min, float flexible)
{
    int i=0;
    float deno ;
    float melo ;
    float delt = fre_max-fre_min;
    for(; i<len; i++)
    {
        melo = flexible * (i-len/2) / (len/2);
        deno = 1.0 / (1 + expf(-melo));   //expf is a library function of exponential(e)
        fre = delt * deno + fre_min;
        period = (unsigned short)(10000000.0 / fre);    // 10000000 is the timer driver frequency
    }


    return ;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-4-23 10:20:02 | 显示全部楼层
不错,多谢!

出0入13汤圆

发表于 2018-4-23 10:21:54 | 显示全部楼层
不错,写得挺详细的

出0入0汤圆

发表于 2018-4-23 10:22:48 | 显示全部楼层
很详细, 谢谢LZ无私分享

出0入0汤圆

发表于 2018-4-23 10:31:46 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-4-23 10:37:37 | 显示全部楼层
可以,学习了,谢谢!

出0入0汤圆

发表于 2018-4-23 12:00:04 | 显示全部楼层
帮你把首页截下来,先睹为快,再决定下载与否。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-4-23 12:31:41 | 显示全部楼层
谢谢,写得挺详细的

出0入0汤圆

发表于 2018-4-23 12:52:46 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-4-23 13:08:50 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-4-23 13:20:07 来自手机 | 显示全部楼层
就冲分享精神也要顶

出0入0汤圆

发表于 2018-4-23 14:09:27 | 显示全部楼层
谢谢LZ无私分享

出0入10汤圆

发表于 2018-4-23 15:37:49 | 显示全部楼层
楼主辛苦了

出180入0汤圆

发表于 2018-4-23 17:18:59 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-4-23 17:32:50 | 显示全部楼层
学习了,谢谢分享!

出0入0汤圆

发表于 2018-4-23 17:42:29 | 显示全部楼层
谢谢楼主的分享,进来学习一下

出0入0汤圆

发表于 2018-4-23 18:31:44 来自手机 | 显示全部楼层
步进电机 顶一下

出0入0汤圆

发表于 2018-4-23 19:05:57 来自手机 | 显示全部楼层
学习了,以前都是用inderect指令,没想到有更简单方便的

出0入0汤圆

发表于 2018-4-23 20:47:08 | 显示全部楼层
楼主的方法和我的很像哦,但是我的限定值是为时间,比如从2K升到20K,限定0.1s,也是通过EXCEL得出的,貌似现在也只能用于直线加减速,S的还没有找到和是的公式

出0入0汤圆

发表于 2018-4-23 20:48:15 | 显示全部楼层
不过最近搞了STM32F4(有浮点指令),准备直接在MCU里面运算出相应的数据了,这样也灵活得多了

出0入0汤圆

发表于 2018-4-23 20:59:40 | 显示全部楼层
MARK!!!!!!

出0入0汤圆

发表于 2018-4-23 21:12:21 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-4-24 00:58:17 | 显示全部楼层
又占空间又占时间,直接上STM32 DMA传送,省时又省力

出0入4汤圆

发表于 2018-4-24 08:04:39 | 显示全部楼层
楼主,棒棒的,谢谢分享!

出0入0汤圆

发表于 2018-4-24 08:45:33 | 显示全部楼层
顶楼主,十分感谢

出0入0汤圆

发表于 2018-4-27 11:03:04 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2018-7-21 09:34:47 | 显示全部楼层
本帖最后由 XTXB 于 2018-7-21 10:15 编辑
amxx 发表于 2018-4-23 20:47
楼主的方法和我的很像哦,但是我的限定值是为时间,比如从2K升到20K,限定0.1s,也是通过EXCEL得出的,貌似 ...


楼主的计算方法高明!楼主以距离为加速度曲线的横坐标,个人觉得以时间为横坐标才是加速度的本意。

出0入0汤圆

发表于 2018-7-21 09:58:56 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2018-7-21 13:53:36 | 显示全部楼层
向楼主学习一下

出0入0汤圆

发表于 2018-7-21 21:09:01 来自手机 | 显示全部楼层
学习   

出0入0汤圆

发表于 2018-7-21 22:23:40 | 显示全部楼层
用了自然对数?不如把这个对数改成一个表?应该问题也不大吧。

出0入0汤圆

发表于 2018-7-23 14:05:06 | 显示全部楼层
谢谢LZ无私分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 14:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表