【ADC】ADC 系统失调和增益误差的校准方法

news2024/11/28 16:43:42

概述

本文学习于TI 高精度实验室课程,讨论如何计算增益和偏移误差并通过校准消除。首先对数据转换器系统进行偏移和增益误差计算,然后讨论几种校准此误差的方法。最后介绍一些难以校准的误差源。


文章目录

  • 概述
  • 一、误差校准原理与方法
  • 二、实际应用问题举例
    • 例 1:失调校准分析
    • 例 2:校准可行性
    • 例 3:ADC 校准综合分析计算


一、误差校准原理与方法

下图是前文(系统误差分析中的统计原理)提到过的偏移计算。在这里,我们查看信号链中两个放大器和 ADC 的典型(TYP)偏移。所有偏移值均参考数据转换器的输入。因此需要考虑每个放大器的增益。在此示例中,U1 的增益为 20,因此其偏移乘以该因子。

在这里插入图片描述

所有三个偏移量均使用平方根和进行合并,因为它们是不相关的高斯分布。此处的总偏移量表示系统的典型偏移量,即正负 1 个标准偏差。要设置最坏情况限制,我们可以根据系统要求将标准偏差乘以表中的适当因子。例如,如果我们将系统最大规格设置为正负 3 个标准差,则 99.73% 的总体将在该限制范围内,而 0.27% 的总体将超出该限制。根据要求,可以设置更保守的元素。

下图展示了可以对增益误差进行类似的统计分析。在这种情况下,电流分流电阻器、电流分流放大器、缓冲器和数据转换器将产生增益误差。我们将忽略缓冲器的增益误差,因为它非常小并且与放大器的开环增益有关。

在这里插入图片描述

在这种情况下,一些参数没有典型值,因此必须使用最坏情况进行分析。上图顶部的方程式显示了绝对最坏情况分析(其中误差直接相加)和统计最坏情况(其中误差以平方和根的形式相加)。统计最坏情况是对最坏情况的更合理估计,而绝对最坏情况则更为保守。

在此示例中,电流分流放大器 U1 的误差是主要误差源。对于许多电路,增益由外部分立电阻器设置。对于这种类型的电路,蒙特卡罗分析是查找增益误差的好方法。大多数信号链的传递特性是线性函数,形式为 y 等于 mx 加 b。从技术上讲,会有一些非线性项,但假设线性是一个很好的一阶近似。

失调和增益校准基于这样的理念:可以求解直线方程的斜率和截距。注意,斜率误差是增益误差,截距是失调误差。应用两个不同的输入信号并测量相关的输出代码可以求解斜率和截距。但是,必须小心确保放大器都在曲线的线性区域内工作。 如下图所示。

在这里插入图片描述

通过查看输入/输出关系,可以看到在非线性区域中无法确定传递函数的斜率。在此示例中,我们应用 0 安培和 20 安培并测量相关的输出代码。注意,0 安培将 U1 的输出驱动至 0.5 伏,而 20 安培将输出驱动至 4.5 伏。因此,这些测试信号使系统保持在线性范围内。

使用的测试信号必须非常准确,这一点非常重要。测试信号中的任何错误都会在校准系数中引入错误,并最大限度地降低校准的有效性。 校准后,测量的斜率和测量的偏移(称为校准系数)通常存储在微控制器的内存中。然后在设备正常运行期间使用这些系数来补偿增益和偏移误差。

下图是基于上一张图片中的电路的示例校准。在这种情况下,校准测试信号为 0.5 伏和 4.5 伏。注意,理想曲线显示为蓝色,测量曲线显示为红色。测量曲线与理想曲线有不同的斜率和偏移。

在这里插入图片描述

斜率可以通过将输出代码的变化除以输入电压的变化来计算。偏移量是通过求解 y 等于 mx 加 b 方程并代入一个输入及其相关输出信号来确定的。一旦有了偏移量和斜率,就可以纠正任何输入的误差。在此示例中,应用 2.0 伏输入信号。未校准的读数为 2.002 伏,因此增益和偏移存在 2 毫伏误差。使用校准系数进行校正,可以消除误差并确定 2 伏的实际输入信号。

