jforu 发表于 2024-5-6 14:31:32

MF35_ 发表于 2024-5-6 14:29
STM32的ADC我记得是SAR的,不是Σ-Δ,不过都没差了,STM32的ADC即便在SAR ADC中也是很一般的,MCU自带 ...

是的, 我是回复网友回复中的 HX711

MF35_ 发表于 2024-5-6 14:37:26

jforu 发表于 2024-5-6 14:31
是的, 我是回复网友回复中的 HX711


这玩意儿不是做电子秤的吗?精度参数手册干脆没有给出,拿这个做测量仪器我是不敢的,还不如STM32靠谱,好歹有指标:lol

scu319hy 发表于 2024-5-6 14:56:01

MF35_ 发表于 2024-5-6 14:27
bit可以提升,线性不能,线性限制了ADC的最高精度,而不是bit数,bit数只决定分辨率而已

非线性的问题用软件修正不了么?
我以前用stm32f030,对比VC86E做过一个测试,感觉精度还行。大差不差的,当三位表用似乎还是可以的

lidawei1 发表于 2024-5-6 16:08:23

jforu 发表于 2024-5-6 13:56
过采样, 提高不了ADC的线性.

看一下, ICL7106的线性, 和STM32F303 ADC的线性吧


这是极限的情况,在速度达到5Msps时的数据,如果速度放慢些,指标应该会好些的。
就算只有10.7位,不考虑其他误差源,0.2%的指标也是无问题的,不能看到人家使用STM32F303就怀疑它。
非线性也是可以校正的,至于校正到什么程度是另外一回事。
过采样有多种形式,Σ-Δ ADC本质也是采用了过采样技术,不过有反馈,一番处理之后,增加了分辨率,也增加了线性度,
许老师十余年前设计的那个0.3%电桥也使用了过采样技术提高adc位数,按他的说法,没有失码,那说明增加的位数也基本是线性的,即线性度增加了。
英国那些早期的高位表,也有采用特定的过采样技术来提高分辨率的,理论上来看,过采样后的线性应该也是比过采样前好的。

jforu 发表于 2024-5-6 16:27:58

本帖最后由 jforu 于 2024-5-6 16:29 编辑

lidawei1 发表于 2024-5-6 16:08
这是极限的情况,在速度达到5Msps时的数据,如果速度放慢些,指标应该会好些的。
就算只有10.7位,不考 ...

INL 是不能校正的 offset ERROR 可以校正, gain error是可以校正, 但线性度是不能校正的.
如果可以校正, 7位半,8位半的表到处是了.


如果你了解ADC, 就知道, 单片机里的ADC, 5MSPS 其实不影响线性, 高速影响的是噪音, 信噪比.

10.7 BIT的线性, 真的做不到整体测量结果达到 0.2%, 按你的算法, ICL7129,显示结果19999 测量结果可以达到0.005%了. 实际上用ICL7129的表,最好的表(电压档)最高只敢标0.025%

scu319hy 发表于 2024-5-6 17:26:03

jforu 发表于 2024-5-6 16:27
INL 是不能校正的 offset ERROR 可以校正, gain error是可以校正, 但线性度是不能校正的.
如果可以校 ...

不理解为啥非线性不能校正...难道这个非线性还是不稳定的?
除了噪声外,我想不到有什么其它因素会让它无法做校正
低位ADC校正应该会有明显的提升效果

MF35_ 发表于 2024-5-7 10:21:19

本帖最后由 MF35_ 于 2024-5-7 10:25 编辑

scu319hy 发表于 2024-5-6 14:56
非线性的问题用软件修正不了么?
我以前用stm32f030,对比VC86E做过一个测试,感觉精度还行。大差不差的 ...


当然可以修正,用更高一级仪器测出非线性曲线,然后用二次、三次甚至更高次多项式拟合,就可以把非线性大约纠正到比测量仪器稍差的水平

但非线性曲线不是固定不变的,它首先和温度相关,你难道要每个温度下套用一个修正式吗?显然不现实。然后采样速率和外部参数也影响曲线变化,但这些相对温度相关性来说都是小问题。

所以通过软件修正非线性的方案,应用范围一般受限于基本恒温的环境,比如在计量单位的恒温实验室使用的仪器,就可以用这个方法,以极低的成本实现性能极高的测试设备

MF35_ 发表于 2024-5-7 10:23:58

jforu 发表于 2024-5-6 16:27
INL 是不能校正的 offset ERROR 可以校正, gain error是可以校正, 但线性度是不能校正的.
如果可以校 ...


INL软件修正是可行的,只是INL曲线是温度相关的,所以这个方法一般只适合环境温度相对恒定的场合

MF35_ 发表于 2024-5-7 10:26:59

