电机控制
直播中

黑眼圈红了

8年用户 109经验值
擅长:可编程逻辑 嵌入式技术 模拟技术 EMC/EMI设计 接口/总线/驱动
私信 关注
[问答]

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

我写了一个步进电机加减速运动的程序,但是发现电机进入不了加减速,主程序中给定一个固定步数,由加减速程序去判断加减速且走完固定步数就关闭定时器,但是电机停不了,也不能加减速。 步进电机加减速运动程序
已退回5积分

回帖(29)

xianhehu

2016-12-7 17:31:06
程序明显有问题啊! if(!stepCnt) 是当stepCnt等于0是才会进入。结果就是第一步会进入这个函数然后加速,然后后面永远不会在进入,最后就是永远处于这个速度,永远不会减速,不会停止。
举报

黑眼圈红了

2016-12-8 09:38:31
引用: xianhehu 发表于 2016-12-7 17:31
程序明显有问题啊! if(!stepCnt) 是当stepCnt等于0是才会进入。结果就是第一步会进入这个函数然后加速,然后后面永远不会在进入,最后就是永远处于这个速度,永远不会减速,不会停止。

这一点是因为我希望主程序给电机步数的时候,电机都是从一开始进入加减速,if(!stepCnt)里面包含的程序只是为了分配加减速步数而已。走过第一步之后不需要再进入这一段程序,直接跑到后面的加速段或者减速段执行就好了。匀速段则不会改变定时器的值。经过昨天的测试,我发现问题出在减速段的条件上面,应该是else if(stepCnt>lessSpeedStep),去掉等号就可以加减速了。不过现在主要的问题是无论我怎么设置加减速数组,电机声音都很大。
举报

xianhehu

2016-12-9 17:55:01
本帖最后由 xianhehu 于 2016-12-9 18:00 编辑
引用: 黑眼圈红了 发表于 2016-12-8 09:38
这一点是因为我希望主程序给电机步数的时候,电机都是从一开始进入加减速,if(!stepCnt)里面包含的程序只是为了分配加减速步数而已。走过第一步之后不需要再进入这一段程序,直接跑到后面的加速段或者减速段执行就好了。匀速段则不会改变定时器的值。经过昨天的测试,我发现问题出在减速段的条件上面,应该是else if(ste ...

你后面的所有加速减速代码不都在if(!stepCnt)这个条件语句块之内的吗,你进不了这个条件,你后面怎么可能进去?stepCnt等于0才进入,后面胡if(stepCnt>lessSpeedStep)还有意义吗?  或者你程序改了,不是上面发的那个?
举报

黑眼圈红了

2016-12-12 09:31:35
引用: xianhehu 发表于 2016-12-9 17:55
你后面的所有加速减速代码不都在if(!stepCnt)这个条件语句块之内的吗,你进不了这个条件,你后面怎么可能进去?stepCnt等于0才进入,后面胡if(stepCnt>lessSpeedStep)还有意义吗?  或者你程序改了,不是上面发的那个?

只在第一次启动的时候进入if(!stepCnt),在这段程序里实现加减速步数的计算,第二次以及之后的步数因为已经不等于0了,所以进入中断的时候直接跳到判断stepCnt与addSpeedStep或者lessSpeedStep的大小,从而得知电机是在加速段还是减速段,然后进入相应的程序、
举报

更多回帖

发帖
×
20
完善资料,
赚取积分