一些校准方案在初始生产期间应用外部校准信号来校准系统。在其他情况下,系统将具有板载精密参考来生成校准信号。但是,对于某些应用,生成精密校准输入信号可能不切实际,因为成本可能太高。在我们刚刚考虑的例子中,校准信号为 0 安培至 20 安培。生成精密的 20 安培信号来校准系统具有挑战性且成本高昂。

简化校准方案的一种方法是进行仅偏移校准。偏移校准的优点在于,它通常可以通过将输入短路至地来完成。将输入短路至地可提供非常准确的 0 伏输入信号。但是 0 伏输入信号不具备用于两点增益和偏移校准的典型参考电路所固有的精度和漂移。

下图的电路显示了一个简单的校准方案,其中可以断开输入信号并将输入接地以进行偏移校准。 当将 0 伏电压施加到输入时,偏移量直接读取为负 30 代码。此偏移量包括 ADC 偏移量以及放大器 U1 和 U2 的偏移量。此外,可以定期运行此校准以解决偏移漂移问题。理想情况下,如果我们也可以校准增益误差就好了,但这需要精密的校准源。

在这里插入图片描述

因此,为了尽量降低成本和复杂性,一些系统使用单点校准。**但是这种类型的校准只能在具有双极范围或差分输入范围的 ADC 上进行。**下面解释为什么这种方法不能用于单极 ADC。

下图展示了正和负偏移对单极数据转换器的影响。单极是指输入信号始终为正。也就是说,它的范围从 0 到满量程范围,表示为 FSR。此示例的输出代码范围从十六进制 000 到十六进制 FFF。虽然单极转换器没有负输出代码,但可以有负偏移。

在这里插入图片描述

左侧的图表显示了负偏移如何影响 ADC 传递函数。理想曲线显示为蓝色,测量曲线显示为红色。请注意,测量曲线因负偏移而向下移动,但传递函数在 000 十六进制处被截断。因此,对于此示例,应用 0 伏输入将生成 000 十六进制输出代码,即使实际偏移误差为负 003 十六进制。因此,您无法使用单极 ADC 的 0 伏校准信号校准负偏移。但是,如右侧曲线所示,可以使用单极 ADC 的 0 伏输入测量正偏移。

在此示例中,将 0 伏电压施加到输入端,测量到正 003 十六进制的偏移。然而,从校准的角度来看,这并没有真正的帮助,因为 ADC 的偏移在负值和正值之间变化,是不确定的。

下图展示的是双极 ADC 或具有差分输入范围的 ADC 的偏移误差。术语“双极”表示输入可以接受负电压和正电压。这些曲线也适用于具有差分输入范围的单极输入。

在这里插入图片描述

前面的示例使用了 ADS 9110,这是一种单极设备,具有正或负 Vref 的差分输入范围。范围从负满量程(表示为 NFS)开始,到正满量程(表示为 PFS)结束。在这种情况下,可以将 0 伏电压施加到输入并直接读取输出。

短路输入以确定偏移量通常被用作一种简单的偏移量测量和校准方法。一些数据转换器具有允许自动偏移量校准的便捷功能。一般来说,此校准是通过向 ADC 发送数字命令来启动的。这可以定期进行,以便同时考虑偏移量漂移。

在校准过程中,ADC 的输入与电路的其余部分断开,因此不需要特殊的校准测试信号。注意,在这种情况下,校准仅适用于数据转换器,并且在此自动校准中不会校正信号链其余部分的偏移误差。

在这里插入图片描述

校准后,偏移的数字值存储在寄存器中。校准后,偏移寄存器会自动从读数中减去,以纠正偏移误差。这种校正可以显著减少偏移误差。 例如,通过校准,ADS7042 的典型偏移从正负 12 LSB 减少到正负 1/2 LSB。

最后,需要注意的是,这种自动校准可以校正失调误差,但不能校正增益误差。 增益和失调误差是两种常见的误差源,可以通过校准来消除,其他一些误差源可能很难或不可能通过校准消除。这里列举了一些例子。失调和增益误差可能会产生温度漂移,积分非线性是传递函数与理想传递函数偏差的测量值。时间老化是器件性能随时间下降的测量值。
在这里插入图片描述

