硬件那点事儿
认证:VIP会员
作者动态
这个电磁炉电路板设计你打几分?附带电磁炉控制板电路原理图分享
1天前
TVS二极管能并联使用吗?TVS二极管能串联使用吗?1200字理清TVS电路设计易错点
3天前
总结了一些继电器开关电路选型时需要关注的器件参数
5天前
色环电阻的阻值怎么一眼看出来?从哪端开始读取?-电路知识点
6天前
还不会TVS二极管选型计算?ST官方工程师的选型分析实例和TVS选型神器,这1600字不可错过!
1星期前

计算12位ADC输入电压Vin=AD值*Vref/4095:式中到底是4095还是4096呢?

Part 01 前言

最近在看ADC电压采样的相关资料,目前用的比较多的就是逐次逼近寄存器型ADC,又叫做SAR ADC,我们用ADC的目的就是把模拟信号转换成相应的二进制编码,之后再通过软件把相应的二进制编码转换成十进制AD值,最后通过相应的转换公式把十进制AD值转换成电压值。对应的转换公式有些资料中认为12位ADC的Vin=AD值*Vref/4095,有些资料中认为认为12位ADC的Vin=AD值*Vref/4096,各大论坛里各位硬件专家也是争论的十分激烈,可谓是公说公有理,婆说婆有理,那么到底哪个是对的呢?

Part 02 SAR ADC工作原理说明

先温习一下SAR ADC的工作原理吧,

1.采样和保持

首先,输入的模拟电压(VIN)通过采样/保持电路保持稳定,以便进行转换。初始化:N位寄存器(SAR寄存器)被初始化为中间值,即最高有效位(MSB)设置为1,其余位为0。例如,对于8位寄存器,初始值为10000000。

2.DAC转换

数模转换器(DAC)将寄存器中的值转换为对应的模拟电压(VDAC)。初始时,VDAC为基准电压(VREF)的一半,即VREF/2。

3.比较

比较器比较VIN和VDAC。如果VIN大于VDAC,比较器输出高电平(逻辑1),寄存器中的MSB保持为1;如果VIN小于VDAC,比较器输出低电平(逻辑0),寄存器中的MSB清零。

4.逐位逼近

SAR控制逻辑将寄存器移到下一位,并将该位设置为高电平。DAC再次将更新后的寄存器值转换为新的VDAC。比较器再次比较VIN和VDAC,并更新寄存器中的当前位。这一过程重复进行,每次都移到下一位,直到所有位(从MSB到LSB)都经过比较和更新。

5.完成转换

当所有位都经过比较和更新后,寄存器中的值即为对应的数字输出,代表输入模拟电压的数字量化值。最终的N位数字结果存储在寄存器中,完成模数转换过程。

Part 03 12位ADC是4095 or 4096?

为了便于理解,我们以3位ADC,Fs为参考电压为例,下图是不同的输入电压对应的二进制编码值,参考电压是Fs,3位ADC实际上是分了8段模拟输入电压范围进行编码,每一段对应的拟输入电压为Fs/2^3=Fs/8V,那么:

0(0~Fs/16V):000

Fs/8(/16V~3*Fs/16V):001

...

Fs*7/8(13*Fs/16V~Fs*V):111

这样就能得到传递函数:Vin=AD值*Fs/2^3=AD值*Fs/8。

这个时候肯定有人会有疑问,如果输入电压Vin等于参考电压Fs,此时对应的AD值是7,那上面的等式不就不成立了?这里有个误区在于我们认为的满量程就是参考电压Fs,比如我们的ADC参考电压是5V,那么我们想当然认为5V就是满量程电压,但是基于下面的输入电压-编码图可知,111对应的是Fs*7/8,并非是Fs,也就是ADC的满量程定义为Fs-1LSB。所以虽然参考电压是Fs,但是ADC的ADC的满量程为Fs-1LSB,这样当输入电压等于Fs-1LSB时就已经达到了满量程,对应的编码就是111。

所以对于12位ADC,Vin=AD值*Vref/4096,12位ADC的二进制编码值对应是10进制AD值范围就是0~2^12 -1,也就是0~4095,但是我们在通过AD值计算输入电压时是4096哦。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 6
关注 55
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