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

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

3天内不再提示

单片机内置ADC实现高分辨率采样?

工程师 来源:嵌入式客栈 作者:逸珺 2020-10-14 14:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

[导读] 相信ADC的应用或多或少都会用到,在很多场合都有分辨率要求,要实现较高分辨率时,第一时间会想到采用一个较高位数的外置ADC去实现。 可是高分辨率外置ADC往往价格都不便宜,这就带来一对矛盾: 高指标与低成本。 其实利用单片机片上的ADC利用过采样技术就能很好的解决这样一对矛盾体,本文来聊聊这个话题。

什么是过采样?

信号处理中,过采样是指以明显高于奈奎斯特速率的采样频率对信号进行采样。从理论上讲,如果以奈奎斯特速率或更高的速率进行采样,则可以完美地重建带宽受限的信号。奈奎斯特频率定义为信号带宽的两倍。过采样能够提高分辨率和信噪比SNR,并且通过放宽抗混叠滤波器的性能要求,有助于避免混叠和相位失真。

在很多项目应用中,需要测量信号的动态范围较大,且需要参数的微小变化。例如,ADC需要测量很大的温度范围(比如工业中甚至要求从-200℃~500℃),但仍要求系统对小于1度的变化做出响应。常见的单片机片上ADC位数为12位,如要实现高于12位分辨率要怎么做呢?我们知道奈奎斯特-香农采样定理可知:

或许你会问,常规的应用都是过采样,怎么也没见分辨率提高了呀?如果仅仅过采样,要实现更高分辨率显然是不够的,那么要怎么利用过采样实现更高的分辨率呢?要知道所采用的ADC硬件核分辨率是固定的,难道还会变不成?

过采样提高分辨率

如果对一模拟信号,采用过采样,然后再进行一定的软件后处理,理论上是可以得到更高分辨率的:

为增加有效位数(ENOB :effective number of bits),对信号进行过采样,所需的过采样率可以由下面公式确定(省略理论推导,过于枯燥):

具体怎么做呢?

首先将256个连续采样累加

然后将总数除以16(或将总数右移4位)。该过程通常称为抽取,也即将速率采样。

在类似进行下一次16位样本处理

注意:用于累积过采样数据并执行除法抽取数据类型必须具有足够的字节宽度,以防止溢出和截断错误。比如这里累积和可以采样32位无符号整型。

这个公式没必要去记,用到的时候参考计算一下即可。从公式中可看出,要提升一个模数转换器的理论SNR的一种可行方案可以通过提升采样位数,但是需要注意的是这里的信噪比是度量模数转换器本身的,就一个真实系统的信噪比还与整个信号链相关!

从上式中不难算出,12位ADC的理论SNR极限值为74dB,而通过过采样提升4位分辨率后,其SNR理论极限提高至96 dB!

到底怎么实现呢?

这里以伪代码的方式给出编程思路:

void init_adc(void)

{

/*配置ADC的采样率为过采样率连续中断模式*/

}

void start_adc(void)

{

/*控制ADC启动采样*/

}

/*不同的开发平台中断函数写法略有差异,比如51需要指定向量 */

/*OVERSAMPLE_FACTOR=4^RSHIFT_BITS 下面两个宏一起修改 */

#define RSHIFT_BITS (4)

#define OVERSAMPLE_FACTOR (256)

static unsigned short adc_result=0U;

void adc_isr(void)

{

static unsigned short adc_index = OVERSAMPLE_FACTOR;

static unsigned int accumulator = 0U;

/*ADC_REG ADC转换结果寄存器,不同平台名称不同*/

accumulator += ADC_REG;

adc_index--;

if( adc_index==0 )

{

/* 加和按因子抽取 */

adc_result = accumulator》》RSHIFT_BITS;

accumulator = 0;

adc_index = OVERSAMPLE_FACTOR;

}

}

该方案有一个缺陷,就是每次ADC中断都需要CPU参与,在过采样率很高的情况下,上述方案消耗很多CPU资源,那么如果单片机内存资源足够的情况下可以考虑采用DMA模式,采集很多数据并将数据暂存下来,然后再做累加平均抽取。这是空间换时间的策略的体现。这个编代码也很容易,只需要申请一片内存区,内存区的大小可以定为256的倍数,这是因为在提升4位分辨率情况下,一个16位的输出样本需要256个12位样本。

总结一下

在成本受限的情况下,可以通过单片机片内ADC过采样以及累积抽取的技术来提升采样分辨率,这种技术的特点:

可以使用过采样和平均来提高测量分辨率,而无需增加昂贵的片外ADC。

过采样和加和抽取将以提高CPU利用率和降低吞吐量为代价来提高SNR和测量分辨率。

过采样和加和抽取可以改善白噪声的信噪比。

