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

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

3天内不再提示

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

Q4MP_gh_c472c21 来源:嵌入式客栈 作者:逸珺 2020-11-03 09:40 次阅读

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

什么是过采样?

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

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

其中:

为输入待采样信号最高频率

为奈奎斯特频率。

如果实际采样频率高于奈奎斯特频率,即为过采样。那么低于奈奎斯特采样频率进行采样就称为欠采样,如下图:

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

过采样提高分辨率

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

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

其中:

为过采样频率

产品所需实际采样频率

W为额外所需增加的分辨率位数

假设系统使用12位ADC每100 ms输出一次采样值也即(10 Hz)。为了将测量的分辨率提高到16位,我们按上述公式计算过采样频率:

因此,如果我们以f对信号进行过采样,然后在所需的采样周期内收集足够的样本以对它们进行平均,现在可以将16位输出数据用于16位测量。

具体怎么做呢?

首先将256个连续采样累加

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

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

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

由上面公式可得出一个重要结论:每提高W位分辨率,需要提高采样率倍。

过采样提高ADC的信噪比

ADC测量的SNR理论极限基于量化噪声,这是基于在没有过采样和平滑滤波情况下模数转换过程中固有的量化误差所致。而量化误差取决于ADC分辨率的位数,其中N为ADC的位数,为参考电压。

SNR理论情况下极限值的计算方式是数据转换的有效位数,如下所示:

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

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

到底怎么实现呢?

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

voidinit_adc(void) { /*配置ADC的采样率为过采样率连续中断模式*/ } voidstart_adc(void) { /*控制ADC启动采样*/ } /*不同的开发平台中断函数写法略有差异,比如51需要指定向量*/ /*OVERSAMPLE_FACTOR=4^RSHIFT_BITS下面两个宏一起修改*/ #defineRSHIFT_BITS(4) #defineOVERSAMPLE_FACTOR(256) staticunsignedshortadc_result=0U; voidadc_isr(void) { staticunsignedshortadc_index=OVERSAMPLE_FACTOR; staticunsignedintaccumulator=0U; /*ADC_REGADC转换结果寄存器,不同平台名称不同*/ 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和测量分辨率。

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

-END-

来源 | 嵌入式客栈

作者 | 逸珺

原文标题:太秀了!单片机内置ADC实现高分辨率采样?

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    6034

    文章

    44547

    浏览量

    634369
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10850

    浏览量

    211514
  • adc
    adc
    +关注

    关注

    98

    文章

    6484

    浏览量

    544407

