ADC采样效应及相关影响解剖

在前述文章,BUCK电路模拟补偿器的数字化过程 ,我们讨论了模拟补偿器的数字化,事实上,数字化过程的第一个重要的环节就是ADC对反馈量的采样,本文就重点探讨一下由于ADC采样频率带来的一些问题,进而讨论一下相应的解决方案。

一.ADC采样频率对电源环路带宽的影响

e497d2ac397d64796f506f0f39e53d74.png

图1 ADC采样的基本结构

在ADC模块中,一般会经过合适的时钟选择及分频,产生一个合适的时钟作为ADC采样及转换的时钟频率,并且会有一个电源作为ADC转换的参考电源,对模拟信号进行量化,比如AVDD 3.3V。ADC模块包含专用ADC内核和共享ADC内核,专用ADC内核固定接某一个ADC的采样通道,对采样时间要求不高,而共享ADC内核会接不同的ADC采样通道,这必然会涉及到ADC通道的切换。在图1中,我们可知,模拟信号从ADC采样通道进去后,会进行采样,这会产生一定的延时,而采样后的信号会经过ADC转换,这也会消耗一定的时间,最终它的结果会送到ADCBUF寄存器去被软件处理,或者被数字滤波器或者数字比较器所用。关于ADC的具体性能,我们在后面的文章中会详细讨论,此处不做过多探讨。

1e7bdd6de70678e467ed37f94ad96cfe.png

图2 ADC的采样含义

一般来说,ADC的采样转换,需要一定的触发信号,当发生触发时,ADC或者开始直接转换,或者开始采样并采样结束后转换,这和ADC通道接的是专用内核还是共享内核有关。这时候表示模拟信号流逝的时间轴就不是时间的含义了,而是表示对信号的一次一次的采样,每次采样之间的时间就是ADC的采样间隔Ts,经过ADC转换后,模拟信号就被转换为了离散数字信号,这些数字基于ADC的参考电压和ADC的位数精度,来表示被采样的模拟信号的大小。

881ca50e1b9e326560ab3dee46fe5a54.png

图3 ADC的采样间隔和ADC采样转换延时

当每一次进行触发ADC后,需要一个时间来完成转换及中断申请,而后在ADC中断中从ADCBUF中得到ADC的结果,这部分时间延时,在芯片硬件上会有一些措施会让这部分延时尽可能地减小,以便给环路控制算法留出足够的时间。这里需要注意的是,在每一次采样后,一直到下一次采样之前都会保持上一次的采样结果,这就是零阶保持器ZOH.

eb75ac73fd61758da931707b3733dfb0.png

图4 ZOH的概念

百度百科对ZOH的解释,如图4所示,这是一种最简单的采样保持器,每一个采样区间之间的信号值为常值,其一阶导数为0,这就是零阶保持器的来由,它可以将数字采样信号还原回连续信号。

6e9f09ace43045dbc538bb99254731d1.png

图5 采样频率造成的相位损失

了解了ADC采样造成的延时,以及ADC采样的零阶保持器特性,我们可以看一下ADC采样在环路控制中造成的相位损失,如图5所示,当在占空比50%处进行ADC触发采样时,在绿色波形上升沿处进入控制环路计算,在下一个周期初始进行占空比的更新,则此时造成的相位损失如下式,

4928cd51cd6fb49ac58c309575901c50.png

其中fx为环路控制带宽,而fsample为采样间隔频率,所以,当采样频率相对于带宽非常大时,这个相位损失会比较小,但是现实中,采样频率只能最大设置为电源开关频率(对定频变换器而言),以确保每一个开关周期都能对占空比进行一次更新,所以为了尽可能减小ADC造成的相位损失,我们需要将带宽设为一个合适的值,如通常所建议的1/20开关频率,ADC造成的相位损失为18C.

0b0cf061b97bb41ef30df8a0cd8d4b60.png

图6 优化ADC触发时刻以优化相位损失

当我们将ADC触发时刻改为1/2的duty_off时间时,我们让占空比在下一个周期一得到计算结果后则立即更新占空比,则可以将相位损失减小为原来的一半,如下式

e4c6ce1f52ad60f8a74ed5f93cf68848.png

当建议设计fx为fsample的1/20时,则由于ADC采样导致的相位延时为9C.