本帖最后由 MF35_ 于 2024-5-7 10:33 编辑

scu319hy 发表于 2024-5-6 14:56
非线性的问题用软件修正不了么?
我以前用stm32f030,对比VC86E做过一个测试,感觉精度还行。大差不差的 ...


12位的ADC做三位半当然没问题,不用修正都没问题,三位半如果按1000字算只需要10bit,如果按2000字算也只需要11bit

不过你的理解中有个误区,过采样只能增加有效位数,也就是分辨率,并不能改善线性,线性是由硬件的特性决定的,比如Σ-Δ ADC,你再怎么过采样,其线性也是由Σ-Δ调制器本身决定的,跟过采样率没关系

比如一个16bit的SAR ADC,INL是1LSB,也就是说它的最后一位是不确定的,此时用4倍过采样得到18bit数据,INL就变成18bit的4LSB了,也就是说INL的ppm值是不变的,Σ-Δ之所以广泛采用过采样技术,是因为它的结构决定了它自身的分辨率和噪声指标远远不如INL,所以通过过采样把分辨率和噪声提升到和INL相同的水准,而INL才是限制ADC精度的核心,所以对于非Σ-Δ的ADC,过采样使用的并非那么广泛,因为只有分辨率而没有精度在大多数场合是不适用的

joyb 发表于 2024-5-7 11:27:46

都是俄文,看不懂

lidawei1 发表于 2024-5-7 14:13:26

MF35_ 发表于 2024-5-7 10:26
12位的ADC做三位半当然没问题,不用修正都没问题,三位半如果按1000字算只需要10bit,如果按2000字算 ...

INL是1LSB时,它的最后一位也是确定的吧,只是这一位是错的,与实际值的对应关系错位了
如果是噪声,那就是不确定的。

scu319hy 发表于 2024-5-7 15:04:05

MF35_ 发表于 2024-5-7 10:21
当然可以修正,用更高一级仪器测出非线性曲线,然后用二次、三次甚至更高次多项式拟合,就可以把非线 ...

我明白,过采样没法解决线性问题。但只要分辨率能上去,再做线性校正,理论上应该能得到比原本指标高的结果
当然,受噪声影响,提升是有上限的。不过12位变15~16位应该是有可能做到的吧?
用多项式拟合太数学了,一点都不工程。光算参数的代码都要把FLASH挤爆
ADC线性再差也有个限度。分段校正,最多再弄个二次平滑,效果应该就很不错了(我做步进电机驱动器用的tle5012b就自带分段校正功能)
至于温度的问题,我觉得在低精度下应该影响不大。正常室温下能比较准确就够用了,又不是精确测量
非要修正的话,做几组常用温度的采样,中间做插值也不是不可以;P

MF35_ 发表于 2024-5-7 15:43:13

lidawei1 发表于 2024-5-7 14:13
INL是1LSB时,它的最后一位也是确定的吧,只是这一位是错的,与实际值的对应关系错位了
如果是噪声,那 ...


在误差理论中,把由测量误差导致的测量值偏离真实值的程度,称为“不确定度”,即测量值的可信程度,也就是我们常说的“精度”、“准确度”,但误差理论的术语是“不确定度”。

因此“不确定”,指“不可信”,而你理解的“不确定”,应该指“读数跳动”,它是以“多次测量同一个值”的方式来观察到的,对单次测量来说,不存在“读数跳动”

MF35_ 发表于 2024-5-7 15:51:32

scu319hy 发表于 2024-5-7 15:04
我明白,过采样没法解决线性问题。但只要分辨率能上去,再做线性校正,理论上应该能得到比原本指标高的结 ...


用多项式拟合太数学了,一点都不工程。光算参数的代码都要把FLASH挤爆

--------------------------------

没你想的那么复杂,拟合的过程是在外部完成的,由测试设备测量一系列已知参考,然后导出测量值,在外部计算误差得到误差函数,然后把误差函数用多项式逼近,最终只需要把多项式的系数存入测试设备而已,二次多项式有三个系数,三次多项式有四个系数

lidawei1 发表于 2024-5-7 16:00:38

本帖最后由 lidawei1 于 2024-5-7 16:02 编辑

scu319hy 发表于 2024-5-7 15:04
我明白,过采样没法解决线性问题。但只要分辨率能上去,再做线性校正,理论上应该能得到比原本指标高的结 ...

最简单的方法是逐点校正,对于12bit的adc来说,不难做到。
因为INL是刻度不均匀引起的,刻度宽窄不一,结果部分码字出现错误,校正后,大部分有问题的码字可以重回正轨,反映真实值,少部分确实无法校正,但很少。
通过合适的过采样,是可以提高分辨率也提高线性度的
页: 1 [2] 3
查看完整版本: 俄罗斯开源LCR表