abbey_tom 发表于 2022-4-5 10:59:36

24bitADC芯片ADS1256的测量精度

本帖最后由 abbey_tom 于 2022-4-5 11:08 编辑

折腾了一下ADS1256(24bitADC),
基准使用ADR4525,2.5V
PGA=1;
在第1通道加载了约1V的有效电压,
只取近五次测量的算术平均,
没有采用别的提高精度的算法,
测得的电压短期内可维持在下图中十个字以内的跳动(0.01%),
短期漂移量应该可控制0.05%以内?
当然这并不能代表ADS1256的精度,
影响因素包括基准的稳定度,
被测电压的稳定度,
还有算法等等。

pldjn 发表于 2025-2-10 15:01:09

本帖最后由 pldjn 于 2025-2-10 16:03 编辑

washu 发表于 2022-4-9 21:09
轮胎的 2400,官方说法是 24bit no missing code,也就是说在 no missing code 层面是 24 位...

噪 ...

请问,单周期ADC转换是看数据手册的哪个参数,这个一直没有发现这种描述,是下面这个稳定时间的描述吗?
按这个时序图,感觉像是转换时间变长了,DRDY/DOUT的输出时间相当于5个转换时间。

abbey_tom 发表于 2022-4-24 08:08:51

本帖最后由 abbey_tom 于 2022-4-24 09:14 编辑

xjw01 发表于 2022-4-23 22:33
我没有用过这个芯片,我了不清楚。
这个问题,实际上是丢码了。

谢谢,问题已经解决了。
确实没有丢码。
但其实是相当低级的错误。

沿用了TI官方例程中的一段,
ADS1220code = (((long)tempData << 16) + ((long)tempData << 8) + (long)tempData) >> 10; // take 3 bytes of voltage returned and place in word
出于对TI的绝对信任,这一句没有仔细看,
后来发现夹在英文注释中多了一个>>10

这样相当于舍弃了低10位,
如果是正值的话,数值缩小了1024倍
又因为约为1000倍,使得恰好是uV与mV之间的倍率,
显示值与23S没有差,
于是就没有怀疑转换数值的正确性,
把DEBUG的精力集中在时序相关。

xjw01 发表于 2022-4-21 23:57:42

本帖最后由 xjw01 于 2022-4-22 00:05 编辑

abbey_tom 发表于 2022-4-21 19:29
隔一段时间读寄存器进行比对,
看是不是既设值,
如果不是就复位芯片,


    我的复位键是接电源的,不易受干扰的,芯片没有被复位。

    被干扰后,芯片异常,无法正常读取数据。上述想法无法实现。

    但我无意中发现:被干扰后,只是造成DOUT数据无法移出而已。因为DRDY始终保持低电平,程序误以为有新数据,反复输出SCK信号来读取数据,而数据是错的。

    后来,我再次回到数据手册:数据读取后,芯片立刻将DRDY置1。所以,如果不是1,说明芯片受到电磁干扰。这样,判断是否受到干扰就有了依据。

    然而,如何让DRDY恢复正常?如何让它变为1?百思不得解。用示波器测SCK脚,总是有脉冲,它是用来读取数据的,可数据无效。越看越生气。拿起摄子,干脆把SCK引脚对地短路,我真不想看这些脉冲!!
这下可好,轻轻一碰,数据输出正常了。

   我立刻明白,摄子引入了额外的脉冲,数据正常了。我想,读数异常时,何不在程序中引入SCK脉冲,使得芯片恢复。
   经过反复调试,最终完美解决,一个数据也不丢。方法如下:

P_CS = 0;
ads1256_w1b(CMD_RDATA); //读数据
ads1256_delay(25); //25对应10us,须延时6.6us以上才能读取数据(详见ads1256手册的t6)
v= ads1256_r1b(); v <<= 8;
v += ads1256_r1b(); v <<= 8;
v += ads1256_r1b();
while(!P_DRDY){ //当ads1256受到干扰,数据移出异常,须重读
   P_SCK=1; ads1256_delay(1); //输出SCK脉冲
   P_SCK=0; ads1256_delay(1);
   ads1256_w1b(CMD_RDATA); //重读数据
   ads1256_delay(25);
   v= ads1256_r1b(); v <<= 8;
   v += ads1256_r1b(); v <<= 8;
   v += ads1256_r1b();
}
P_CS = 1;
if(v&0x00800000) v |= 0xFF000000;



sys3 发表于 2022-4-5 11:44:51

看起来精度还可以 呀,做电池组测量用?

abbey_tom 发表于 2022-4-5 11:54:37

