tim4146 发表于 2015-7-1 22:08:38

步进电机梯形加减速笔记AVR446的一点疑问

本帖最后由 tim4146 于 2015-7-1 22:10 编辑

最近在研究步进电机加减速问题,认真看了AVR446这个文件,相信做过步进电机调速的朋友都应该看过的吧

文件中下图红框框处始终不能理解

作者用理论分析办法得到了每个脉冲的周期信息
C0是个恒定值,因为
等式右边的参数都是系统设置好的

然后C1C2 C3....通过公式递推出来


然后作者考虑到单片机实时结算两个根号会让CPU计算很久,所用用了泰勒级数近似计算,结论就是C1 C2 C3.不用开根号啦,从而简化了计算过程
公式是这个


公式的推导是在附录中的,如下图

这样就代替了上面开根号的那个公式。
然后作者说使用这个办法会在n=1的时候引入0.44的误差,办法就是用0.676乘以C0来补偿

好了问题来了,这个0.44根本不知道哪儿来的,我是这样算的
根据公式,C0是定值(因为公式中tt a w分别是系统时钟周期 步距角 加速度值 都是定了的 )
那么我先按照理论的公式来算,也就是下面的公式

C0=C0
C1=C0(1.414-1)=0.414C0
C2=C0(1.732-1.414)=0.3178C0
....
下面按照简化的公式算,也就是下面的公式

C0=C0
C1=0.6C0
C2=0.778C0
...

好了,我真心不知道0.44的误差是怎么来的...请教各位看过这个笔记的前辈们

PCBBOY1991 发表于 2015-7-1 22:56:55

数学不好,帮顶一下,论坛图片显示正常啦!

tim4146 发表于 2015-7-2 09:03:16

PCBBOY1991 发表于 2015-7-1 22:56
数学不好,帮顶一下,论坛图片显示正常啦!

发帖的时候发现 同一个图片插入两次是不行的...无奈只好把同一个公式再截图保存为另一个文件

tim4146 发表于 2015-7-2 10:47:09

虽然不知道0.44哪儿来的,但是我已经知道答案了,下图一是补偿的时候,图二是补偿0.676之后的。本帖已结


end2000 发表于 2015-7-13 22:44:31

tim4146 发表于 2015-7-2 10:47
虽然不知道0.44哪儿来的,但是我已经知道答案了,下图一是补偿的时候,图二是补偿0.676之后的。本帖已结




你好,请问这4条曲线使用的公式是什么?我也在想这个参数的推导,没有头绪。

tim4146 发表于 2015-7-16 12:58:42

end2000 发表于 2015-7-13 22:44
你好,请问这4条曲线使用的公式是什么?我也在想这个参数的推导,没有头绪。 ...

公式就是446文档里面的,你读一遍就知道了,后面关于程序的细节可以不看,前面理论部分要看

374184600 发表于 2015-7-16 13:30:06

这个是不是只能走固定步数的时候用?
如果每次走的步数不确定的,也能实时计算吗。

tim4146 发表于 2015-7-17 18:59:15

374184600 发表于 2015-7-16 13:30
这个是不是只能走固定步数的时候用?
如果每次走的步数不确定的,也能实时计算吗。 ...

当然可以实时算的,但是要等上一次任务走完,中途改变的情况我暂时没有考虑

tim4146 发表于 2015-7-17 19:34:20

374184600 发表于 2015-7-16 13:30
这个是不是只能走固定步数的时候用?
如果每次走的步数不确定的,也能实时计算吗。 ...

当然可以实时算的,但是要等上一次任务走完,中途改变的情况我暂时没有考虑

mcuyongchao 发表于 2015-8-9 02:52:01

之前我也用这文档做了个步进加减速程序,效率还不错,但客户不喜欢rad/s的调速 ,懒得折腾,后来自己做了一个算法,动态查表,比这文档算法效率高,stm32F103一个定时器,出4组脉冲,为了安全就只把最大频率定为20K..我还是喜欢加速用时间MS...比如:加速100ms 减速100ms   急停20ms 使用 习惯没办法,    哪天整理一下,也给大伙用用...

whatcanitbe 发表于 2015-8-9 09:24:02

期待楼上的

tim4146 发表于 2015-8-9 16:48:21

mcuyongchao 发表于 2015-8-9 02:52
之前我也用这文档做了个步进加减速程序,效率还不错,但客户不喜欢rad/s的调速 ,懒得折腾,后来自己做了一个算 ...

速度单位就是rad/s 啊这个还能变啊?
如果能查表的话倒是不错,但是我想不出这个东西怎么查表,因为一旦加速度变了,ARR需要的一连串更新值就要重新算一组的
还有一个问题,你说一个定时器输出4组脉冲是没错,但是四个脉冲的ARR是同一个啊,也就说频率是没法变的,只有占空比可以做到不一样

mcuyongchao 发表于 2015-8-15 19:41:47

tim4146 发表于 2015-8-9 16:48
速度单位就是rad/s 啊这个还能变啊?
如果能查表的话倒是不错,但是我想不出这个东西怎么查表,因为一旦 ...

速度单位倒是可以变,需要该动一下程序,主要是用在我上面效率还低了点,我一个定时器4个脉冲,20x4x2 =160K的中断,有点呛,我还不止4组,有8-12组输出,用掉3个定时器...

tim4146 发表于 2015-8-16 12:41:19

mcuyongchao 发表于 2015-8-15 19:41
速度单位倒是可以变,需要该动一下程序,主要是用在我上面效率还低了点,我一个定时器4个脉冲,20x4x2 =160K ...

效率的问题我用DMA解决的,我是驱动串联机械臂的,6个步进电机,不用DMA没法做到高效

lzg1987 发表于 2015-9-18 09:46:32

MARK!!!!!!!!!!!!!!!

lazybonesyang 发表于 2015-10-8 17:01:06

本帖最后由 lazybonesyang 于 2015-10-8 23:07 编辑

C0=1*C0
C1=0.414213562*C0
C2=0.317837245*C0
C3=0.267949192*C0
C4=0.236067977*C0
C5=0.213421765*C0
C6=0.196261568*C0
C7=0.182675814*C0
C8=0.171572875*C0
C9=0.16227766*C0
按公式推出来前十步是这样,C0和C1比只有0.414的比例,假设C0=100MS,C1=41.4MS左右,换算成速度就是提高了一倍不止。是不是有点大了?这个加速度受得了?

tim4146 发表于 2015-10-9 16:56:37

lazybonesyang 发表于 2015-10-8 17:01
C0=1*C0
C1=0.414213562*C0
C2=0.317837245*C0


不去试试怎么知道呢?{:lol:}

likin 发表于 2020-7-6 12:20:39

正在学习步进电机多交流

Stm32Motor 发表于 2023-10-21 16:00:45

rad/s转换下就好,1转/ s=2✘pi rad/s.我也想知道怎么个查表达,加速度,速度,减速度,距离都不一样的时候,查表能适用?
页: [1]
查看完整版本: 步进电机梯形加减速笔记AVR446的一点疑问