xishuidemian 发表于 2014-10-26 18:52

eCAP转速采集

最近碰到一个问题,用eCAP采集转速的时候,中断处理,可以正常采集。现在碰到一个问题就是,假如转速线突然断开了,中断就讲不去了,转速保持前一次的值不变。这并不是我想要的结果,我要的是这种故障发生的时候,转速能突变成0.想问问大家,有什么好的处理办法呢?
公司不联网,不方便传代码。谢谢。

wangch_sh 发表于 2014-10-26 18:57

定时。设标志位,不进捕捉中断为1,进中断清零。到一定时间不清零,认为线断,把转速清零。

zhangmangui 发表于 2014-10-26 22:15

看来你是在ECAP中断中处理数据的啊   你是编码器信号触发一次然后捕获一次定时器的值吗
记得应该有一个方向判断的标志    你可以利用一下这个信号
当为正是正转   负为反转    停止时是不是0呢

xishuidemian 发表于 2014-10-27 19:20

wangch_sh 发表于 2014-10-26 18:57 static/image/common/back.gif
定时。设标志位,不进捕捉中断为1,进中断清零。到一定时间不清零,认为线断,把转速清零。 ...

这个办法可以试试。只是定时器要不停得查询,对整个系统的效率有影响了。

xishuidemian 发表于 2014-10-27 19:31

zhangmangui 发表于 2014-10-26 22:15 static/image/common/back.gif
看来你是在ECAP中断中处理数据的啊   你是编码器信号触发一次然后捕获一次定时器的值吗
记得应该有一个方 ...

我这个是脉冲信号,没有正反转.采集上升沿的时刻,然后相减,即得到周期,再经过换算得到转速。当然程序中还有多次采集取平均值的过程。

wangch_sh 发表于 2014-10-27 19:34

用中断。定时周期长一些。

xishuidemian 发表于 2014-10-27 19:38

目前我用办法是定义一个全局变量,作为转速的影子变量。在中断外将它赋给转速变量(也是一个全局变量),赋值完后又令他等于0,下次中断得到的值去覆盖它。如果转速为0,即中断进不去了,所以下次的转速也就等于0.初步调试是可行的,就是不知道会不会有BUG。

zhangmangui 发表于 2014-10-27 22:17

xishuidemian 发表于 2014-10-27 19:31 static/image/common/back.gif
我这个是脉冲信号,没有正反转.采集上升沿的时刻,然后相减,即得到周期,再经过换算得到转速。当然程序 ...

哦    看来你没有同时采集A、B两相啊
做平均处理不太好   我建议你采用变M/T法吧

xishuidemian 发表于 2014-10-28 19:14

zhangmangui 发表于 2014-10-27 22:17 static/image/common/back.gif
哦    看来你没有同时采集A、B两相啊
做平均处理不太好   我建议你采用变M/T法吧 ...

M和T法以前单独用过,你这里的意思应该是两者混合使用吧,那切换的地方该怎么处理呢?还有我一直都是用多次采集取中间值得办法进行滤波,不管是AD采集还是IC采集,这样不好吗?那应该怎么消除干扰呢?

zhangmangui 发表于 2014-10-28 21:42

xishuidemian 发表于 2014-10-28 19:14 static/image/common/back.gif
M和T法以前单独用过,你这里的意思应该是两者混合使用吧,那切换的地方该怎么处理呢?还有我一直都是用多 ...

这样也可以   如果一直使用没问题就沿用你的方法
关于你的这个问题    想不到什么好办法啊

寻觅不倒翁 发表于 2015-8-30 14:50

zhangmangui 发表于 2014-10-27 22:17
哦    看来你没有同时采集A、B两相啊
做平均处理不太好   我建议你采用变M/T法吧 ...

你好,想麻烦你解释一下这个问题的楼主在第7楼说的方法,我尝试了楼主的方法,没成功,不知是不是哪里弄错了,谢谢你了

寻觅不倒翁 发表于 2015-8-30 17:45

我也碰到了这个问题,请楼主传授解决的方法,谢谢。

zhangmangui 发表于 2015-8-30 18:40

寻觅不倒翁 发表于 2015-8-30 17:45
我也碰到了这个问题,请楼主传授解决的方法,谢谢。

每次计算完成后   将值置为0    然后等待下次触发   
这样行不行也就是每次的初始值让其为0

寻觅不倒翁 发表于 2015-8-31 11:40

zhangmangui 发表于 2015-8-30 18:40
每次计算完成后   将值置为0    然后等待下次触发   
这样行不行也就是每次的初始值让其为0 ...

嗯,我也是这么做的,还是没起作用,

gejigeji521 发表于 2015-9-30 22:41

一个月了,楼主弄好了没
页: [1]
查看完整版本: eCAP转速采集