MCU内部ADC模块误差如何校准

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。

一、ADC误差校准引言

MCU 片内 ADC 模块的误差总包括了 5 个静态参数 (静态失调,增益误差,微分非线性误差 (DNL),积分非线性误差(INL),绝对精度误差) 和 5 个动态参数 (信噪比,信噪失真比,无杂 散动态范围,有效位,总谐波失真) 。其中, 静态失调和增益误差是可以利用微控制器 MCU 进行修正, 可以通过软件算法, 也可以通过硬件固化的方式进行补偿。本文提供一种两点法 ADC 模块误差校正并结合硬件计算的方式来完成 ADC 的误差补偿。 ADC 静态失调被定义为第一次理想编码跳变与第一次实际编码跳变之间的偏差。第一次理想编码跳变发生在 0.5 LSB 处。如果输入电压小于 0.5 LSB 时输出代码大于零,则 ADC 产生正失调误差。如果输入电压大于 0.5 LSB 时发生第一次输出编码跳变,则 ADC 产生负失调误差,参考如下

图1 ADC静态失调图

ADC增益误差被定义为补偿失调误差后理想 ADC 传输的最后一步中点与实际 ADC 的最后一步中点的偏差,参考如下图 2所示。

图2 ADC增益误差图

为理解ADC静态失调和ADC增益误差(文中将以Offset error和Gain error指代),通过下图3来进行说明。

图3 ADC模块Offset error(左图)和Gain error(右图)

如图3(左)所示,在理想的ADC转换中,数字输出为000时理想的模拟电压输入范围应为0~0.5LSB,而实际模拟输入在0~2LSB时数字输出均为000,那么此时的Offset error即为1.5LSB。如图3(右)可知,当输入模拟信号为8LSB时实际数字输出比理想输出小1LSB,即Gain error为1LSB并且是负向error。MCU的Datasheet中可以查找到如下图4 ADC误差电气参数特性,可以看到在使用内部电压参考时Gain error为±45LSB,这在精密应用场景可能会带来不小的影响。同时除了被重点关注的Gain error和offset error,ADC可能还会存在INL error(积分非线性误差)、DNL error(微分非线性误差)共同决定了实际采样转换的非线性度。

图4 ADC误差电气参数(摘自F2800137数据手册)

二、ADC模块误差校准方案

1. 传统单点法校准失调和增益误差的方案

单点ADC校准方案通常是外部提供一个固定的电压参考点(在全域输入电压范围内选取),使用一个采样通道定时对该参考点进行采样,计算出该点误差后直接同步校准到整个电压输入域。

该方案的劣势在于单点的误差无法完全反应全域的误差,单纯使用单点的误差状态推广到全域进行校准,会存在无法达到预期校准精度的可能,如下图5所示。

图 5. 单点ADC误差校准

2. 使用两点法校准失调和增益误差的方案

实际上ADC在全域输入模拟电压范围内每一个点的Offset error和Gain error是不尽相同的,并且是非线性的,但出于性价比考虑这边提出一种实现成本最优的ADC两点动态校准法,如下图6所示:

图6. 双点ADC误差校准

如上图 6 所示,两点校准法需要在全域模拟输入内选取两个点 AinA(Vref1)和 AinB(Vref2)进行曲线 拟合、校准。

具体实施过程:

1. 本案例在当 ADC 输入模拟电压大于 0.4432V 左右时执行误差校准程序(Note:在低电压 0~0.4432V 范围 ADC 转换误差较小);

2. 计算 Gain error 比(实质就是斜率之比)

3. 计算各点的 Offset error:

a) 计算 A 点的 Offset error: CalOffsetA = AoutA_idea − (AoutA_actual ∗ CalGain)

b) 计算 B 点的 Offset error: CalOffsetB = AoutB_idea − (AoutB_actual ∗ CalGain)

c) 计算两点的平均 Offset error: CalOffsetAve = (CalOffsetL + CalOffsetH)/ 2

4. 设定一个非线性的误差补偿比:

a) 计算当前点之于非线性起始点的偏移量:CalNonP = ADCOUT_actual / AoutA_idea (其中ADCOUT_actual 为当前采样输出的 AD 值,AoutA_idea为非线性补偿段的起始点,此处以 A 点代指,此值不固定、应以实际调试为准);

b) 计算补偿值:CalOffsetNonL=(CalNonP * CalOffsetAve)/x (其中 x 为常量, 手动调节的补偿放大比例);

