之前第一个问题已经解决了,但是后两个问题基本还没说啊....我还是开个新贴算了
问题1.如上图所示,用M8000传输数据,也就是相当于一个扫描周期发送一次,采集会滞后吗?和步进的脉冲是不是一个数量级,2000的频率,0.5MS一个脉冲,扫描周期2MS左右,也就是说会不会滞后4个左右的脉冲数,(就是步进电机正在动作,我采集到信号比较如果正好是设定值,发出停止信号,步进已经多走路4个脉冲,1/50圈,精度如何保证呢)如何实现实时的采集呢,还是说直接给补偿到步进,能不能具体讲下
问题2.我一直采集,数据真的变化很大。要不要做些处理?滤波这类的,此模块采样速率为1秒10次,滤波这类的该怎么做呢?
引用 你握不住的沙 的回复内容: 1、增加回原点指令;你这个停止,有点奇怪啊,不能先比较...
-------------------------
它不是严格线性的啊,我一停止,再算出应该走多少步,然后走完之后还是不太准啊。
之前我是这么做的。目的就是要在某一个设定值停止,它对应的数据量算出来应该是K0,采集模块不变K0就不会变。先采集数据到K1,转3圈后再下升沿采集K2,算出比例系数,(K2-K1)/(3*细分数),对应1脉冲为N,然后(K0-K2)/N算得应走的脉冲数,发给步进。后来....不太准啊。照这说法,我发完停止,再采集再转,啥时候是个头。所以我才要数据实时采集,试试能不能用PID解决下。
做采样周期的话,待会再来说吧,先去吃饭先
引用 李东泽 的回复内容: 用高速计数器,实现数据采集。如果通讯,选择最高的传输速度
-------------------------
直接把模块的参数通过寄存器更改,这个没毛病。高速计数器,你说的可是这种方法,这些我都没试过,先试试再说。感谢jyc01220440024的总结,。,
9.消抖滤波法3 w6 ?4 V* o! v. }0 Q/ z2 [
A、方法:
设置一个滤波计数器9 L1 Y1 s3 X7 A0 J' [
将每次采样值与当前有效值比较:
如果采样值=当前有效值,则计数器清零: e# |, [3 }0 ~, [8 e
如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)6 E& m) n! ], F% ]8 m) C. q7 Y
如果计数器溢出,则将本次值替换当前有效值,并清计数器
B、优点:
对于变化缓慢的被测参数有较好的滤波效果,* l7 Y6 t" m7 V
可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
C、缺点:
对于快速变化的参数不宜+ m6 h+ `) F8 g; _! J6 ~
如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统. Z
问题1的重点是如何通过提高精度,如果通过变大采样周期或提取多次数据进行滤波的话,我本来一个数据来是2Ms,现在一个数据过来大于2Ms。实际步进多走了多于4个脉冲,也就是说受限于设备环境数据无法做到绝对的同步,我们能做的就是采集到数据非常接近时提前停止,减小误差量。我想问的是现实中有没有什么办法采集数据贼鸡儿快,这想法是之前问第一个问题时想到的,只是有点想不明白。这个估计没具体条件实施,原谅我(通讯传输快点算一个办法)
问题2说的是一直采集数据是不是非要滤波,可以采用其他方式吗,搜索了下都是滤波方式(或许我对滤波这个词不太理解),然后就是问了下滤波的方法,后来我又到百度下载了些方法,看了下