java怎么拦截某个对象
292
2022-11-08
如何为A/D转换接口电路的数据设定一个合适的阈值
起初的解决方案是首先确定一个阈值(如O.2),这个值的确定应保证所有可能的波峰值都要大于此值。读取A/D所采集的数据与确定的阈值相比较,当有值大于该阈值时,表明一个波形的到来,并不断通过比较得出最大值。然后判断A/D的转换值是否又重新小于该阈值,如果重新小于该阈值表明该波形即将结束,保存该最大值作为整个波形的最大值,并增加一个波形的个数。
实践证明该方法并没有很好的解决问题,尽管大多数情况下可以准确得出波峰的最大值以及波形的个数,但偶尔会发生得到的波形个数比实际波形多的情况。曾经主观的以为这是由于干扰造成的影响。但后来经过对波形数据分析发现,多出来的波形的最大峰值全部集中在阈值附近,更改不同的阈值后产生了类似的情况,所以可以得出问题的产生和阈值的设定之间有着某种联系。
1 原因分析
通过分析发现,上述问题的产生并不是出在逻辑关系上,而是出在了实际工作中A/D的采样精度及信号本身的问题上。下面从这两个方面人手,分析产生上述问题的原因。
1.1信号的影响
由于高频噪声的存在,很可能产生图2中所描绘的情形,即当波形在下降过程中下降到阈值线以下时,有返回到阈值线以上的情形。A/D进行高速的采样,记录下这一情形。按照最初设计方案的逻辑,当波形下降到阈值线以下时,判断为一个波形的结束;波形由阈值线以下上升超过阈值线时,认为是一个波形的开始。于是在波形的下降过程中,把在阈值线附近的这次波动作为一个新的波形记录下来。由于这个波形是白噪声引起的,变化幅值很小,一般情况下稍稍高过阈值线,所以多出的波形最大值就会集中在阈值附近,这与实际情况是相符的。
1.2 A/D转换精度的影响
2 解决办法
通过上述分析,虽然可以从降低信号噪声和提高A/D转换精度人手对问题加以解决,但这样解决起来会相当麻烦,特别是在精度等因素能够满足实际需要的条件下进行上述的处理是相当不可取的,因为当精度达到一定程度时再提高精度是非常困难的。
解决上述问题有一个非常简便的方法:设置不同的阈值。
首先对上升沿确定一个判别阈值,用以判别波形的开始。然后,对波形的下降沿设置另一个判别阈值用于判别一个波形的结束,两者之间存在一个差值,并且保证上升阈值减去下降阈值之差要大于噪声及A/D波动的最大值(实际工作中把差值尽量取得大些)。这样即使在下降阈值附近产生波动(不管什么原因引起),由于其峰值不能大于上升判别阈值,从而不致被误认为一个新波形的开始,也就不会增加误判波形的可能性。在实际工程中,证明这一方法简单有效,很好地解决了波形误判的问题。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~