原文标题:太秀了!单片机内置ADC实现高分辨率采样?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    lvds接口如何实现高分辨率显示

    LVDS(Low-Voltage Differential Signaling,低电压差分信号)接口能够实现高分辨率显示,主要得益于其高效的差分信号传输方式和在数据传输方面的优势。以下是对LVDS
    的头像 发表于 11-21 16:23 264次阅读

    采样ADC12以获得更高分辨率

    电子发烧友网站提供《过采样ADC12以获得更高分辨率.pdf》资料免费下载
    发表于 10-22 10:16 0次下载
    过<b class='flag-5'>采样</b><b class='flag-5'>ADC</b>12以获得更<b class='flag-5'>高分辨率</b>

    使用DM642 DSP和THS8200驱动器的高分辨率视频

    电子发烧友网站提供《使用DM642 DSP和THS8200驱动器的高分辨率视频.pdf》资料免费下载
    发表于 10-17 11:43 0次下载
    使用DM642 DSP和THS8200驱动器的<b class='flag-5'>高分辨率</b>视频

    高分辨率风速计

    电子发烧友网站提供《高分辨率风速计.pdf》资料免费下载
    发表于 09-24 11:30 0次下载
    <b class='flag-5'>高分辨率</b>风速计

    利用可编程可变电阻滤波器提高分辨率的ADS7138

    电子发烧友网站提供《利用可编程可变电阻滤波器提高分辨率的ADS7138.pdf》资料免费下载
    发表于 09-23 11:38 0次下载
    <b class='flag-5'>利用</b>可编程可变电阻滤波器提<b class='flag-5'>高分辨率</b>的ADS7138

    利用高分辨率捕获(HRCAP)进行单线数据传输

    电子发烧友网站提供《利用高分辨率捕获(HRCAP)进行单线数据传输.pdf》资料免费下载
    发表于 09-14 09:56 0次下载
    <b class='flag-5'>利用</b><b class='flag-5'>高分辨率</b>捕获(HRCAP)进行单线数据传输

    高分辨率音频和传统音频区别

    高分辨率音频通过更高的采样率和比特深度,提供了更高的音质和更丰富的听觉体验,而传统音频则可能在音质和细节上有所妥协。
    的头像 发表于 09-04 16:20 559次阅读
    <b class='flag-5'>高分辨率</b>音频和传统音频区别

    鼎阳科技|高分辨率产品增长39.42%,引领高端市场新浪潮!

    20%以上,高端化进程再加速;高分辨率数字示波器产品境内收入同比增长39.42%,竞争优势明显。   一、高分辨率示波器增长39.42%,核心产品优势突出 当前,示波器高分辨率化已成趋势。报告期内,鼎阳科技共发布了4款新产品,其
    发表于 08-30 16:46 344次阅读
    鼎阳科技|<b class='flag-5'>高分辨率</b>产品增长39.42%,引领高端市场新浪潮!

    什么是高分辨率示波器?它有哪些优势?

    高分辨率示波器是一种在信息与系统科学相关工程与技术领域中广泛应用的科学仪器,其设计旨在提供更高的信号分辨率和更精细的信号分析能力。以下是对高分辨率示波器的详细解析,包括其定义、优势以及可能涉及的多个方面。
    的头像 发表于 08-08 11:49 936次阅读

    Moritex 5X 高分辨率远心镜头 助力晶圆检测

    5X高分辨率远心镜头工业镜头相当于机器视觉系统中的眼睛,它能将目标成像在图像传感器的光敏面上,对视觉图像成像发挥着重要作用。今天我们来看看Moritex的5X高分辨率远心镜头
    的头像 发表于 07-27 10:00 306次阅读
    Moritex 5X <b class='flag-5'>高分辨率</b>远心镜头 助力晶圆检测

    ADS1283高分辨率模数转换器数据表

    电子发烧友网站提供《ADS1283高分辨率模数转换器数据表.pdf》资料免费下载
    发表于 07-16 10:38 0次下载
    ADS1283<b class='flag-5'>高分辨率</b>模数转换器数据表

    ADS1282-SP抗辐射加固保障高分辨率Δ-ΣADC数据表

    电子发烧友网站提供《ADS1282-SP抗辐射加固保障高分辨率Δ-ΣADC数据表.pdf》资料免费下载
    发表于 07-16 09:20 0次下载
    ADS1282-SP抗辐射加固保障<b class='flag-5'>高分辨率</b>Δ-Σ<b class='flag-5'>ADC</b>数据表

    高管洞察:高分辨率音乐需要高分辨率扬声器

    所有关于高分辨率音乐传输和无损音频或空间音频格式的讨论都为时过早。很少有人能分辨出其中的区别——除非他们通过高分辨率、固态扬声器聆听。 作者: MIKE HOUSHOLDER,xMEMS 营销和业务
    发表于 03-21 14:57 872次阅读
    高管洞察:<b class='flag-5'>高分辨率</b>音乐需要<b class='flag-5'>高分辨率</b>扬声器

    高分辨率音频和普通音频之间的区别

    为了满足数字媒体对质量的要求,行业已经开始采用高分辨率音频,数字内容以更高的频率采样以保持保真度,并以更大的位深捕捉更多细节。
    发表于 03-21 12:35 940次阅读
    <b class='flag-5'>高分辨率</b>音频和普通音频之间的区别

    如何使用SPU实现MUSIC或ESPRIT算法以获得超高分辨率

    如何使用SPU实现MUSIC或ESPRIT算法以获得超高分辨率? 谢谢。
    发表于 01-23 07:59