由于 ADC 误差实际表现的非线性,为得到更为精确的补偿,本案例将校准分为两段式补偿:低区 误差补偿(AinS ~ AinA 段,如上图 6 所示)、高区误差补偿(AinA ~ AinB 段)。 将计算所得参数带入输出误差校准公式:

低区误差补偿公式:CaliAout = ADCOUT_actual ∗ CalGain + CaiOffsetA

高区误差补偿公式:CaliAout = ADCOUT_actual ∗ CalGain + CaiOffsetAve + CalOffsetNonL 注:实际应用中为提高动态特性,需在特定时间内调用一次误差补偿程序以实时更新补偿量。

图7. 两点校准实施实例

三、校准中常见的问题

如图 8 所示,C2000 产品 ADC 模块有不同静态误差特性,利用上述误差补偿的算法来实现 ADC 误差校准。针对单点方案, 无论是参考电压源或高精度电阻, 对参考器件特性要求很高。 针对两点方案, ADC 校准效果取决于参考点选择, 以及校准算法,要求实时性。然而, F28P65x 新一代 Type-4 ADC 模块硬件计算模块可以保证校准实时性, 同时减小 CPU 的带宽。

图8. 不同 C2000 产品系列 ADC 误差特性(左图-校准前;右图-校准后)

四、总结

本案例通过实验验证 ADC 两点校准的有效性,同时在 C2000 系列芯片中导入应用(包含但不限 于 F280013x/F28002x/F28003x/F28004x/F28P6x/F28P5x)。若进一步优化算法, ADC 高精度可 进一步提升,实际应用中可根据使用场景进行适配。但需注意的是确保两个输入参考点的稳定、 准确。此外,最新一代 C2000 F28P65 ADC 模块的全新特性(求和、平均、求最大/小值)在 ADC 误差校准过程中可以提供更高效的处理过程,使得 ADC 动态校准具备了实际可行的可能性。

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

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

相关文章

“新月智能武器系统”CIWS,开启智能武器的新纪元

新月人物传记:人物传记之新月篇-CSDN博客 相关文章链接:星际战争模拟系统:新月的编程之道-CSDN博客 新月智能护甲系统CMIA--未来战场的守护者-CSDN博客 “新月之智”智能战术头盔系统(CITHS)-CSDN博客 目录 智能武…

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明:代码部分使用了AI工具 实验六 综合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 实验项目 要求利用硬件描述语言Verilog(或VHDL)、图形描述方式、IP核,结合数字系统设计方法,在Quartus开发环境下&#xff…

SCRM系统如何提升客户管理及业务协同的效率与价值

内容概要 在当今商业环境中,SCRM系统(社交客户关系管理系统)正逐渐受到越来越多企业的关注和重视。随着科技的发展,传统的客户管理方式已经无法满足快速变化的市场需求,SCRM系统通过整合客户数据和社交网络信息&#…

