honami520 发表于 2015-8-30 18:52:39

步进电机加减速算法,运行中,怎么样直接改变当前速度

最近做步进电机,然后从论坛里面找到了一些相关代码。主要就是学习AVR446这个文档里面提到的步进电机加减速算法。
我大概看懂了一些后,稍作修改,就用在了STM32F051上。然后使用了一个函数AxisMoveRel(80000, 1600, 1600, 4800);来进行移动测试。
确实可以看到很明显的加速,稳定速度,减速的过程,很不错。
不过,新的问题出现了,这个函数是设置好了参数后,步进电机就会自动运行到结束。
但是,如果运行的距离很长,好比要运行几分钟。那么,大部分时间都是在恒速运行,此时,如果我想加快速度的话,应该怎么做呢?我看过上面的函数,没有办法做到临时修改的。
不知道,有没有人也是按照这个AVR446的文档做的,然后能够在运行过程中,进行速度的变更的。

我知道这个帖子回答的人一定很少,知道的人更少,所以稍微弄10个莫元,意思一下。希望有人能说说。

Puppey 发表于 2015-8-30 18:56:00

{:smile:} 用的时候同样都是定步数的

3DA502 发表于 2015-8-30 19:20:32

把速度参数做成全局访问的变量,电机脉冲生成间隔计算的函数每次读取g_hw_SpeedMax,并和当前脉冲速度作比较,做出加速 或 减速的分支跳转,模块化充分,随意改速度

AVR446的程序非常原始,就是定时器中断,然后ISR计算下一次中断对应的定时器重装数值n,唯一亮点就是一个MIT的家伙发明一个快速计算下次中断时间的数学公式

bigharpoon 发表于 2015-8-30 19:22:52

启动时的加速度和算法已知,那么启动到匀速时的步数s1就可计算出来;制动时的加速度和算法已知,那么从制动开始到完全停机时的步数s3可以计算出来;匀速时的步数s2可以将设定的总步数s0-s1-s2;总而言之,启动时的加速度、制动时的加速度、匀速期间的速度、总步数s0(s0对应负载的长度位移或者角位移)这4个参数通常是用户预先设定的,一旦设定好,内部程序会自动计算是s1、s2、s3,MCU在启动、匀速、制动期间执行相应的步数和频率控制即可。所以,楼主一定要搞清楚“AxisMoveRel()”这个函数每个形参的含义。如果该函数不支持匀速期间的速度变更,那只能歇菜了。。。做过步进电机控制器的路过。。。

myqiang1990 发表于 2015-8-30 18:52:40

那个算法研究过,但是很久以前了,忘了,刚才从新看了一下,在每次计算中断周期的时候,将开始计算出的最大速度(中断最小周期)更新为你设定的速度就可以了,因为程序中每次计算中断周期时都会去判断是否到达最大速度,或者判断当前电机位置是否到了减速的位置了,然后再设定电机工作状态,电机工作状态要切换好,但是要注意,更改最大速度后,你需要再次计算合理的减速点才行!要不然提高速度后你还是用之前计算出来的减速点减速,很有可能导致电机过冲!!在固定行程的情况下,而且当前电机处于加速或者匀速状态,因为在减速阶段,电机位置与目标位置已经很接近了,如果再加速很可能就没有足够的距离给电机进行减速,所以在行程固定,并且电机在加速或者匀速状态下更改电机的速度这种情况下比较好讨论,手机码字好累,明天我给你改改看……

myqiang1990 发表于 2015-8-30 21:25:09

有一种更加复杂的情况是行程不固定的,也就是电机运动过程中,位置发生了变化,而且变化是在任意位置点,这种情况下问题就复杂很多,你这种行程固定的,改变速度很好解决,只是注意重新计算减速点,要不然会有两种情况出现:第一,电机已经降到最低速度了,行程还没走完,那么电机肯定会以最低速慢慢的接近目标,这是不对的,第二,电机还没有降到最低速度就减速完了,这种情况会导致电机过冲,特别是带负载的情况下是不允许的。

honami520 发表于 2015-8-31 13:30:15

myqiang1990 发表于 2015-8-30 21:25
有一种更加复杂的情况是行程不固定的,也就是电机运动过程中,位置发生了变化,而且变化是在任意位置点,这 ...

多谢你的回复,主要是第一次做步进电机,而且要求还有些,所以一下子搞得有点无所适从。
看了楼上诸位的回复,尤其是兄弟你的回复,我觉得我大概知道了怎么样去做。准备今天就试试看。这个地方就先谢谢你了

myqiang1990 发表于 2015-8-31 14:13:03

honami520 发表于 2015-8-31 13:30
多谢你的回复,主要是第一次做步进电机,而且要求还有些,所以一下子搞得有点无所适从。
看了楼上诸位的 ...

http://www.amobbs.com/forum.php?mod=viewthread&tid=5546501&highlight=%E7%83%82%E5%B0%BE%E5%B7%A5%E7%A8%8B
我之前发的~比原版的会更加清晰~因为有中文注释~

honami520 发表于 2015-8-31 14:53:48

myqiang1990 发表于 2015-8-31 14:13
http://www.amobbs.com/forum.php?mod=viewthread&tid=5546501&highlight=%E7%83%82%E5%B0%BE%E5%B7%A5%E ...

谢谢哥们了。我仔细看看!

1069182055 发表于 2016-12-29 11:19:54

mark......
页: [1]
查看完整版本: 步进电机加减速算法,运行中,怎么样直接改变当前速度