sys3 发表于 2022-4-5 11:44
看起来精度还可以 呀,做电池组测量用?

没有想好,闹着玩儿的,
先当做一个毫伏台表。

washu 发表于 2022-4-5 11:58:38

采样率多少,德姨指标 2.5Sa/S 输入噪声零点几微伏

当然不知道水分多大,记得以前玩 1232,用碱性电池做源,噪声 2、3 微伏好像

abbey_tom 发表于 2022-4-5 12:04:23

本帖最后由 abbey_tom 于 2022-4-5 12:37 编辑

washu 发表于 2022-4-5 11:58
采样率多少,德姨指标 2.5Sa/S 输入噪声零点几微伏

当然不知道水分多大,记得以前玩 1232,用碱性电池 ...

现在取的是10sps
噪声可达100微伏
被测电压是5V电源通过简单电阻分压得的,
您说的碱性电池做源是直接将电池作为Ux吗

试着用小米电池做源测了一下,
噪声减小为10几个微伏吧。
不过,
还是不稳定,
会漂。

washu 发表于 2022-4-5 14:46:44

abbey_tom 发表于 2022-4-5 12:04
现在取的是10sps
噪声可达100微伏
被测电压是5V电源通过简单电阻分压得的,


飘肯定的,碱性电池温度系数可不小,所以要一个合适的环境(温度相对稳定)做测试。我当初测试 1232 应该是32样本。

手册上的数据是有效值,折算为峰峰值可认为大约是6倍(2.5uVpp),你再试试

btw. 可直接短路输入看看噪声多大

abbey_tom 发表于 2022-4-5 20:54:40

本帖最后由 abbey_tom 于 2022-4-5 21:09 编辑

输入直接短路的话,
测得电压也在10个微伏,
看来这个基本上是固有的了。

btw. 我还测试了一下以电池为源的差分输入,
好像要强于单端输入。
短期稳定度基本也在数个微伏范围。

abbey_tom 发表于 2022-4-5 21:12:02

下面是测试输出截图。
其中,0、1、3、5通道短接,
7通道接1.5V电池,
其它通道浮空。
均为单次取样值。

abbey_tom 发表于 2022-4-5 21:12:25

washu 发表于 2022-4-5 14:46
飘肯定的,碱性电池温度系数可不小,所以要一个合适的环境(温度相对稳定)做测试。我当初测试 1232 应该 ...

下面是测试输出截图。
其中,0、1、3、5通道短接,
7通道接1.5V电池,
其它通道浮空。
均为单次取样值。

abbey_tom 发表于 2022-4-5 22:13:06

washu 发表于 2022-4-5 11:58
采样率多少,德姨指标 2.5Sa/S 输入噪声零点几微伏

当然不知道水分多大,记得以前玩 1232,用碱性电池 ...

为何PGA越大,噪声反而越小呢

washu 发表于 2022-4-6 00:22:15

abbey_tom 发表于 2022-4-5 20:54
输入直接短路的话,
测得电压也在10个微伏,
看来这个基本上是固有的了。


多少样本,我玩 1232 的时候,32 样本输入短路是 1.7uVpp,南孚电池是 3.3uVpp

短路


南孚




至少是符合手册指标的


washu 发表于 2022-4-6 00:23:40

abbey_tom 发表于 2022-4-5 21:12
下面是测试输出截图。
其中,0、1、3、5通道短接,
7通道接1.5V电池,


连续采样若干样本测试,1256 手册没仔细看,1232 手册好像是连续采样 100 样本,我偷懒 32 样本了...

abbey_tom 发表于 2022-4-6 08:58:44

本帖最后由 abbey_tom 于 2022-4-6 09:17 编辑

washu 发表于 2022-4-6 00:23
连续采样若干样本测试,1256 手册没仔细看,1232 手册好像是连续采样 100 样本,我偷懒 32 样本了...

各通道连续100次采样的测试结果如下:

abbey_tom 发表于 2022-4-6 09:00:10

本帖最后由 abbey_tom 于 2022-4-6 09:11 编辑

单次采样结果有正有负,
我是取绝对值求和后再平均的。
代码如下:

washu 发表于 2022-4-6 10:16:14

abbey_tom 发表于 2022-4-6 09:00
单次采样结果有正有负,
我是取绝对值求和后再平均的。
代码如下:

这个测试不是叫你取平均值,而是统计 100 个样本的峰峰值(或者求其标准差、有效值),然后和手册对比。

要不然你之前说的大概 10uV 怎么来的?
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 24bitADC芯片ADS1256的测量精度