二.ADC采样的混叠效应及解决方式

大家试想一下,为什么我们建议采样频率和带宽保持1/20的倍数关系呢?实际上,是由于在采样学上,有一个奈奎斯特采样定律,奈奎斯特频率代表了对应采样频率的采样能力。

采样必须以一定的速率采样,采样频表示采样的速率,当采样频率越高时,则采样到的信号越精确,当采样频率是关心的信号频率的两倍时,则信号还原后的频率不会失真,但是信号幅值会存在失真,所以在采样学上,建议采样频率为信号频率的10倍以上时,才不会引起信号幅值的明显失真。

经过上述了解,我们可知,采样频率的一半称作奈奎斯特频率,要确保信号频率不失真,我们需要信号频率低于奈奎斯特频率,要确保信号幅值不失真,则需要让关心的信号频率为奈奎斯特频率的1/5,甚至于10分之一。因此,我们建议环路带宽设置为1/20采样频率(1/10的奈奎斯特频率),减小奈奎斯特频率对相位的影响。

接下来,我们分析一下不同采样频率下信号还原的情况是什么呢?

ed4728e6630ce4a402b3610e5727a392.png

图7 高采样频率时的信号还原

当我们采用9倍于所关心频率的信号时去做ADC采样时,那么此时我们通过图7可知,采样信号被还原后比较接近原始的连续信号。

当我们采用奈奎斯特频率fn去采样所关心的频率信号时,我们发现采样后的信号,除了原有信号频率之外,在还原的信号中发现一个低频的信号,另外零阶保持后的信号幅值本身也发生了明显的失真。

4796f5baba1aedc2bbea617ce27ba0be.png

图8 较低采样频率导致的信号畸变

accf1bba7d32476bfc4458130bc308b8.png

图9 用1/2信号频率去采样信号造成的信号畸变

当我们采用一半的信号频率去采样原始信号时,发现信号发生了非常严重的幅值畸变,并且在还原信号中带入了一个明显的低频信号。

通过上述的分析,我们可以看出采样频率对准确采样并还原信号的重要性。一般来说,ADC对高于奈奎斯特频率以上的信号进行采样,都会带来一个低频假信号,而这个假信号如果被MCU所接收,那么它将做出错误的指令判断。所以,我们一定要避免它的出现。

725563ce1193d1b5deef4dd3193d833f.png

图10 混叠效应的说明

如图10所示,当我们假定采样频率为100Hz,那么对应于采样频率的奈奎斯特频率为50Hz,对所有高于50Hz的信号进行采样,都会带来一个低频假信号,如70Hz会带来30Hz,160H会带来40Hz,510Hz会带来10Hz等,真实信号的频率和混叠进来的低频信号的计算关系我们在此不进行探讨,有兴趣可以去查阅相关资料。

既然我们不希望混叠信号的发生,那么如何消除它呢?有人说,会建议用数字滤波器,但是这往往是不现实的,因为MCU无法区分低频混叠信号和真实信号,所以它将他们统统滤除,那么将有用信号滤除显然是不合理的。正确的做法,一般是尽可能在采样信号进入MCU之前就将所有高于奈奎斯特频率以上的信号滤除掉,并且具有一定的衰减,这样就不会产生混叠频率,常用的滤除方式是采用RC滤波器。

de8833d5cf6db1a9b7ea5b846b06b66f.png

图11 抗混叠滤波器设计1

ADC内部一般会有一个采样保持电容CHOLD,这个电容在规格书上能够查询得到,如图12所示,共享内核典型值为18pF,专用内核典型值为5pF,这里,我们以共享内核为例,一般推荐将滤波电容设为50-100倍的保持电容,以确保在ADC采样时,不管是对保持电容充电,还是保持电容放电,不至于影响到输入模拟信号的幅值,这对于共享内核非常重要,因为共享内核会连接到不同的输入通道上,而每一个通道的电压会有不同,如果处理不得当,会产生不同的电压通道之间产生crosstalk而导致采样错误或者降低精度。

b1c63de10678a5c85dcb9f943c4b1d02.png

图12 ADC主要结构参数

e7a012acf5d679c84a4537c2011f9875.png

图13 ADC的模拟输入通道内部结构

