首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

模数转换器与嵌入式微处理器的接口技术(2)

模数转换器与嵌入式微处理器的接口技术(2)

采样与保持

        ADC转换直流信号的工作原理简单明了。但如果在转换期间输入信号的变化超过一个最低有效位(LSB),ADC将得到不正确(或至少是不精确)的结果。减小误差的一种方法是在ADC之前添加低通滤波器,并选择适当的参数以保证ADC的输入在一个转换周期中的变化不超过一个最低有效位。

        处理变化的输入信号的另一种方法是在ADC之前添加采样-保持(S/H)电路,图3显示了采样-保持电路的工作原理。S/H电路具备带有控制输入的模拟(固态)开关,当开关闭合时,输入信号将连接至保持电容,而缓冲器的输出将跟踪输入。当开关开启时,输入信号将与保持电容断开。

        图中还给出了S/H的工作波形,S/H输入连接一个缓慢上升的信号,当控制信号较低时(采样模式),输出将跟踪输入;随着控制信号的增强(保持模式),输出将与输入的保持电容断开,并保持在S/H切换至保持模式时的输入值。当电路再次闭合,电容迅速充电,输出再次跟踪输入。通常S/H在ADC转换开始前切换至保持模式,而当转换结束后切回至采样模式。

        在理想条件下,保持电容不会发生漏电并且缓冲放大器具有无穷大的输入阻抗,因此输出将保持恒定。但在实际中,保持电容会漏电,而且缓冲放大器的输入阻抗是有限的,因而输出电平将随着电容放电产生缓慢的漂移。

        S/H电路在保持模式下保持输出的性能取决于保持电容的质量、缓冲放大器(主要是输入阻抗)的特性和采样/保持开关(实际的电子开关在开路时总会有漏电)的质量。保持模式下输出呈现出的漂移量称为固定偏差率(droop rate),可用毫伏/秒、毫伏/微秒或微伏/微秒来表示。

        实际中,S/H电路由于电子开关无法达到理想状况而具有有限的输入阻抗。这意味着在采样模式下,保持电容需要通过某些电阻进行充电,这限制了S/H可获取的输入速率。S/H在采样模式下为获得满刻度输入所必须保持的采样时间称为采集时间,单位是纳秒或微秒。

        采样时一些电阻与保持电容相串联,这样的效果等同于低通RC滤波器。这无疑限制了S/H所能获取的最大频率,该频率称为满功率带宽,单位是千赫或兆赫。

         如前所述,由于电子开关无法达到理想状况,某些输入信号将出现在输出中,即便在保持模式下也是如此,这种状况称为馈通,单位是分贝。

        输出偏移表示输入信号与输出信号之间的差异,S/H电路数据表通常以毫伏的形式表示保持模式下的偏移和采样模式的偏移。

应用软件

        使用S/H的ADC系统必须能处理硬件异常情况。在某些系统中,软件通过端口或寄存器输出位直接控制S/H的控制输入。S/H通常置为采样模式,而软件必须满足采集时间要求。在某些系统中,这项工作的完成仅仅只需将S/H置为采样模式,直到需要转换为止。

        当S/H置为保持模式后,另一位(或写入地址,或进行其它操作)将启动ADC。转换完成后,软件将读取结果。然而,一旦异常中断(或出现最坏情况的中断堆栈)导致S/H的输出电路变化至少一个最低有效位,将会出现问题。这种情况一旦发生,软件必须在S/H切换至保持模式之前禁止中断,并在开始转换之前开放中断,这样就能保证ADC在发生S/H偏差之前完成转换工作。

        软件还必须能调节S/H的充电时间。当电子开关闭合并与S/H电容的输入信号连通时,电容必须在有限的时间内充电,因为此时开关和任何驱动输入的电源都将具有非零阻抗。如果这些阻抗之和充分大,软件将需要增加延迟,以使得保持电容在转换之前,在终值的一个最低有效位变化以内有充分的时间进行充电。

内部微控制器ADC

        许多微控制器均带有片上ADC。典型的器件包括Microchip的PIC167C7xx系列产品和Atmel的AT90S4434。大多数微控制器ADC采用逐次逼近法,因为这种方法能对转换速率和微控制器裸片空间成本进行最佳折衷。

        PIC16C7xx微控制器包含一个带有模拟输入多路复用器的8位逐次逼近ADC。该系列微控制器具有4至8个通道,内部寄存器控制所选的通道并启动转换。输入一旦选定,在启动A/D转换之前,必须经过一段稳定时间使S/H电容充电。软件必须保证上述操作所需的延迟时间。

