0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【笔记】提高ADC精度的4种方法(附代码)

撞上电子 2023-06-09 09:38 次阅读

1. 参考电压不准确:

-使用外部参考电压:将外部参考电压连接到芯片的参考电压引脚,确保参考电压的稳定性和准确性。例如,连接一个精密参考电压芯片,如LM4040,来提供稳定的参考电压。

-校准参考电压:通过测量实际参考电压并校准内部参考电压的偏差来提高准确性。首先,使用一个已知准确的参考电压源进行测量,然后将测量结果与期望值进行比较,并校准相应的参数,如内部参考电压的缩放系数。

示例代码:

//使用外部参考电压HAL_ADCEx_InjectedReferenceVoltageConfig(&hadc1,ADC_EXTERNALTRIGCONV_T1_CC1,ADC_INJECTED_RANK_1,ADC_EXTERNALTRIGINJECCONVEDGE_RISING,VREF_EXT);// 校准参考电压float measuredVref = measureExternalReferenceVoltage(); // 测量实际参考电压float expectedVref = getExpectedReferenceVoltage(); // 获取期望参考电压float vrefCalibrationFactor = expectedVref / measuredVref; // 计算校准因子HAL_ADCEx_Calibration_SetValue(&hadc1,ADC_SINGLE_ENDED,ADC_CALIB_OFFSET,vrefCalibrationFactor);//应用校准因子

2. 输入信号干扰:

-硬件滤波:在输入信号线上添加低通滤波器电路,以滤除高频噪声和干扰。这可以通过在输入信号线和地之间添加电容器来实现。滤波器的截止频率应根据应用的要求进行选择。

-软件滤波:使用软件滤波算法对采样数据进行滤波处理。常用的软件滤波算法包括移动平均滤波、中值滤波等。根据应用的实际需求,选择适当的滤波算法来平滑采样数据。

示例代码:

