yangsifei 发表于 2026-4-21 14:38:17

最初设计是4096能被2量化的数字量.而4096是进位的点不能被硬件所用,硬件能用的只有4095.如果软件配合硬件当然是4095更好.

yangsifei 发表于 2026-4-21 14:42:39

因为4095人工很难计算....

杨为民 发表于 2026-4-21 17:40:32

yangsifei 发表于 2026-4-21 14:42
因为4095人工很难计算....
因为4095人工很难计算....你的回答太快乐了!


哥们,你确定不是来搞笑的吗!
哥们,你确定STC单片机的ADC公式是给用户用来进行人工计算的吗?
哥们,你确定当STC单片机的ADC采集C语言程序生成HEX代码烧录到STC单片机里面后,那个4095是“有个人躲在芯片里进行人工计算吗?”

今天涨见识了,兑现承诺,不管你答得是否正确,你的回答值20朵小红花!






lcwswust 发表于 2026-4-22 10:36:21

这个问题,我没有仔细看大家的讨论,简单说下我的猜测,以下都是猜测:
按照“逐次逼近”型ADC的原理,内部估计是有一个DAC和比较器,先让DAC输出VREF*1/2去与待测电压作比较,如果DAC比待测电压低,那么ADC最高位为1,下次DAC输出就增加VREF*1/4再作比较确定次高位,如此循环。
再来考虑1位ADC、2位ADC。
1位ADC,假设参考电压1V,
当输入电压低于VREF*1/2(即0.5V),ADC结果为0,
当输入电压高于VREF*1/2(即0.5V),ADC结果为1。
所以,ADC=0表于电压为(0~0.5V),ADC=1表示电压(0.5~1V,(或许可以更高,暂不考虑超量程));
相当于将参考电压二等分,量化步长为VREF/2;
同理,2位ADC相当于将参考电压四等分,量化步长为VREF/4;
12位ADC相当于将参考电压进行4096等分,量化步长为VREF/4096。
至于计算中采用4095还是4096,看你的需要;如上面1位ADC,你要说ADC=1表示0.5V可以、表示1V也行。
补充一句:
12位ADC,假如参考电压是4096V,那么ADC=4095表示输入电压为4095V~4096V。


杨为民 发表于 2026-4-22 11:38:28

lcwswust 发表于 2026-4-22 10:36
这个问题,我没有仔细看大家的讨论,简单说下我的猜测,以下都是猜测:
按照“逐次逼近”型ADC的原理,内部 ...

“12位ADC相当于将参考电压进行4096等分,量化步长为VREF/4096。”

谁告诉你的“12位ADC相当于将参考电压进行4096等分”?这就是错误的根源!

(1)撑开手指头数一数,5个手指头里面有4条缝!
(2)1米载一颗树,3位二进制的8棵树之间的距离只有7米,只分成了7段。
(3)100米跑道,从起点到终点要均匀地分为100段,起点和终点各种一颗作标记,需要种101棵树,不能只种100颗树。
(4)抬起手看看指针手表,时针从1点走到12点并没有走完一圈,必须再走一个小时到13点才走完一圈,这样每小时才是走360/12=30度!也就是说要13个数字才能把表面分成12段!
(5)如果某个12位的ADC当输入为地线0V时输出的数组是“0”,当输入是参考电压时输出是“4095”,请你算一算,这4096个数值将0V到参考电压之间的电压分成了几份?
(6)我上小学有一根塑料直尺,每厘米标一个数字,从头开始标“0”,请问从数字“0”到数字“7”之间共计有几厘米?

lcwswust 发表于 2026-4-22 11:53:33

杨为民 发表于 2026-4-22 11:38
“12位ADC相当于将参考电压进行4096等分,量化步长为VREF/4096。”

谁告诉你的“12位ADC相当于将参考电 ...

我仍坚持4096等分,ADC值0代表第1份,ADC值4095代表第4096份。
针对问题5,当输入是参考电压时输出是“4095”,
对,但是当输入还没达到参考电压时,ADC值可能已经是4095了,