转换精确度

        一些微控制器(如Microchip系列产品)允许使用一个输入引脚作为参考电压,该引脚通常与某种精密参考电源相连。转换后从A/D转换器上读取的值为:

                                          (Vin/Vref)×256

        某些微控制器使用电源电压作为参考。在5V系统下,这意味着Vref为5V。因此采用8位ADC测量3.2V信号将得到如下结果:
                                         (Vin×256)/Vref =(3.2v×256)/5V =16310 =A316

        然而得到的结果还取决于5V电源值。如果电源电压超过1%,即为5.05V,那么A/D转换的结果将为:

                                         (3.2V×256)/5.05V=16210=A216

         因此电源电压1%的变化将导致转换结果计数改变1。典型电源的电压变化范围为2%或3%, 因此电源电压的变化将对转换结果产生显著的影响。电源电压的输出常常受到电源间负载、温度、交流输入变化的影响。

        这里提出了一个影响所有ADC设计的问题:参考电压的精确度。典型的ADC参考电压可为2.5V额定值,但可在2.47V和2.53V(这些数值来自数据表的实数部分)之间变化。如果采用10位的ADC,在上述给定的参考范围极限条件下,转换2V的输入将得到如下结果:当Vref=2.47V时, 转换结果=(2V×1,024)/2.47=82910;当Vref = 2.53V时,转换结果=(2V×1,024)/2.53=80910。

        各部分之间参考电压的变化可导致输出发生20个计数的变化。图4显示了参考变化对ADC结果的影响。尽管误差的百分比在整个范围内维持不变,但ADC值越大,误差值显然也越大。

软件校正

        有时由于需要得到精确的参考电压,对精确度的要求甚至超过了产品成本所能承受的范围。当无法进行手工调节时,即可采用软件来补偿参考电压的变化。这通常可通过提供已知的用于校正ADC的精确输入来实现。这个参考电压可以非常精确(当然也非常昂贵),因为只有很少的生产线需要这类参考电压。

        在上述2.47V示例中,ADC的输入可采用2V的精确电压。当软件读取ADC时,知道正确的值应为819,由此校正常数为829/819,或1.012。类似地,2.53V参考电压的校正常数为809/819,或0.988。

        这意味着需要浮点运算来校正ADC值。如果使用的处理器可处理浮点运算,那么这种方法就是可取的。但对于比较简单的处理器,则有可能不具备必要的处理时间或代码空间来实现浮点运算。

         进行ADC校正的一种有效方法是查表。但该方法的缺陷是需要足够大的固定存储器来维持对应于每个可能的ADC值的查表值,对于10位的ADC,查表需要1024字的存储空间。

         电压参考与其额定值相当接近,否则就不能称其为参考了。假定在工作温度中参考电压足够稳定,ADC误差占ADC读数值的百分比将是恒定的。因为ADC具有有限的分辨率,精度校正ADC误差的精度不会大于1LSB。

        这样我们就可按下面给出的方法简化ADC的校正工艺。作为查询表的替代,我们可以另外存储一个值,该值通知软件将要从ADC读取值中添加或删除的(二进制)百分比,由此校正误差。我们可以添加或删除输入的1/8、1/16或1/24,但都将导致精确度下降1 LSB。我们只需存储单个校正常数,而除法运算则可由一系列移位加或移位减运算实现。

        上述2.47V示例可由ADC值与.988相乘的结果加以校正,也可通过初始值减去1/128,再减去1/256和1/512得到相同的结果。在初始的2V示例中,采用整数表示法,可得到如下结果:

                               829-829/128-829/156-829/512 =829-6-3-1 =819

          上述结果将ADC读取值校正为819,这是额定参考电压为2.5V条件下的理想值。类似地,2.53V参考电压可通过增加1/128 和1/256加以校正。

        我们还必须确信在期望的工作温度范围内参考电压充分稳定,否则在期望温度附近只能得到较好的校正结果。如果参考电压的温度稳定性不够好,那么必须选择更好的参考电压,或者将工作温度范围分为多个段并在每个段上使用不同的校正值。当然,这也意味着需要使用热敏电阻或其它方法来测量温度。

        该方法通过对移位结果进行截断舍入而实现舍入误差处理。在2.47V示例给出的电子表格中,所有情形下的校正值均在理想值的两个计数以内。大多数校正值都是正确无误的,或者仅偏差一个计数。2V输入条件下得到的校正结果明显优于最初的偏差(10个计数),这正好满足了诸多应用系统的需要。如果应用系统连这点偏差都无法承受,那么确实需要更好的参考电压或者求助于手工调节。

        校正技术同样可用来补偿其它系统的不精确度,如电阻累计误差。如果所测量的系统包含电压输入,即可在输入中应用精确电压,并进行适当的校正,由此在ADC中补偿参考输入的变化并在输入条件下补偿电阻公差的影响。

校正值的计算和使用

         校正值可通过读取已知的参考输入并找到适当的校正系数(二进制系数)计算得到。对于上述给定的示例,理想值与最坏条件下的ADC值之间的差异将不会超过1.2%,因此初始值的1/2和1/4中不会出现分数,而能被测试和使用的值只能为1/128、1/256和1/512。这样就可以从接近期望值的地方开始工作。

        我们可以轻易地利用计算器求得校正系数,但如果要在应用系统的固定点处理器上计算校正系数,那么还需要采用基于整数的方法。根据该方法,单个字节(或字)用来存储校正常数,而第7位指示参考电压的高低状态(如参考电压为低,则需减去校正值,否则加上校正值)。第0、1和2位指示是否需要使用1/128、1/256和1/512系数。

        当然也可为每个可能的系数分别使用一个字节,其中第4个字节指示参考电压的高低状态。
继承事业,薪火相传
返回列表