数据表明器件的行为如何通过温度循环而改变。这与温度漂移不同,因为器件的室温操作可以改变,例如,通过将温度从热循环到冷再循环回室温。**在温度循环之后,偏移和增益可能会因极端温度在设备内部引起的应力而发生变化。**但是这些类型的误差很难在校准中纠正。因此,理想情况下,它们应该低于系统的误差需求。


二、实际应用问题举例

例 1:失调校准分析

下图所示电路目的是校准系统的失调电压,ADC 的输入范围为 0V 到 5V,当将输入信号设为 0V,是否可以通过测量 ADC 的数字输出来实现此失调校准?

在这里插入图片描述

通过查询 OPA320 的数据手册可知,其共模电压输入范围在此例中为 -0.35V 到 5.1V,满足 0V 信号的输入条件;其输出摆幅最坏情况下为 -0.5V,满足 0V 信号的输出。

在这里插入图片描述
在这里插入图片描述

但是,ADS8860为单极性 ADC,这意味着其输出的数字信号最小为 0,没有负输出代码。然而,即使如此,单极性 ADC 仍然可以产生负的失调偏移,这种情况下,使用 0V 信号来校准失调偏移的方法将会失效。因此无法实现上述目的。

下图目的与上一例相同,唯一不同之处在于,ADC 的输入范围为 -10.24V 到 +10.24V,当将输入信号设为 0V,是否可以通过测量 ADC 的数字输出来实现此失调校准?
在这里插入图片描述

先看 OPA188 的输入输出是否满足要求,如下图所示。

在这里插入图片描述
在这里插入图片描述

OPA188 设置为负电源接地,尽管其可以接受 0V 输入,但其输出摆幅限制其最小也无法输出 0V 信号,因此这种情况下,校准无法实现。

下图将运放负电源接为 -15V,当将输入信号设为 0V,是否可以通过测量 ADC 的数字输出来实现此失调校准?

在这里插入图片描述

显然,此时运放可以接受 0V 输入,0V 输出。并且 ADC 为双极性 ADC,输出的数字信号可以为正或负,根据前文的校准原理,可以通过 0V 信号实现失调电压的偏移校准。

例 2:校准可行性

下面的电路通过一些开关来实现校准信号和输入信号的切换,校准信号通过 5V 的 LDO 输出经电阻分压得到。那么这样的校准方法有哪些潜在的问题?

在这里插入图片描述

1、用于产生校准信号的 LDO 器件可能并不具备精度、漂移性能、噪声性能,以及长期可靠性等校准信号所必须的特性。

2、用于分压的电阻必须具有非常高的精度和温度漂移。

3、来自开关的误差源也应考虑。开关器件通常会有电气泄露、非线性阻抗、寄生电容,以及其它非理想特性。

例 3:ADC 校准综合分析计算

下图所示的 ADC 系统要实现增益和失调校准,其中,输入信号 Vin 为 0V 到 1V,校准信号为 0.1V 到 0.9V。当系统未经过校准时,输入 0.1V 时的 ADC 输出为 -104720,输入 0.9V 时的 ADC 输出为 104995。要求:

1、计算用于增益和失调校准的系数;

2、当输出代码为 32000 时,计算输入电压 Vin;

3、若未经过校准,输出代码 32000 造成的误差有多大?

在这里插入图片描述

(1)首先计算校准系数。由题目条件:

V i n 1 = 0.1 V , C o d e 1 = − 104720 V_{in1}=0.1V,Code1=-104720 Vin1=0.1VCode1=104720
V i n 2 = 0.9 V , C o d e 2 = 104995 V_{in2}=0.9V,Code2=104995 Vin2=0.9VCode2=104995
m = C o d e 2 − C o d e 1 V i n 2 − V i n 1 = 2.621 × 1 0 5 1 V m=\frac{Code2-Code1}{V_{in2}-V_{in1}}=2.621×10^5\frac{1}{V} m=Vin2Vin1Code2Code1=2.621×105V1
b = C o d e 1 − m × V i n 1 = − 1.309 × 1 0 5 b=Code1-m×V_{in1}=-1.309×10^5 b=Code1m×Vin1=1.309×105

(2)使用校准系数,计算当 ADC 输出为 32000 时,Vin 的值:

C o d e = 32000 Code=32000 Code=32000
V i n = C o d e − b m = 0.621546 V V_{in}=\frac{Code-b}{m}=0.621546V Vin=mCodeb=0.621546V