责任编辑:haq

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

    关注

    6074

    文章

    45334

    浏览量

    663301
  • adc
    adc
    +关注

    关注

    100

    文章

    7380

    浏览量

    553674
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分辨率对于模拟到数字转换器有什么重要性

    )、航空航天(导航、遥测)等。5. 与其他参数的协同作用采样率高分辨率ADC通常需要更长的转换时间,可能限制采样率。因此,在高速应用中需权衡分辨率
    发表于 09-18 09:31

    极细同轴线束是如何提升高分辨率成像的稳定性与清晰度的?

    极细同轴线束凭借高速传输、抗干扰、柔性和小型化等优势,已经成为高分辨率成像系统不可或缺的基础。它不仅支撑了医疗诊断的精确性,也推动了工业与消费电子成像设备的不断进步。可以说,高分辨率影像背后,正有极细同轴线束在默默发挥着关键作用。
    的头像 发表于 09-01 14:20 516次阅读
    极细同轴线束是如何提升<b class='flag-5'>高分辨率</b>成像的稳定性与清晰度的?

    聚徽厂家工业液晶屏的高分辨率成像技术揭秘

    在工业生产、智能控制、精密检测等领域,对信息的精准获取与清晰展示至关重要。聚徽厂家的工业液晶屏凭借卓越的高分辨率成像技术,在众多品牌中脱颖而出,为各行业提供了清晰、细腻的视觉呈现。接下来,将深入探究聚徽工业液晶屏高分辨率成像技术背后的奥秘。
    的头像 发表于 07-11 18:08 607次阅读

    分辨率 vs 噪声 —— ADC的挑战

    设计者常用高分辨率 ADC 以降低最低可量测单位(LSB),提高检测精度。 比如一个 16 位 ADC 在 5V 范围内, LSB ≈ 76 μV ;理想情况下可以检测到微弱电信号。 问题是: 若
    的头像 发表于 06-23 07:38 1467次阅读
    <b class='flag-5'>分辨率</b> vs 噪声 —— <b class='flag-5'>ADC</b>的挑战

    LT8722如何实现高分辨率的脉冲?

    resolution should be 333/2^(24)=0.00002 ns. 如何实现如此高分辨率的脉冲? PWM 是否由模拟比较器产生?芯片中是否有真正的 DAC 来产生比较器电压? What
    发表于 04-28 06:08

    普源精电RIGOL推出MHO2000系列高分辨率示波器

    MHO2000系列的技术创新、市场定位、行业影响,并探讨其对电子测量仪器行业未来发展的深远意义。 一、技术革新:突破性参数与核心架构 1. 高分辨率技术的突破 MHO2000系列采用普源精电自主研发的高分辨率垂直系统(HRVS),通过优化
    的头像 发表于 03-31 13:24 864次阅读
    普源精电RIGOL推出MHO2000系列<b class='flag-5'>高分辨率</b>示波器

    普源精电RIGOL推出MHO2000系列高分辨率数字示波器 内置函数发生器

    新品发布 普源精电MHO2000系列高分辨率数字示波器 是一款 性能可靠的经济型高分辨率混合信号数字示波器 ,最高可达350MHz模拟带宽,拥有12bit ADC,并集协议分析仪,逻辑分析仪,信号
    的头像 发表于 03-31 10:51 1250次阅读
    普源精电RIGOL推出MHO2000系列<b class='flag-5'>高分辨率</b>数字示波器 <b class='flag-5'>内置</b>函数发生器

    国产高分辨率AFE替换ADS1283/ADS1284应用于高精度仪器

    国产高分辨率AFE替换ADS1283/ADS1284应用于高精度仪器
    的头像 发表于 03-04 10:00 872次阅读
    国产<b class='flag-5'>高分辨率</b>AFE替换ADS1283/ADS1284应用于高精度仪器

    高分辨率示波器的功能与作用:以麦科信MHO6为例

    一、高分辨率示波器的定义与重要性 高分辨率示波器是一种能够以高精度捕捉和分析信号的电子测量仪器,它通过增加垂直分辨率(通常为12bit或更高)和采样率,能够更清晰地显示信号的细节,从而
    发表于 02-28 17:39

    高速、高分辨率、大面积成像应用的理想选择——Falcon4-CLHS工业相机

    在机器视觉高性能成像应用领域,TeledyneDalsa的Falcon4-CLHS工业相机系列无疑是理想之选。它运用了TeledyneImaging的先进CMOS架构,为大面积、高分辨率、高速
    的头像 发表于 02-21 17:05 1242次阅读
    高速、<b class='flag-5'>高分辨率</b>、大面积成像应用的理想选择——Falcon4-CLHS工业相机

    如何通过过采样提高ADC分辨率

    通过过采样提高ADC分辨率
    发表于 02-10 08:05

    GD32G5x3系列高分辨率定时器使用指南

    电子发烧友网站提供《GD32G5x3系列高分辨率定时器使用指南.pdf》资料免费下载
    发表于 01-22 17:32 1次下载
    GD32G5x3系列<b class='flag-5'>高分辨率</b>定时器使用指南

    大视野与高分辨率难兼得,FA 镜头有何破局之法?

    在电子制造、工业检测等领域,机器视觉系统里的FA镜头发挥着关键作用。大视野可提高检测效率,高分辨率能保障检测精度,然而传统光学设计和制造工艺却让这两者难以同时实现。依据传统光学原理,镜头视野与分辨率
    的头像 发表于 01-21 16:49 1131次阅读
    大视野与<b class='flag-5'>高分辨率</b>难兼得,FA 镜头有何破局之法?

    请问SAR ADC有效分辨率采样率有关吗?

    是不是所有的ADC都是采样率越高、分辨率越差(跳动位数越多)? 我的实验: ADS8556是16位SAR ADC,最高采样率500多KhZ
    发表于 01-15 07:57

    24位或者说高分辨率的AD到底有什么用呢?

    的AD,如24位的AD,其分辨率达到很低的uV级别,我们如何考究其精度?而且AD的精度受到诸多因素的影响,其中参考源的稳定度和供电电源的稳定度对精度影响很大,参考源最低0.05%的精度,那么24位的分辨率所可以达到的精度却是要大打折扣的,请问在这样的情况下,24位或者说
    发表于 01-07 06:49