在数据采集应用中怎样选择合适的采样率
时间:01-20
来源:互联网
点击:
在具体数据采集应用中,试错测试可能使用得最为普遍,但它既不是最快的也不是最好的确定抽样率的方法。采用系统工程分析并通过一系列预先设计好的试验,可以帮助快速找到适合的采样率。本文以弹球开关为例,介绍选择采样率时应考虑的一些因素。
最近我问一个工程师他系统所使用的采样率是多少,他回答说:“5毫秒”。我接着问他为什么,“因为它合适,”他说道。“我们花了很多天来测试不同的采样率,只有这个最合适。”
他的系统是一个按钮开关,要求去除掉一些反弹效应。他和他的试验小组最后选择5ms作为间隔是因为在测试过程中,采用这样的采样率既不会将一个信号错误地认为是两个信号,且由于速度快,也不会将有用的双击误认为是反弹。
5毫秒也许是一个可以接受的数值,但由于没有考虑系统其它因素,尤其是实时反应时间,我们确实无法知道这是不是最好的答案。
假设处理器过载,例如5ms采样时间造成40%过载,情况会怎样呢?可以将采样时间间隔增加到10ms而把代码占用的CPU资源降低到20%,另外一种方法是保持采样率不变,而将控制码执行的速度降低一半。那么从系统的角度来看哪一种方法更好呢?在采样资源和处理器利用率以及其它实时因素(如调度与优先级调换)间有没有一种好的折衷方法呢?下面让我们具体来看一看。
选择标准
在选择采样率时,有几个对立的因素要考虑,这些因素包括:
·采样应尽可能快,这样精度才高
·采样应尽可能慢,以节约处理器的时间
·采样应快到能提供足够的响应时间
·采样应慢到输入信号不受噪声的影响
·采样率应为控制算法频率的倍数,以减少抖动
由于没有一个答案能满足所有的要求,所以在考虑具体应用特性时只能找到一种比其它都更好的采样率,本文介绍的技术将有助于确定这个采样率,包括下面几个步骤:
1. 测量传感器的特性。
2. 如果输入有噪声,应选择合适的算法将其滤掉。
3. 只在满足功能的基础上计算采样率的最高和最低界限。
4. 在最高和最低界限之间确定均衡点。
5. 按均衡点优先次序在最高和最低界限间确定采样率。
这种方法适用于所有传感器,下面我们以实例集中讨论数字开关的情形。
数字开关
数字输入最简单的形式是开关,当开关合上时,开关的值是1,打开时值为0,如果是负逻辑,结果刚好相反。很多嵌入式系统都有一个或多个开关,如果开关很少,少于纯数字输入/输出(DIO)端口数量时,它们通常直接接到DIO端口上;开关数量多的时候则由一个开关矩阵来控制,这个以后另文再述。
一个理想的开关在合上时的信号为1,打开时信号是0,从一种状态到另一种状态的转换是瞬时完成的。但实际上,还有上升和下降时间需要考虑,由于这些时间和电路电容成正比,所以通常只有几个纳秒。在我们的分析中,只要传感器数据读取速度慢过每秒10万次,就可以将上升和下降时间忽略不计,因为读取速度慢,有些开关如光开关和结构紧固的瞬态开关其特性还是非常理想的。
然而大多数机械开关都有反弹效应。当开关合上时,从0到1的转换不是在瞬间完成或者说不是连续上升的。图1a显示了从示波器上看到的一个机械开关输出转换过程的波形,图1b是开关输出的数字信号波形。主脉冲前后多余的脉冲就是所谓的反弹,它产生于开关内部机械弹片发生接触的时候。如果反弹会造成不良的影响,就必须对其进行滤波,这个过程通常称为去反弹。
测量关闭时间
要决定采样率,就需要知道最小开关关闭时间,我们用σmin表示,它也是确保采样软件探测到开关状态的最短时间。有时候系统会具体规定,在没有规定的情况下,就需要通过实验,在具体系统需求和硬件特性的基础上确定。
最小开关时间一般用来作为数据噪声的阈值使用,而不是实际开关打开或关闭的时间。如果在输入端检测到脉冲的持续时间小于最小关闭时间,软件就可能把它漏过,我们不把这个看作是故障。另一方面,如果脉冲时间等于或大于σmin,软件将保证检测到开关的状态。
下面是我和一些工程技术人员对弹球机的研究经验分析,弹球机是一种很好的实验工具,因为它具备好几种类似于数字输入开关的机构,每种都有不同的特性,图2显示了其中的一些。 图2a中的开关必须经常监测,因为弹球运行速度很快,对于这类开关,我们测量得到它的σmin大概是10ms。(实际测量值带有小数位,我们分析时也是使用带小数的实际测量值,但为讨论方便起见本文中我们都四舍五入取为整数。)这个值根据环境不同而有所不同,改变环境特性可能会得到不同的最快开关关闭时间。也可以通过测量和分析来确定弹球通过开关的最快速度,如果这样的话,σmin可通过数学方法推导出来,它是最大球速和开关尺寸的函数。
图2b是一个中速开关。由于弹球方向改变,球通过开关时的速度值范围比最高速度要慢很多。在这个实验中,我们测得这些开关的最短开关关闭时间是50ms。
慢速开关是指在软件检测到之前它总是关闭的,直到发出重新打开的命令,图2c就是这样一种开关。在上面一个图中,球落在装有开关的洞里,当软件检测到有球存在以后,再触发电磁阀将球弹出去;在下面图中,球打在挡片上使弹簧将挡片拉下来,然后电磁阀再启动将挡片重新推上去。
对于慢速开关,最短开关闭合时间是触发电磁阀的控制软件的函数,在我们实验中电磁阀触发频率是10Hz。 一般我们假定开关闭合后没有被锁住,采用锁住的方法通常不现实,有时候根本不可能,如像开关矩阵。如果把开关锁住,结果就如图2c中的开关一样,其速度是发出解除锁存信号任务的函数。
如果开关不是理想的,还必须测量它的稳定时间,我们用τ来表示,它指达到正确反映开关状态的稳定值之前,开关可能弹起的时间。
我们发现图2a中左边的滚轮开关并不理想,但右边的光电开关却非常理想,它没有任何反弹。出于分析的目的,我们对最坏情况稳定时间τmax特别感兴趣。
通过实验我们可得到σmin和τmax。测量时我们把开关放在Vcc和GND之间,并通过一个限流下拉电阻,Vout接在逻辑分析仪上,然后将逻辑分析仪设定为上升沿触发(图3)。
用最快的速度将开关闭合后再打开。如果是一个理想的或接近理想的开关,你可以看到开关很平滑地从0变为1,再从1变为0;如果是一个有反弹的开关,输出的波形跟图4就有点类似。将这个实验反复几十次,记录下每次的σmin和τmax。
在进行这些实验的时候,必须要考虑最终应用中开关的工作情况。在弹球机上,球通过开关的速度比人按下再放开的速度要快,也比人用手将球滚过开关的速度要快,正因为此,在测试过程中我们采用电磁阀来触动推杆将球推过开关,而不是用手指来触动开关或用手将球滚过开关。
设计为手工操作的开关要经历各种按压,因此应针对不同情况重复进行实验。例如轻轻按下时开关稳定时间快,但闭合时间也短;而使劲按下开关闭合时间长,但也许由于反弹其稳定时间也长,实验时要记录下最小、平均及最大σmin和τmax。为了使采样数据真实,可以在工休场所进行实验,要求进来休息的每一个人很快地按几下开关,再慢慢地按几下,再几次连着按两下,其目的是为了能得到尽可能接近使用者的数据。如果是小孩用的东西,就叫小孩来按开关;如果使用者是18至80岁的人,就让这个年龄段的人来试。多收集数据或许可以防止灾难性的结果,不会使生产出来的产品有些人根本就不能正常使用。
最近我问一个工程师他系统所使用的采样率是多少,他回答说:“5毫秒”。我接着问他为什么,“因为它合适,”他说道。“我们花了很多天来测试不同的采样率,只有这个最合适。”
他的系统是一个按钮开关,要求去除掉一些反弹效应。他和他的试验小组最后选择5ms作为间隔是因为在测试过程中,采用这样的采样率既不会将一个信号错误地认为是两个信号,且由于速度快,也不会将有用的双击误认为是反弹。
5毫秒也许是一个可以接受的数值,但由于没有考虑系统其它因素,尤其是实时反应时间,我们确实无法知道这是不是最好的答案。
假设处理器过载,例如5ms采样时间造成40%过载,情况会怎样呢?可以将采样时间间隔增加到10ms而把代码占用的CPU资源降低到20%,另外一种方法是保持采样率不变,而将控制码执行的速度降低一半。那么从系统的角度来看哪一种方法更好呢?在采样资源和处理器利用率以及其它实时因素(如调度与优先级调换)间有没有一种好的折衷方法呢?下面让我们具体来看一看。
选择标准
在选择采样率时,有几个对立的因素要考虑,这些因素包括:
·采样应尽可能快,这样精度才高
·采样应尽可能慢,以节约处理器的时间
·采样应快到能提供足够的响应时间
·采样应慢到输入信号不受噪声的影响
·采样率应为控制算法频率的倍数,以减少抖动
由于没有一个答案能满足所有的要求,所以在考虑具体应用特性时只能找到一种比其它都更好的采样率,本文介绍的技术将有助于确定这个采样率,包括下面几个步骤:
1. 测量传感器的特性。
2. 如果输入有噪声,应选择合适的算法将其滤掉。
3. 只在满足功能的基础上计算采样率的最高和最低界限。
4. 在最高和最低界限之间确定均衡点。
5. 按均衡点优先次序在最高和最低界限间确定采样率。
这种方法适用于所有传感器,下面我们以实例集中讨论数字开关的情形。
数字开关
数字输入最简单的形式是开关,当开关合上时,开关的值是1,打开时值为0,如果是负逻辑,结果刚好相反。很多嵌入式系统都有一个或多个开关,如果开关很少,少于纯数字输入/输出(DIO)端口数量时,它们通常直接接到DIO端口上;开关数量多的时候则由一个开关矩阵来控制,这个以后另文再述。
一个理想的开关在合上时的信号为1,打开时信号是0,从一种状态到另一种状态的转换是瞬时完成的。但实际上,还有上升和下降时间需要考虑,由于这些时间和电路电容成正比,所以通常只有几个纳秒。在我们的分析中,只要传感器数据读取速度慢过每秒10万次,就可以将上升和下降时间忽略不计,因为读取速度慢,有些开关如光开关和结构紧固的瞬态开关其特性还是非常理想的。
然而大多数机械开关都有反弹效应。当开关合上时,从0到1的转换不是在瞬间完成或者说不是连续上升的。图1a显示了从示波器上看到的一个机械开关输出转换过程的波形,图1b是开关输出的数字信号波形。主脉冲前后多余的脉冲就是所谓的反弹,它产生于开关内部机械弹片发生接触的时候。如果反弹会造成不良的影响,就必须对其进行滤波,这个过程通常称为去反弹。
测量关闭时间
要决定采样率,就需要知道最小开关关闭时间,我们用σmin表示,它也是确保采样软件探测到开关状态的最短时间。有时候系统会具体规定,在没有规定的情况下,就需要通过实验,在具体系统需求和硬件特性的基础上确定。
最小开关时间一般用来作为数据噪声的阈值使用,而不是实际开关打开或关闭的时间。如果在输入端检测到脉冲的持续时间小于最小关闭时间,软件就可能把它漏过,我们不把这个看作是故障。另一方面,如果脉冲时间等于或大于σmin,软件将保证检测到开关的状态。
下面是我和一些工程技术人员对弹球机的研究经验分析,弹球机是一种很好的实验工具,因为它具备好几种类似于数字输入开关的机构,每种都有不同的特性,图2显示了其中的一些。 图2a中的开关必须经常监测,因为弹球运行速度很快,对于这类开关,我们测量得到它的σmin大概是10ms。(实际测量值带有小数位,我们分析时也是使用带小数的实际测量值,但为讨论方便起见本文中我们都四舍五入取为整数。)这个值根据环境不同而有所不同,改变环境特性可能会得到不同的最快开关关闭时间。也可以通过测量和分析来确定弹球通过开关的最快速度,如果这样的话,σmin可通过数学方法推导出来,它是最大球速和开关尺寸的函数。
图2b是一个中速开关。由于弹球方向改变,球通过开关时的速度值范围比最高速度要慢很多。在这个实验中,我们测得这些开关的最短开关关闭时间是50ms。
慢速开关是指在软件检测到之前它总是关闭的,直到发出重新打开的命令,图2c就是这样一种开关。在上面一个图中,球落在装有开关的洞里,当软件检测到有球存在以后,再触发电磁阀将球弹出去;在下面图中,球打在挡片上使弹簧将挡片拉下来,然后电磁阀再启动将挡片重新推上去。
对于慢速开关,最短开关闭合时间是触发电磁阀的控制软件的函数,在我们实验中电磁阀触发频率是10Hz。 一般我们假定开关闭合后没有被锁住,采用锁住的方法通常不现实,有时候根本不可能,如像开关矩阵。如果把开关锁住,结果就如图2c中的开关一样,其速度是发出解除锁存信号任务的函数。
如果开关不是理想的,还必须测量它的稳定时间,我们用τ来表示,它指达到正确反映开关状态的稳定值之前,开关可能弹起的时间。
我们发现图2a中左边的滚轮开关并不理想,但右边的光电开关却非常理想,它没有任何反弹。出于分析的目的,我们对最坏情况稳定时间τmax特别感兴趣。
通过实验我们可得到σmin和τmax。测量时我们把开关放在Vcc和GND之间,并通过一个限流下拉电阻,Vout接在逻辑分析仪上,然后将逻辑分析仪设定为上升沿触发(图3)。
用最快的速度将开关闭合后再打开。如果是一个理想的或接近理想的开关,你可以看到开关很平滑地从0变为1,再从1变为0;如果是一个有反弹的开关,输出的波形跟图4就有点类似。将这个实验反复几十次,记录下每次的σmin和τmax。
在进行这些实验的时候,必须要考虑最终应用中开关的工作情况。在弹球机上,球通过开关的速度比人按下再放开的速度要快,也比人用手将球滚过开关的速度要快,正因为此,在测试过程中我们采用电磁阀来触动推杆将球推过开关,而不是用手指来触动开关或用手将球滚过开关。
设计为手工操作的开关要经历各种按压,因此应针对不同情况重复进行实验。例如轻轻按下时开关稳定时间快,但闭合时间也短;而使劲按下开关闭合时间长,但也许由于反弹其稳定时间也长,实验时要记录下最小、平均及最大σmin和τmax。为了使采样数据真实,可以在工休场所进行实验,要求进来休息的每一个人很快地按几下开关,再慢慢地按几下,再几次连着按两下,其目的是为了能得到尽可能接近使用者的数据。如果是小孩用的东西,就叫小孩来按开关;如果使用者是18至80岁的人,就让这个年龄段的人来试。多收集数据或许可以防止灾难性的结果,不会使生产出来的产品有些人根本就不能正常使用。
传感器 嵌入式 电路 电容 示波器 电阻 FPGA 相关文章:
- 传感器技术中的阻抗测量方法(03-23)
- 电桥测量基础(06-10)
- 适用于微型仪器的精密电容传感器接口(09-06)
- 基于PIR的移动检测系统的实现(11-03)
- 基于霍尔传感器的直流电机转速测量系统设计(11-14)
- NPXI智能传感器的TPMS系统设计(11-29)