来源:单片机及嵌入式系统应用 作者:北京理工大学 李大国 张庆明 A/D转换接口电路是数据采集系统前向通道中的一个环节,它的作用是将模拟信号转换成可供计算机处理的数字信号,是一般控制系统中不可缺少的环节之一。人们有时需要对A/D转换的数据设定一个阈值作为判断和处理的依据,例如设置一个阈值并使之与A/D转换的结果相比较,当A/D转换的数据结果大于或小于该阈值时,作为开始或结束某一操作的判断依据。但是如果这个阈值设置不合理,就会引出问题。
图1是某项工程中传感器产生的模拟信号经A/D转换后所得数据描绘出的部分图形,根据工程需要得出每个波峰的最大值及波形的个数。
起初的解决方案是首先确定一个阈值(如O.2),这个值的确定应保证所有可能的波峰值都要大于此值。读取A/D所采集的数据与确定的阈值相比较,当有值大于该阈值时,表明一个波形的到来,并不断通过比较得出最大值。然后判断A/D的转换值是否又重新小于该阈值,如果重新小于该阈值表明该波形即将结束,保存该最大值作为整个波形的最大值,并增加一个波形的个数。 实践证明该方法并没有很好的解决问题,尽管大多数情况下可以准确得出波峰的最大值以及波形的个数,但偶尔会发生得到的波形个数比实际波形多的情况。曾经主观的以为这是由于干扰造成的影响。但后来经过对波形数据分析发现,多出来的波形的最大峰值全部集中在阈值附近,更改不同的阈值后产生了类似的情况,所以可以得出问题的产生和阈值的设定之间有着某种联系。 1 原因分析 通过分析发现,上述问题的产生并不是出在逻辑关系上,而是出在了实际工作中A/D的采样精度及信号本身的问题上。下面从这两个方面人手,分析产生上述问题的原因。
1.1信号的影响 从采集到的数字信号所描绘的图形(图1)中可以看出有大量白噪声的存在。即使对A/D转换前的信号进行了一定的滤波处理,转化后的信号也会或多或少有噪声的存在。对图1中波形与阈值线的交汇处(这里以下降沿为例)进行放大显示,如图2所示。 由于高频噪声的存在,很可能产生图2中所描绘的情形,即当波形在下降过程中下降到阈值线以下时,有返回到阈值线以上的情形。A/D进行高速的采样,记录下这一情形。按照最初设计方案的逻辑,当波形下降到阈值线以下时,判断为一个波形的结束;波形由阈值线以下上升超过阈值线时,认为是一个波形的开始。于是在波形的下降过程中,把在阈值线附近的这次波动作为一个新的波形记录下来。由于这个波形是白噪声引起的,变化幅值很小,一般情况下稍稍高过阈值线,所以多出的波形最大值就会集中在阈值附近,这与实际情况是相符的。
1.2 A/D转换精度的影响 尽管一些A/D产品标称的不可调误差≤1LSB,但在实际工程应用中由于电源电压、干扰等因素的影响很难达到上述精度,这也就是说即使是对于理想中恒定不变的信号进行A/D转换,得到的转换值事实上也是围绕该恒定的信号值上下波动的。在本例中,当信号下降至阈值附近时(假定信号纯净,不含任何杂波成分),由于A/D转换精度的影响,采得的数据同样可能在阈值附近波动,从而造成多记录波形数据的结果。当然,这种情况下多记录的波形最大值受A/D转换精度的影响,与信号本身因素引起的波形最大值相比,一般会更接近阈值。 2 解决办法 通过上述分析,虽然可以从降低信号噪声和提高A/D转换精度人手对问题加以解决,但这样解决起来会相当麻烦,特别是在精度等因素能够满足实际需要的条件下进行上述的处理是相当不可取的,因为当精度达到一定程度时再提高精度是非常困难的。
解决上述问题有一个非常简便的方法:设置不同的阈值。
首先对上升沿确定一个判别阈值,用以判别波形的开始。然后,对波形的下降沿设置另一个判别阈值用于判别一个波形的结束,两者之间存在一个差值,并且保证上升阈值减去下降阈值之差要大于噪声及A/D波动的最大值(实际工作中把差值尽量取得大些)。这样即使在下降阈值附近产生波动(不管什么原因引起),由于其峰值不能大于上升判别阈值,从而不致被误认为一个新波形的开始,也就不会增加误判波形的可能性。在实际工程中,证明这一方法简单有效,很好地解决了波形误判的问题。
|