关于步进电机加减速运动的C程序编写

2019-07-18 14:59发布

我写了一个步进电机加减速运动的程序,但是发现电机进入不了加减速,主程序中给定一个固定步数,由加减速程序去判断加减速且走完固定步数就关闭定时器,但是电机停不了,也不能加减速。 步进电机加减速运动程序
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
xianhehu
1楼-- · 2019-07-18 17:06
程序明显有问题啊! if(!stepCnt) 是当stepCnt等于0是才会进入。结果就是第一步会进入这个函数然后加速,然后后面永远不会在进入,最后就是永远处于这个速度,永远不会减速,不会停止。
黑眼圈红了
2楼-- · 2019-07-18 18:36
xianhehu 发表于 2016-12-7 17:31
程序明显有问题啊! if(!stepCnt) 是当stepCnt等于0是才会进入。结果就是第一步会进入这个函数然后加速,然后后面永远不会在进入,最后就是永远处于这个速度,永远不会减速,不会停止。

这一点是因为我希望主程序给电机步数的时候,电机都是从一开始进入加减速,if(!stepCnt)里面包含的程序只是为了分配加减速步数而已。走过第一步之后不需要再进入这一段程序,直接跑到后面的加速段或者减速段执行就好了。匀速段则不会改变定时器的值。经过昨天的测试,我发现问题出在减速段的条件上面,应该是else if(stepCnt>lessSpeedStep),去掉等号就可以加减速了。不过现在主要的问题是无论我怎么设置加减速数组,电机声音都很大。
xianhehu
3楼-- · 2019-07-18 22:53
本帖最后由 xianhehu 于 2016-12-9 18:00 编辑
黑眼圈红了 发表于 2016-12-8 09:38
这一点是因为我希望主程序给电机步数的时候,电机都是从一开始进入加减速,if(!stepCnt)里面包含的程序只是为了分配加减速步数而已。走过第一步之后不需要再进入这一段程序,直接跑到后面的加速段或者减速段执行就好了。匀速段则不会改变定时器的值。经过昨天的测试,我发现问题出在减速段的条件上面,应该是else if(ste ...

你后面的所有加速减速代码不都在if(!stepCnt)这个条件语句块之内的吗,你进不了这个条件,你后面怎么可能进去?stepCnt等于0才进入,后面胡if(stepCnt>lessSpeedStep)还有意义吗?  或者你程序改了,不是上面发的那个?
黑眼圈红了
4楼-- · 2019-07-19 02:26
xianhehu 发表于 2016-12-9 17:55
你后面的所有加速减速代码不都在if(!stepCnt)这个条件语句块之内的吗,你进不了这个条件,你后面怎么可能进去?stepCnt等于0才进入,后面胡if(stepCnt>lessSpeedStep)还有意义吗?  或者你程序改了,不是上面发的那个?

只在第一次启动的时候进入if(!stepCnt),在这段程序里实现加减速步数的计算,第二次以及之后的步数因为已经不等于0了,所以进入中断的时候直接跳到判断stepCnt与addSpeedStep或者lessSpeedStep的大小,从而得知电机是在加速段还是减速段,然后进入相应的程序、
xianhehu
5楼-- · 2019-07-19 03:28
 精彩回答 2  元偷偷看……
z810401351
6楼-- · 2019-07-19 06:04
不懂编程的我好像看懂了楼上在讨论什么

一周热门 更多>