lcwswust 发表于 2026-4-22 13:12:10

我想我可能知道楼主的问题点在哪里了,楼主是否以为4096份的最后一份的电压范围不一样?
能否请问一下楼主,比如参考电压是4096V,楼主以为ADC值4095代表的电压是多少?是否有一个范围?
假如ADC值是4094,代表的电压是多少?是否有一个范围?

yangsifei 发表于 2026-4-22 13:34:20

4096是数学表达的理想状态,也是教材的完美表达方式。
当2的12次方是多少很容易就表达出来4096,那么什么数的12次方是4095呢不好表达哈.
因为整数更好计算,也就是教材用4096的原因.
4095是硬件下的状态。
如果有一块10米的地中间划一条线两兄弟分.
那么数学的表达式为哥哥分0-5米,弟弟分5-10米。
要是在硬件模式下呢,实际上这条线占用一点地,
哥哥占用这条线弟弟不同意,弟弟占用这条线哥哥也不同意。
所以哥哥只能无限接近这条线,弟弟也是一样。
这条线就是比较器的翻转线,结果这条线只能被舍弃.
任何硬件都会自我剥削,消耗一点电势能。
4096是用于描述表达的理想状态,4095是硬件所能表达的状态。

yangsifei 发表于 2026-4-22 13:35:21

因为理想状态没有消耗

yangsifei 发表于 2026-4-22 13:38:01

感谢楼主的小红花{:4_174:}让我提前完成芯愿……。

杨为民 发表于 2026-4-22 13:41:12

lcwswust 发表于 2026-4-22 13:12
我想我可能知道楼主的问题点在哪里了,楼主是否以为4096份的最后一份的电压范围不一样?
能否请问一下楼主 ...
能否请问一下楼主,比如参考电压是4096V,楼主以为ADC值4095代表的电压是多少?是否有一个范围?


一看你就是个耍嘴皮子的:
(1)你先动手用实验箱试试看怎么样能让实验箱显示出4095来!
(2)假设参考电压是没有误差的,达到质检局的标准的4096V,如果出现了STC单片机的12位ADC出来是0xFFF=4095,那么这时的ADC输入的电压范围是4096.000000000V到8000V!,因为再高就击穿了。

STC单片机在ESD(静电放电)防护能力防护上非常出色,不同型号的人体放电模式(HBM) 等级如下:
新旗舰型号 (AI8051U, STC32G, STC8H):ESD防护能力普遍达 8,000V (8KV)

lcwswust 发表于 2026-4-22 14:04:56

杨为民 发表于 2026-4-22 13:41
能否请问一下楼主,比如参考电压是4096V,楼主以为ADC值4095代表的电压是多少?是否有一个范围?



哦,明白了,我们的分歧在这里:
楼主以为输入电压>=参考电压,才会得到4095的ADC值;输入电压<参考电压就会得到比4095更小的ADC值;
而我认为输入电压>VREF*4095/4096时就会得到4095的ADC值;

我也不知怎么让你得出“耍嘴皮子”的看法,敢不敢赌一把?

杨为民 发表于 2026-4-22 14:18:17

lcwswust 发表于 2026-4-22 14:04
哦,明白了,我们的分歧在这里:
楼主以为输入电压>=参考电压,才会得到4095的ADC值;输入电压VREF*4095/ ...

我也不知怎么让你得出“耍嘴皮子”的看法,敢不敢赌一把?


(1)敢赌!很简单用STC的AI8051U的实验箱实际动手作实验出来就不是耍嘴皮子了。
(2)只要你将你动手的有图有视频有结果的实验过程放上来,无论我输不输,我都给你999朵小红花!

lcwswust 发表于 2026-4-22 14:21:37

杨为民 发表于 2026-4-22 14:18
我也不知怎么让你得出“耍嘴皮子”的看法,敢不敢赌一把?




好的,先这样定下了。
接下来由于今天下午要出差,可能得耽搁几天。

杨为民 发表于 2026-4-22 14:34:43

lcwswust 发表于 2026-4-22 14:21
好的,先这样定下了。
接下来由于今天下午要出差,可能得耽搁几天。

期待

网老四 发表于 2026-4-22 16:31:26

非线性误差和噪声都超过这个1LSB值了,没有那测试条件,测出来什么结果都无效.
搭个电路仿真下更合理,就看ADC里面的比较器设计翻转门限取的上限还是中值,取值不同结果不同.
所谓用上限比较,就是输入电压达到1LSB才翻转,1LSB-2LSB之间都输出1,那么采样值1024对应的电压1024-1025mV.
所谓用中值比较,是输入电压高于0.5LSB就翻转,0.5LSB-1.5LSB之间输出1,那么采样值1024对应的电压是1023.5-1024.5mV


现在用两种公式对比计算,不考虑非线性和噪声误差.
1024采样值计算的对应电压如下:
第一个公式用4096系数

1024*(4096/4096)=1024mV,
如果设计为上限比较电路,实际电压1024-1025mV都可能,所以理论上最大误差1mV
如果设计为中值比较电路,实际电压1023.5-1024.5mV都可能,所以理论上最大误差0.5mV

第二个公式用4095系数

1024*(4096/4095)=1024.25mV
如果设计为上限比较电路,实际电压1024-1025mV都可能,所以理论上最大误差0.75mV
如果设计为中值比较电路,实际电压1023.5-1024.5mV都可能,所以理论上最大误差0.75mV

不难看出,
用4095做系数的公式,采用上限比较电路,产生的最大误差范围更小些.
用4096做系数的公式,采用中值比较电路,产生的最大误差范围更小些.

所以,具体用哪种系数公式更好,要看ADC芯片厂家的电路比较门限取法,所以要多分析芯片手册再下结论.
另外,ADC芯片本身的非线性误差和第电路低噪误差很可能远大于上面系数不同引起的误差,
实际应用上都需要校准修正,所以无论用哪个公式都没那么重要了.别浪费时间再争论.



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