[免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序智能商城系统(uniappSpringboot后端vue管理端),分享下哈。 项目视频演示 【免费】微信小程序智能商城系统(uniappSpringboot后端vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…

PID算法的数学实现和参数确定方法

目录 概述 1 算法描述 1.1 PID算法模型 1.2 PID离散化的图形描述 1.3 PID算法的特点 2 离散化的PID算法 2.1 位置式PID算法 2.2 增量式PID算法 2.3 位置式PID与增量式PID比较 3 控制器参数整定 3.1 PID参数确定方法 3.1.1 凑试法 3.1.2 临界比例法 3.1.3 经验法…

【论文阅读】RAG-Reward: Optimizing RAG with Reward Modeling and RLHF

研究背景 研究问题:这篇文章要解决的问题是如何优化检索增强生成(RAG)系统,特别是通过奖励建模和人类反馈强化学习(RLHF)来提高大型语言模型(LLMs)在RAG任务中的效果。研究难点&…

【数据结构】(3)包装类和泛型

一、包装类 1、什么是包装类 将基础类型包装成的类就是包装类。由于基础类型不是继承 Object 类的类,所以在泛型不能直接支持基础类型,为了解决这个问题,就需要把基础类型转换为对应的包装类。 基础类型对应的包装类 基础类型包装类byteByte…

C++11线程

C11提供了线程库&#xff0c;下面我们来看一下如何使用。 线程的创建 头文件 要创建一个线程需要包一个线程头文件:#include <thread> 我们先来看看thread支持的构造方式。 支持默认构造&#xff0c;直接使用thread创建一个空的线程对象。 也支持带参的构造&#x…

Golang 并发机制-3:通道(channels)机制详解

并发编程是一种创建性能优化且响应迅速的软件的强大方法。Golang&#xff08;也称为 Go&#xff09;通过通道&#xff08;channels&#xff09;这一特性&#xff0c;能够可靠且优雅地实现并发通信。本文将揭示通道的概念&#xff0c;解释其在并发编程中的作用&#xff0c;并提供…

笔记:使用ST-LINK烧录STM32程序怎么样最方便?

一般板子在插件上&#xff0c; 8脚 3.3V;9脚 CLK;10脚 DIO;4脚GND ST_Link 19脚 3.3V;9脚 CLK;7脚 DIO;20脚 GND 烧录软件&#xff1a;ST-LINK Utility&#xff0c;Keil_5; ST_Link 接口针脚定义&#xff1a; 按定义连接ST_Link与电路板&#xff1b; 打开STM32 ST-LINK Uti…

网络测试工具

工具介绍&#xff1a; 这是一个功能完整的网络测速工具&#xff0c;可以测试网络的下载速度、上传速度和延迟。 功能特点&#xff1a; 1. 速度测试 - 下载速度测试 - 上传速度测试 - Ping延迟测试 - 自动选择最佳服务器 2. 实时显示 - 进度条显示测试进度 - 实时显示测试状…

java每日精进1.31(SpringSecurity)

在所有的开发的系统中&#xff0c;都必须做认证(authentication)和授权(authorization)&#xff0c;以保证系统的安全性。 一、基础使用 1.依赖 <dependencies><!-- 实现对 Spring MVC 的自动化配置 --><dependency><groupId>org.springframework.bo…

17.2 图形绘制8

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 17.2.10 重绘 先看以下例子&#xff1a; 【例 17.28】【项目&#xff1a;code17-028】绘制填充矩形。 private void button1_Clic…

自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import precision_score, recall_score, f1_score# 数据准备 class1_points np.array([[1.9, 1.2],[1.5, 2.1],[1.9, 0.5],[1.5, 0.9],[0.9, 1.2],[1.1, 1.7],[1.4,…

neo4j入门

文章目录 neo4j版本说明部署安装Mac部署docker部署 neo4j web工具使用数据结构图数据库VS关系数据库 neo4j neo4j官网Neo4j是用ava实现的开源NoSQL图数据库。Neo4作为图数据库中的代表产品&#xff0c;已经在众多的行业项目中进行了应用&#xff0c;如&#xff1a;网络管理&am…

Java基础——分层解耦——IOC和DI入门

目录 三层架构 Controller Service Dao ​编辑 调用过程 面向接口编程 分层解耦 耦合 内聚 软件设计原则 控制反转 依赖注入 Bean对象 如何将类产生的对象交给IOC容器管理&#xff1f; 容器怎样才能提供依赖的bean对象呢&#xff1f; 三层架构 Controller 控制…

智慧园区系统集成解决方案引领未来城市管理的智能化转型

内容概要 在现代城市管理的背景下&#xff0c;“智慧园区系统集成解决方案”正扮演着越来越重要的角色。这种解决方案不仅仅是技术上的创新&#xff0c;更是一种全新的管理理念&#xff0c;它旨在通过高效的数据整合与分析&#xff0c;优化资源配置&#xff0c;提升运营效率。…

99.24 金融难点通俗解释:MLF(中期借贷便利)vs LPR(贷款市场报价利率)

目录 0. 承前1. 什么是MLF&#xff1f;1.1 专业解释1.2 通俗解释1.3 MLF的三个关键点&#xff1a; 2. 什么是LPR&#xff1f;2.1 专业解释2.2 通俗解释2.3 LPR的三个关键点&#xff1a; 3. MLF和LPR的关系4. 传导机制4.1 第一步&#xff1a;央行调整MLF4.2 第二步&#xff1a;银…

【VM】VirtualBox安装CentOS8虚拟机

阅读本文前&#xff0c;请先根据 VirtualBox软件安装教程 安装VirtualBox虚拟机软件。 1. 下载centos8系统iso镜像 可以去两个地方下载&#xff0c;推荐跟随本文的操作用阿里云的镜像 centos官网&#xff1a;https://www.centos.org/download/阿里云镜像&#xff1a;http://…

家居EDI:Hom Furniture EDI需求分析

HOM Furniture 是一家成立于1977年的美国家具零售商&#xff0c;总部位于明尼苏达州。公司致力于提供高品质、时尚的家具和家居用品&#xff0c;满足各种家庭和办公需求。HOM Furniture 以广泛的产品线和优质的客户服务在市场上赢得了良好的口碑。公司经营的产品包括卧室、客厅…