(3)当 ADC 没有经过校准,使用 32000 计算未校准状态下输入电压 Vin_no_cal 的值:

由数据手册:

L S B = 2 × V r e f 2 18 LSB=2×\frac{V_{ref}}{2^{18}} LSB=2×218Vref

ADC 的差分输入电压为:

V A D C _ D I F = C o d e × L S B = 32000 × 2 × 4.096 V 2 18 = 1.0 V V_{ADC\_DIF}=Code×LSB=32000×\frac{2×4.096V}{2^{18}}=1.0V VADC_DIF=Code×LSB=32000×2182×4.096V=1.0V

(4)根据输入电压与 ADC 输入差分电压之间的增益关系,求解输入电压:

关系图如下:

在这里插入图片描述

V A D C _ D I F = G F D A × G O P A × V i n _ n o _ c a l − G F D A × V r e f 2 = 2 × 4.096 × V i n _ n o _ c a l − 2 × 4.096 2 V_{ADC\_DIF}=G_{FDA}×G_{OPA}×V_{in\_no\_cal}-G_{FDA}×\frac{V_{ref}}{2}=2×4.096×V_{in\_no\_cal}-2×\frac{4.096}{2} VADC_DIF=GFDA×GOPA×Vin_no_calGFDA×2Vref=2×4.096×Vin_no_cal2×24.096

V i n _ n o _ c a l = V A D C _ D I F 2 × 4.096 + 0.5 V = 0.622070 V V_{in\_no\_cal}=\frac{V_{ADC\_DIF}}{2×4.096}+0.5V=0.622070V Vin_no_cal=2×4.096VADC_DIF+0.5V=0.622070V

E r r o r = V i n _ n o _ c a l − V i n V i n = 0.622070 V − 0.621546 V 0.621546 V = 0.084 % Error=\frac{V_{in\_no\_cal}-V_{in}}{V_{in}}=\frac{0.622070V-0.621546V}{0.621546V}=0.084\% Error=VinVin_no_calVin=0.621546V0.622070V0.621546V=0.084%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2186666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程概念二

我们利用fork函数来辅助我们讲解进程 首先认识两个调用进程地址的函数:getpid(),和getppid(),他们分别可以调用自己的pid和父进程的pid fork()可以在代码层面来创建子进程,一般而言,父进程fork出来的子进程与父进程代码和数据相…

【Docker】配置文件

问题 学习Docker期间会涉及到docker的很多配置文件,可能会涉及到的会有: /usr/lib/systemd/system/docker.service 【docker用于被systemd管理的配置文件】 /etc/systemd/system/docker.service.d【覆盖配置文件的存放处】 /etc/systemd/system/mul…

[Cocoa]_[初级]_[绘制文本如何设置断行效果]

场景 在开发Cocoa程序时,表格NSTableView是经常使用的控件。其基于View Base的视图单元格模式就是使用NSCell或其子类来控制每个单元格的呈现。当一个单元格里的文字过多时,需要截断超出宽度的文字,怎么实现? 说明 Cocoa下的文本…

【java数据结构】顺序表

【java数据结构】顺序表 一、了解List接口二、顺序表2.1 线性表2.2 顺序表2.2.1 顺序表接口的实现给数组增加新元素判断数组数据是否为满在 pos 位置新增元素判定是否包含某个元素查找某个元素对应的位置获取 pos 位置的元素给 pos 位置的元素设为 value删除第一次出现的关键字…

Manim:使用Python绘制数学动画

Manim是一个由3Blue1Brown的Grant Sanderson开发的开源框架,用户可以通过编写Python代码来创建数学动画,适用于教学、科研和科普宣传等多个领域。 Manim的核心功能之一是动画效果的创建和控制。它提供了多种动画效果,如创建、变换、淡入淡出…

分布式数据库知识详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

QT学习笔记3.1(建立项目、执行_建立第一个工程)

QT学习笔记3.1(建立项目、执行_建立第一个工程) 建立第一个工程,使用widget模板 使用的版本是 Qt Creator 4.11.0 Based on Qt 5.14.0 (MSVC 2017, 32 bit) 1.选择Application-》QT Widget Application(最常使用) 2.项目保存位…

使用Pytorch构建自定义层并在模型中使用