由ADC的内部结构,我们可知,模拟通道上面除了信号源阻抗RS之外,ADC内部还有一系列阻抗,如连接电阻RIC为300ohm,采样开关的电阻RSS为44ohm,所以这些电阻会导致给保持电容充电时间变长,为了得到准确的采样电压,需要适当加大采样时间。

d4af640b738861d0ecf2f28271d275b9.png

图14 抗混叠滤波器设计2

当滤波器电容C确定后,我们可以根据RC的转折频率来求得电阻值选择,由于采样频率是开关频率,则奈奎斯特频率就是一半的开关频率,我们希望在奈奎斯特频率处的输入信号能有20db衰减,则RC的转折频率应该设为1/10的奈奎斯特频率,如图14,可以将电阻R确定下来。

总结,通过分析ADC采样带来的两个典型问题,并且对其解决方案做了探讨,可以更好地理解对数字补偿器的设计。

//关于知识产权:

1.本公众号主要用于个人学习笔记归纳及分享,无任何商业目的。

2.本公众号所发表言论及观点不代表本人现任公司及前任公司,如有错误请不吝指正。

3.欢迎随意分享转发,如需转载公众号内容,请留言告知。

4.有些图片来自网络,如有侵权,请联系删除。

fabff0d25a2033f8c21ac20c24523d3b.gif

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

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

相关文章

2012.2.9日晚亚马逊的一个错误链接截图

1现在时间 2 问题链接 http://www.amazon.cn/%E5%81%A5%E8%BA%AB%E5%99%A8%E6%A2%B0/b/refsa_menu_sef7?ieUTF8&node42787071 3 点击后结果 http://www.amazon.cn/gp/product/B0073RWUQA/refs9_hps_bw_g200_ir05?pf_rd_mA1AJ19PSB66TGU&pf_rd_scenter-5&pf_rd_r0…

Kotlin 的 Array 转 List

Kotlin 的 Array 转 List array.toList() as List<T> 1Kotlin 的 Array 转 ArrayList array.toList() as ArrayList<String>转载于:https://www.cnblogs.com/weizhxa/p/10068944.html

[转]关于sizeof()的一些思考

关键字&#xff1a;sizeof&#xff0c;字节对齐&#xff0c;多继承&#xff0c;虚拟继承&#xff0c;成员函数指针 前向声明&#xff1a; sizeof&#xff0c;一个其貌不扬的家伙&#xff0c;引无数菜鸟竟折腰&#xff0c;小虾我当初也没少犯迷糊&#xff0c;秉着“辛苦我一个…

RCF的优势--分布式应用

RCF(远程调用框架)是一个可以移植的C进程间通信框架&#xff0c;使用C语言特性&#xff0c;提供了一个简单高效的编写分布式C软件的途径。RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORBA,DCOM,.NETRemoting,WCF,WS-*,等所支持的面向对象方式不一样&#xff0c…

深漂结束

早上起来看了勇士和凯尔特人的比赛&#xff0c;勇士还不能适应凯尔特人的防守&#xff0c;除了防守之外&#xff0c;凯尔特人这场比赛的三分球着实太高了。说到篮球&#xff0c;突然想起一个刚离开深圳去惠州工作的朋友。上周二中午&#xff0c;吃饭的时候我打开手机&#xff0…

RS 学习笔记 3-1

3-1 fence climb onto/jump off salad towel napkin ladder 转载于:https://blog.51cto.com/mingii/776041

JS的八大数据类型

js中的数据类型&#xff0c;包括基本数据类型&#xff08;Number,String,Boolean, Undefined,Null&#xff09;和 复杂&#xff08;引用&#xff09;数据类型&#xff08;Object,Array,Function&#xff09; 基本数据类型 基本数据类型指的是简单的数据段 &#xff08;Number,S…

嵌入式软件是这样debug的

【单步调试】【多线程调试】调试过多线程的都懂的。【断点调试】【递归调试】调试过递归代码的都有这种耳鸣目眩的感觉。【老旧代码调试】对于早期已经缝缝补补的庞大软件代码进行调试&#xff0c;还不如推倒重来。【生产中代码调试】【用户等待调试结果】【掩耳盗铃式调试】【…

可以直接在C++里面写类似RSL的shader了

