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
    +关注

    关注

    100

    文章

    7401

    浏览量

    553805
  • 电压
    +关注

    关注

    45

    文章

    5757

    浏览量

    120972
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ADS1675 24 位 4MSPS 高精度模数转换器(ADC)产品手册总结

    该ADS1675是一高速、高精度的模数转换器(ADC)。采用先进的三角标准(delta-sigma,)架构,运行速度可达4MSPS,交流性能和直流
    的头像 发表于 11-24 13:49 309次阅读
    ADS1675 24 位 <b class='flag-5'>4</b>MSPS 高<b class='flag-5'>精度</b>模数转换器(<b class='flag-5'>ADC</b>)产品手册总结

    有多少种方法可以进行频响曲线测量?

    。下面列出APx500软件包含的至少10种方法都可以进行频响曲线的测量:FrequencyResponseContinuousSweepAcousticRespo
    的头像 发表于 11-14 11:29 301次阅读
    有多少<b class='flag-5'>种方法</b>可以进行频响曲线测量?

    有哪些方法可以提高电能质量在线监测装置的精度等级?

    落地的方法: 一、硬件升级:筑牢精度基础(核心前提) 硬件是精度的底线,需匹配目标精度等级的硬件指标: 核心采样部件升级 ADC 芯片:更换
    的头像 发表于 11-12 09:58 433次阅读

    干扰可以提高测量精度,是真的吗?

    ,干扰是测量的天敌,干扰会降低测量精度,严重情况会导致测量不能正常进行,就这个角度而言,干扰可以提高测量精度,是假的! 然而,是否总是如此呢?是否存在一情况,干扰不但不会降低测量
    的头像 发表于 08-04 09:28 536次阅读
    干扰可以<b class='flag-5'>提高</b>测量<b class='flag-5'>精度</b>,是真的吗?

    提高SEA模型PBNR计算精度方法及策略

    方案即声学包对整车噪声传递的影响,同时克服了NR方法中由于声源特性、声源处麦克风安装位置等因素给测试带来的不利影响,PBNR已广泛用应用于整车SEA模型对标及声学包目标的设定及分解工作中,故而在数字开发阶段,提高整车SEA 模型的PBNR计算
    的头像 发表于 06-30 09:30 904次阅读
    <b class='flag-5'>提高</b>SEA模型PBNR计算<b class='flag-5'>精度</b>的<b class='flag-5'>方法</b>及策略

    EEPROM芯片内部的1路14bit ADC, ADC精度受使用通道数和采样率是怎么样的?

    影响:温度变化会影响ADC的性能,包括偏置误差、线性误差等。因此,温度补偿或使用高精度的温度传感器校准是提高精度的有效方法
    发表于 06-04 09:04

    精选好文!噪声系数测量的三种方法

    器件噪声系数的三种方法。每种方法都有其优缺点,适用于特定的应用。下表是三种方法优缺点的总结。理论上,同一个射频器件的测量结果应该一样,但是由于射频设备的限制(可用性、精度、频率范围、噪
    发表于 05-07 10:18

    6种方法去除焊接应力

        焊接应力是个啥?6种方法轻松去除!     由于焊接时局部不均匀热输入,导致构件内部温度场、应力场以及显微组织状态发生快速变化,容易产生不均匀弹塑性形变,因此采用焊接工艺加工的工件较其他加工
    的头像 发表于 02-18 09:29 1944次阅读
    6<b class='flag-5'>种方法</b>去除焊接应力

    在包含Σ-Δ型ADC的电路中,在设计PCB时有哪些技巧可以降低电路噪声,提高有效精度

    各位大侠,小弟求教:在包含Σ-Δ型ADC的电路中,在设计PCB时有哪些技巧可以降低电路噪声,提高有效精度
    发表于 02-10 07:56

    AN095 提高GD32温度传感器使用精度方法

    电子发烧友网站提供《AN095 提高GD32温度传感器使用精度方法.pdf》资料免费下载
    发表于 01-17 16:14 1次下载
    AN095 <b class='flag-5'>提高</b>GD32温度传感器使用<b class='flag-5'>精度</b>的<b class='flag-5'>方法</b>

    旋转测径仪的测量精度如何提高?

    镜头免受损伤。 六、操作规范 1.培训操作人员:对操作人员进行培训,确保他们熟悉旋转测径仪的操作流程和注意事项。正确的操作方法可以减小测量误差,提高测量精度。 2.保持测量物体稳定:在测量过程中,保持被
    发表于 01-10 14:28

    请问ADS1256如何提高1KHz输出速率下的精度

    客户要求ADC输出速度为1KHz,同时保证高精度,实际测试了下50Hz的时候是能满足要求的,但是1KHz的时候就完全不行了,跳动很厉害!所以我想能不能在输入ADC前加一个信号调理电路,以提高
    发表于 01-10 07:23

    ADC精度有没有具体计算的方法 ?

    我想问一下ADC精度有没有具体计算的方法 ?
    发表于 01-10 06:00

    如何提高ads1274采集精度

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

    如何提高信噪比的有效方法

    信噪比(SNR)是指信号与噪声的比例,是评价一个系统或设备性能的重要指标。提高信噪比可以通过多种方法实现,以下是一些有效的方法: 一、增加信号强度 提高发射功率 :在信号发射端,通过增
    的头像 发表于 12-10 14:30 7897次阅读