//硬件滤波ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel = ADC_CHANNEL_1;sConfig.Rank = 1;sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;sConfig.Offset = 0;HAL_ADC_ConfigChannel(&hadc1, &sConfig);// 软件滤波(移动平均滤波)#define FILTER_LENGTH 5uint32_t adcSamples[FILTER_LENGTH];uint32_t filteredValue = 0;
void filterADCValue(uint32_t newValue) { // 移动平均滤波 for (int i = FILTER_LENGTH - 1; i > 0; i--) { adcSamples[i] = adcSamples[i - 1]; filteredValue += adcSamples[i]; } adcSamples[0] = newValue; filteredValue += adcSamples[0]; filteredValue /= FILTER_LENGTH;}

3. 参考电压和输入信号之间的共模干扰:

-差分输入采样:使用差分输入模式进行采样,以抵消共模干扰。这需要使用带有差分输入的ADC芯片,并正确配置和连接差分输入信号。

-屏蔽共模干扰:在输入信号线和地之间添加屏蔽层,以减少共模干扰的影响。

示例代码:

// 差分输入采样ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel = ADC_CHANNEL_DIFFERENTIAL_1_2;sConfig.Rank = 1;sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;sConfig.Offset = 0;HAL_ADC_ConfigChannel(&hadc1,&sConfig);
// 屏蔽共模干扰ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel = ADC_CHANNEL_1;sConfig.Rank = 1;sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;sConfig.Offset = 0;sConfig.OffsetNumber = ADC_OFFSET_NONE;sConfig.OffsetSign = ADC_OFFSET_SIGN_POSITIVE;sConfig.OffsetShift = ADC_OFFSET_SHIFT_NONE;HAL_ADC_ConfigChannel(&hadc1,&sConfig);

4. ADC参考电压的稳定性:

-稳压器和滤波电容:使用稳压器和合适的滤波电容,以提供稳定的参考电压。选择低噪声、高稳定性的稳压器,并根据参考电压的负载要求选择合适的滤波电容。

-温度补偿:对参考电压进行温度补偿,以校正温度变化对参考电压的影响。通过使用温度传感器监测芯片的温度,并根据温度补偿曲线进行校准。

示例代码:

// 稳压器和滤波电容//在电路中使用低噪声、高稳定性的稳压器,并根据参考电压的负载要求选择合适的滤波电容。
// 温度补偿float measuredVref = measureExternalReferenceVoltage(); // 测量实际参考电压float expectedVref = getExpectedReferenceVoltage(); // 获取期望参考电压float vrefCalibrationFactor = expectedVref / measuredVref; // 计算校准因子float temperature = measureTemperature(); // 测量芯片温度float temperatureCompensation = getTemperatureCompensation(temperature); //计算补偿值
float calibratedVref = measuredVref * vrefCalibrationFactor * temperatureCompensation; // 根据校准因子和温度补偿计算校准后的参考电压setReferenceVoltage(calibratedVref); // 设置校准后的参考电压

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    98

    文章

    6498

    浏览量

    544629
  • 电压
    +关注

    关注

    45

    文章

    5605

    浏览量

    115764
收藏 人收藏

    评论

    相关推荐

    如何提高ads1274采集精度

    ,只是精度较低为16位。 目前希望提高采集精度,想请教一下,下面方法是否能提高采集精度: 牺牲输
    发表于 12-23 07:29

    如何校准adc提高精度

    校准ADC(模数转换器)以提高精度是确保系统精确采集模拟信号的重要步骤。以下是一些常见的校准ADC提高精度方法: 一、硬件校准
    的头像 发表于 10-31 11:10 935次阅读

    最大限度地提高GSPS ADC中的SFDR性能:杂散源和Mitigat方法

    电子发烧友网站提供《最大限度地提高GSPS ADC中的SFDR性能:杂散源和Mitigat方法.pdf》资料免费下载
    发表于 10-10 09:16 0次下载
    最大限度地<b class='flag-5'>提高</b>GSPS <b class='flag-5'>ADC</b>中的SFDR性能:杂散源和Mitigat<b class='flag-5'>方法</b>

    过采样提高12位ADC精度

    过采样提高12位ADC精度 背景: 过去传统的按键都是机械按键,随着威廉希尔官方网站 的发展也出现了触摸按键,但是机械按键不能泡水,寿命也比较短。触摸按键也没法有很多水或泡沫等,金属面板还不能使用。 压感就应
    发表于 09-19 19:29

    过采样提高12位ADC精度在STM32主控上的实现(电路及代码)

    ,大概计算12位ADC的1ADC = 805uV。没法识别几十或几百uv的压感信号,所以得增加识别精度。 3、用过采样方式来提高:软件上,把12bitADC扩展为16bit数据,有效位
    发表于 09-13 15:58

    MCUXpresso IDE下在线联合调试双核MCU工程的三种方法

    大家好,我是痞子衡,是正经搞威廉希尔官方网站 的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线联合调试i.MXRT1170双核工程的三种方法
    的头像 发表于 08-08 15:18 560次阅读
    MCUXpresso IDE下在线联合调试双核MCU工程的三<b class='flag-5'>种方法</b>

    pwm脉宽调制的四种方法有哪些

    于电机控制、LED调光、音频处理等领域。以下是四常见的PWM脉宽调制方法: 固定频率PWM(Fixed-Frequency PWM) 固定频率PWM是一最基本的PWM调制方法。在这
    的头像 发表于 08-08 15:10 1324次阅读

    人脸检测的五种方法各有什么特征和优缺点

    人脸检测是计算机视觉领域的一个重要研究方向,主要用于识别和定位图像中的人脸。以下是五常见的人脸检测方法及其特征和优缺点的介绍: 基于肤色的方法 特征:基于肤色的方法主要利用人脸肤色与
    的头像 发表于 07-03 14:47 836次阅读

    芯海CS32F0XXADC外设模块应用笔记

    本应用笔记旨在展示使用CS32FOxx微控器,提高A/D转化精度的应用。帮助ADC模块用户了解 CS32微控器提供的一些高级应用并加快开发周期。所介绍的每种模式都提供一个应用示例,以方
    发表于 05-16 14:58

    芯海通用 MCU 应用笔记:在 MDK 开发环境下代码重定向到 RAM 执行的几种方法

    为 V5.37.0.0。本文档介绍方法适用于芯海科技 MCU。*附件:应用笔记:在MDK开发环境下代码重定向到RAM执行的几种方法.pdf
    发表于 05-16 11:58

    芯海应用笔记:CS32F0XX ADC外设模块指导

    本应用笔记旨在展示使用 CS32F0xx 微控器,提高 A/D 转化精度的应用。帮助 ADC 模块用户了解CS32 微控器提供的一些高级应用并加快开发周期。所介绍的每种模式都提供一个应
    发表于 05-16 10:49

    ADC SC2245(LTC2245)助力提高配网行波测距装置精度

    ADC SC2245(LTC2245)助力提高配网行波测距装置精度
    的头像 发表于 04-25 09:30 712次阅读
    <b class='flag-5'>ADC</b> SC2245(LTC2245)助力<b class='flag-5'>提高</b>配网行波测距装置<b class='flag-5'>精度</b>

    三菱M70 PLC增加注解的三种方法简析

    三菱M70 PLC增加注解的三种方法
    的头像 发表于 02-26 09:59 1089次阅读
    三菱M70 PLC增加注解的三<b class='flag-5'>种方法</b>简析

    传统激光功率衰减的三种方法

    传统激光功率衰减通常使用以下三种方法,分别为中性密度衰减片衰减法、偏振衰减法、镀膜光学镜片衰减法。
    的头像 发表于 01-20 10:42 1756次阅读
    传统激光功率衰减的三<b class='flag-5'>种方法</b>

    编写PLC程序的7种方法

    种方法是最原始最初级的写法,也是最简单的一写法,比如第一步置位M0,M0接通后控制某个结果,结果实现后复位M0,再置位M1,依次进行l流程控制。这种写法通用所有的PLC。
    发表于 01-02 11:08 1.2w次阅读
    编写PLC程序的7<b class='flag-5'>种方法</b>