可以直接在C里面写类似RSL的shader了 今天我搞定了一个新技术 可以直接在C里面写类似RSL的shader了 我简要介绍一下这个新技术&#xff0c;我还在考虑是否要在我们的项目中应用 这个技术的优势是可以借助现有的C编译器&#xff0c;将shader直接编译成机器码执行&#xff0c;这样…

UDT中select异常

转载&#xff1a;http://blog.csdn.net/seebit/article/details/6050428 select, selectEx的参数采用了stl的容器&#xff0c;在DLL方式下&#xff0c;会发生异常。 select传入的容器内的对象在DLL内部发生释放操作时&#xff0c;会抛出异常&#xff0c;因为主程序和DLL申请的内…

iOS中有两种支持机制:Notification和KVO(Key-Value Observing)

KVO是iOS中的一个核心概念&#xff0c;简单理解就是&#xff1a;关注Model某个数据&#xff08;Key&#xff09;的对象可以注册为监听器&#xff0c;一旦Model某个Key的Value发生变化&#xff0c;就会广播给所有的监听器&#xff08;http://blog.chinabyte.com/a/1557371.html&…

Apache与Tomcat有什么关系和区别

常在用apache和tomcat等这些服务器&#xff0c;可是总感觉还是不清楚他们之间有什么关系&#xff0c;在用tomcat的时候总出现apache&#xff0c;总感到迷惑&#xff0c;到底谁是主谁是次&#xff0c;因此特意在网上查询了一些这方面的资料&#xff0c;总结了一下&#xff1a; …

“电脑人才”是怎么炼成的

好长一阵子没有写什么了&#xff0c;其实自己一直想一些电脑方面的书籍&#xff0c;希望给那些想要学习&#xff0c;而没有人指点的朋友们做个参考&#xff0c;或者给那些低学历的朋友做指导&#xff0c;总之希望把不要像我走了那么多弯路。可惜的是要生存&#xff0c;要工作&a…

UDT源代码下载链接

对UDT有兴趣的可以下载UDT对应的源码进行研究&#xff0c;下面给出了一个开源中国的连接&#xff1a; UDT最新源码下载地址&#xff1a;http://sourceforge.net/projects/udt/files/latest/download?sourcedirectory.

声音与年龄

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;最近一年一直从事音频相关的工作&#xff0c;今天刚好看到卓老师的一篇和声音相关的文章&#xff0c;分享给大家。摘要&#xff1a;今天布置了这学期信号与系统的小论文作业。有参加了上海中学生的科技节作品评选。他们的一…

深入Django(1): 通用视图 (generic views)

如果对Django的基础部分尚不熟悉&#xff0c;请参考《Django实战》系列。 内容提要 1. 回顾Django的视图函数&#xff08;view function&#xff09; 2. 在视图函数中使用模板 3. 简化视图函数的两个工具 4. 使用通用视图函数 5. Django提供的通用视图 1. 回顾Django的视图函数…

系统字体的Regular、Light等几种名称的区别

以苹果系统中的PingFang SC系列字体为例&#xff0c;其中常见的有下面几种类型可以细分如下。 PingFang SC ExtraLight 苹方 特细 PingFang SC Light 苹方 细体 PingFang SC Regular 苹方 常规 PingFang SC Medium 苹方 中等 Pi…

J2EE WEBWORK FRAMEWORK安全隐患

TEAM : I.S.T.OAUTHOR : KJ021320转载需注明作者,未经作者同意,不得用于任何形式的商业活动 WebWork是由OpenSymphony组织开发的&#xff0c;致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。框架本身就是抽象空实现的&#xff01;一般很少会给程序带来0day漏洞,但是因为W…

使用 servlet 连接数据库

1.项目工程 web.xml 配置 1 <servlet> 2 <description>This is the description of my J2EE component</description> 3 <display-name>This is the display name of my J2EE component</display-name> 4 <servlet-name>DBSer…

我用涂鸦模块做的报警系统

在上次发的涂鸦的文章之后涂鸦的这套宠物SDK设计&#xff0c;真香最近刚好有一个朋友需要做一个DEMO&#xff0c;这个DEMO是和图像识别相关的&#xff0c;我这个朋友在一个烟火报警的设备&#xff0c;大家都知道我们住的小区里面都会有一个监控系统吧&#xff0c;监控系统里面是…