使用Pytorch构建自定义层并在模型中使用 继承自nn.Module类,自定义名称为NoisyLinear的线性层,并在新模型定义过程中使用该自定义层。完整代码可以在jupyter nbviewer中在线访问。 import torch import torch.nn as nn from torch.utils.data import T…

LSM6DSV16X基于MLC智能笔动作识别(2)----MLC数据采集

LSM6DSV16X基于MLC智能笔动作识别.2--MLC数据采集 概述视频教学样品申请源码下载输出速率执行流程速率设置量程设置检测状态数据单位采集数据静止(Steady)闲置(Idle)书写(Writing)其他(other) 概述 MLC 是“机器学习核心”(Machine Learning Core)的缩写…

全球购的智能引擎:AI与RPA如何重塑跨境电商帝国?

在全球化的大潮中,跨境电商已成为连接世界的桥梁。随着人工智能(AI)和机器人流程自动化(RPA)技术的飞速发展,跨境电商领域的运作模式正在经历一场革命性的变革。 一、跨境电商的挑战 随着互联网技术的普及…

D3.js中国地图可视化

1、项目介绍 该项目来自Github,基于D3.js中国地图可视化。 D3.js is a JavaScript library for manipulating documents based on data. It uses HTML, SVG, and CSS to display data. The full name of D3 is "Data-Driven Documents," which means it a…

在VirtualBox中安装OpenEuler操作系统保姆级教程

前言 OpenEuler是一个由中国华为公司主导开发和维护的开源操作系统项目,旨在打造一个开放、可信且可扩展的企业级操作系统,适用于多种应用场景。 该项目致力于通过开放和协作的方式推动操作系统的创新与发展。OpenEuler采用开源软件模型,允…

多模态:Florence2论文详解

文章目录 前言一、介绍二、方法1.模型结构1)Vision encoder2)Multi-modality encoder decoder3)Optimization objective 2.数据工程1)Image Collection2)Data Annotation3)Data filtering and enhancement4…

spring学习日记-day8-声明式事务

一、学习目标 声明式事务是Spring框架提供的一种事务管理方式,其主要特点是通过声明(而非编程)的方式来处理事务。这种方式让事务管理不侵入业务逻辑代码,从而提高了代码的可维护性和可读性。 定义:声明式事务…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 用代数法对其进行运动学反解。具体步骤如下: 1、求θ1 PMUMA56

【数据结构笔记13】

408数据结构答题规范 原视频 视频参考,以下为视频的笔记 需要写的部分 如果题目要求了函数名、参数列表、返回值类型就按题目的来 函数的类型可以是返回值类型或者void类型,如果函数名不清楚里面的功能是什么,在函数title下面最好写一行注…

磁盘存储和文件系统管理【1.9】

磁盘存储和文件系统管理【1.9】 12、磁盘存储和文件系统12.1.管理存储12.1.1.新加10G硬盘并识别12.1.2.备份查看MBR分区表二进制信息12.1.3.删除破坏分区表12.1.4.恢复MBR分区表12.1.5.完整步骤12.1.6.fdisk分区12.1.7.gdisk分区12.2.文件系统12.2.1.查看支持的文件系统格式12.…

音视频入门基础:FLV专题(11)——FFmpeg源码中,解析SCRIPTDATASTRING类型的ScriptDataValue的实现

一、引言 从《音视频入门基础:FLV专题(9)——Script Tag简介》中可以知道,根据《video_file_format_spec_v10_1.pdf》第80到81页,SCRIPTDATAVALUE类型由一个8位(1字节)的Type和一个ScriptDataV…

Java类的生命周期-连接阶段

Java类的生命周期-连接阶段 上篇讲述了类的加载阶段,通过类加载器读取字节码文件后在方法区与堆区生成对应的存放类信息的对象,本篇将讲解他的下一阶段-连接阶段 上篇说到类加载的五大阶段: #mermaid-svg-6YmaEnIO4rCKbIZg {font-family:&quo…

Cpp::STL—vector类的模拟实现(11)

文章目录 前言一、各函数接口总览二、默认成员函数vector();vector(size_t n, const T& val T( ));template< class InputIterator> vector(InputIterator first, InputIterator last);vector(const vector<T>& v);vector<T>& operator(const v…