比如参考电压是4096V,输入电压是4095V时ADC值就可能是4095了,
ADC值4095代表的电压是4095V~4096V,也就是4095*VREF/4096到4096*VREF/4096,也就是第4096份。

其它问题呢可能涉及到边界我也没法把它们与ADC的这个问题相关联,就不说了。

只需大家知道,ADC的值代表的电压是有一个范围的就行。

杨为民 发表于 2026-4-22 12:03:04

lcwswust 发表于 2026-4-22 10:36
这个问题,我没有仔细看大家的讨论,简单说下我的猜测,以下都是猜测:
按照“逐次逼近”型ADC的原理,内部 ...

“补充一句:12位ADC,假如参考电压是4096V,那么ADC=4095表示输入电压为4095V~4096V”

世界上的事情不是一个人自己说了算,正确与否必须在 人与人 或者 人与物 或者 物与物 之间交流才有定义和意义!

(1)比如,你是工程师,你按照你的这个思路作了一个电子秤,然后你的老板带你去质检局领取质量合格证。
(2)质检局拿出一个4096克的砝码放到你的电子秤上,你的秤显示“4095”。然后你跟你的老板和质检局的人解释说,我造的秤如果显示“4095”,那么砝码的重量肯定在4095克~4096克之间,所以我造的电子秤是“合格的”。
(3)质检局会发合格证给你吗?
(4)你的老板还会聘你吗?
(5)你自己敢在你造的电子秤说明书上写:如果本产品显示“4095”,那么被秤的重量肯定在4095克~4096克之间这段说明给用户看吗?

()如果商场某个电子秤说明书上写着:如果本产品显示“4095”,那么被秤的重量肯定在4095克~4096克之间这段说明,你敢买吗?


杨为民 发表于 2026-4-22 12:06:04

lcwswust 发表于 2026-4-22 11:53
我仍坚持4096等分,ADC值0代表第1份,ADC值4095代表第4096份。
针对问题5,当输入是参考电压时输出是“40 ...

“比如参考电压是4096V,输入电压是4095V时ADC值就可能是4095了”


这跟公式无关,你这是在质疑厂家的ADC没有真正达到12位的精度!

lcwswust 发表于 2026-4-22 12:40:29

杨为民 发表于 2026-4-22 12:03
“补充一句:12位ADC,假如参考电压是4096V,那么ADC=4095表示输入电压为4095V~4096V”

世界上的事情不 ...

说起来可能有点跑题了,让我做电子秤肯定不会这么干啊;

我的想法是:
首先,可以给ADC值加上0.5,位于重量范围的中间,如ADC值为4095,我会在内心显示为4095.5克,表示重量在4095克~4096克,误差就是正负0.5克对吧;
其次,真正显示时加以保留,ADC能分辨1克,但我显示时(或者说明书上描述)只精确到10g,并四舍五入;
ADC值为4095时我显示为“4.10kg”。
并没有质疑“厂家的ADC没有真正达到12位的精度”,可能我的数据让你误会了,重新描述一下:

比如参考电压是4096V,输入电压略高于4095V(如4095.001V)时ADC值就可能是4095了。



网老四 发表于 2026-4-22 12:40:49

杨为民 发表于 2026-4-22 12:03
“补充一句:12位ADC,假如参考电压是4096V,那么ADC=4095表示输入电压为4095V~4096V”

世界上的事情不 ...

4096砝码用12位ADC检测出4095,毫无疑问是合格的,分辨率决定了允许误差.
给谁做都是一样结果,想要得到4096结果,必须提高ADC分辨力才能实现,否则就是造假.
再强调一次,ADC采样不是对准一个点的问题,而是一个误差带取舍问题.
仔细看下ADC芯片手册,厂家设计芯片,
参考电压对应的ADC值是多少.满度ADC值对应的电压又是多少,
有没有厂家设计的ADC芯片满度值等于参考电压?


页: 1 2 3 [4] 5 6
查看完整版本: 关于12位ADC 计算公式是除4096还是除4095的问题讨论