Part Number:ADS131M04
大家好,参照TI的参考设计,基于ADS131m04和STM32F103搭建了一个简单的采样电路,希望获得比较高的通道间采样一致性,就是希望两个通道对同一对象电压同时采样时,通道间差别在微伏级别或更好。
我的电路基本就是参考设计的样子,只不过右边是STM的MCU
MCU的时钟是8M,给AD输出的时钟也是8M,其他是参考TI实例代码修改的程序,基本思路是:
系统初始化——配置MCU——配置AD并启动——开始中断扫描——中断读出数据——间隔数据输出
主要的程序是这样的,TI的AD驱动没有修改:
ADC配置和启动(参考坛友的):
中断后的数据读出:
定时数据提取并打印:
现在问题是这样,数据可以比较正常的输出,但是两通道对同一电压(比如对地)采样时,通道间的差别在0.5mV左右:
上图中,IO1和IO2采集电压,绘制了曲线,右边数据列表中I4时IO1和iO2的压差。
请大家帮忙看看,这种水平是ASDS131m0x的正常现象吗,从手册上看,至少也应该达到100μV的水平吧?
另外,还有同步采样AD能达到更高的一致性水平吗,比如10μV级别?
谢谢大家!
Have2Cats:
补充一下,加电几十分钟后,感觉采样变稳定了,通道间压差依然大,但压差的跳动变少了
也是很摸不着头脑
,
Have2Cats:
再补充一下,我的电源应该出了问题,换了电源后,情况变得好多了,同步性感觉没有问题,但一致性还是上不去,压差能达到0.7mV了,压差跳动也在50μV左右
,
Amy Luo:
您好,
上图中纵坐标是采集的电压值吗?单位是伏特吗?对应的实际输入电压是多少?可以附上输入电压信号的波形吗?我想看下输入电压的稳定性情况;
您是采用的什么转换模式?连续(Continuous)转换模式还是 Global-Chop模式?
读取数据时,您是通过DRDY产生中断来判断新数据转换完成的吗?
,
Have2Cats:
被测电压和ADC电路驱动电压是分开的,之前我的ADC电路驱动电压不达标,换了一个DCDC后就好多了;
被测电压是个干电池+电阻分压电路,波形图中纵坐标是被测电压,接入ADC电路前用万用表测量是0.94V,接入ADC电路后是0.89V,与ADC采样显示比较接近,但两个通道也有些差别;
我现在手头没有示波器一类的设备,看不了波形;
转换模式没有专门设置,就是图二的内容,应该是连续模式吧;
读取数据时,是根据DRDY引脚产生中断,中断处理程序中读取当前数据到数组,打印数据时每隔500ms去读一下数组。
我看ADS131m手册中,噪声应该比这好很多才对。
,
Have2Cats:
您好,我用:writeSingleRegister(CFG_ADDRESS, (CFG_DEFAULT & ~CFG_GC_EN_MASK) | CFG_GC_EN_ENABLED);
开启了chopmode,通道间压差到了0.6mV;跳动也变差了达到了100μV左右。
,
Amy Luo:
Have2Cats 说:被测电压和ADC电路驱动电压是分开的
这里是什么意思?被测电压回路与ADC共地吗?
Have2Cats 说:换了一个DCDC后就好多了;
测试时您是用DCDC开关电源给ADC供电的吗?不建议使用开关电源给ADC供电,因为开关电源具有高频开关信号,高频开关信号会耦合到ADC和其他模拟电路中造成干扰。一般建议使用线性电源给ADC及其他模拟器件供电。
Have2Cats 说:我现在手头没有示波器一类的设备,看不了波形;
建议您用波形测试设备测试下输入信号波形,以排除输入信号波形不稳定或纹波大造成的影响。
Have2Cats 说:读取数据时,是根据DRDY引脚产生中断,中断处理程序中读取当前数据到数组,打印数据时每隔500ms去读一下数组。
ADC设置的输出数据速率是多少?读取当前转换数据到数组是完整的保存到数组是吗?我这里想确认的是读取的转换数据是否与打印数据完全一致?
使用chop mode可以降低输入失调造成的DC误差,可以提高一定的转换精度。
,
Have2Cats:
被测电压回路与ADC是共地的,二者地进行了连接;
现在的供电方式是干电池+AMS1117,足够ADC使用了吧,需要采用LT3045这种更低噪声的电源吗?
输入信号是干电池电阻分压,应该是很稳定的,而且ADC输入全部接地我也测过,跳动还是比较大的;
ADC设置的输出速录是最低一档,8M的时钟,数据率差不多250SPS;读取与保存数据是否完整这一个我再看一下,但目前从测试电压来看还是比较准确的;
chop mode正在调试,我再试一试各种参数的影响。
另外再请教您一下,ADS131m0x测量电压对象的噪声,实际水平是跟手册上一样能达到2μVRMS以下吗?
,
Amy Luo:
ADS131M04供电只需要几个mA,它主要考虑的是供电电源工作方式,以避免供电电源引入高频干扰。
Have2Cats 说:而且ADC输入全部接地我也测过,跳动还是比较大的;
噪声也可能来自GND,建议将模拟和数字接地分开,并将它们通过 0Ω 电阻连接。
Have2Cats 说:读取与保存数据是否完整这一个我再看一下,但目前从测试电压来看还是比较准确的;
这里主要考虑的是两通道数据是同一时刻采集的数据,那么的值应该是一样的,如果不是同一时刻可能会因为输入信号的不稳定两通道数据有所差别。不过这种可能性比较小,因为看两条曲线,它们之间一直存在一个比较大的差值。这让我考虑到可能是输入失调电压引起的:
典型值是±175uV,测试时,增益您设置多少?如果有增益的话,输出失调电压是输入失调电压乘以增益。
关于噪声,这个不仅与ADC本身的性能有关,还与ADC整个系统的设计有关,包括输入模拟信号的噪声水平、基准电压的噪声水平、供电电源引入的噪声、时钟jitter也有影响、 layout 噪声等。下面视频第6部分有讲ADC的噪声,您可以看下:
https://training.ti.com/types-noise-adcs?context=1139747-1140267-1128375-1140017-1135717
,
Have2Cats:
感谢您的回复!
我对电路做了一些改进,原来采用杜邦线进行信号和时钟传输,改为排插排母直接对接后,噪声改善不少,峰峰值在30μV左右,统计RMS在4.2μV左右;我用的增益是1,这接近手册1.9μV的标称水平了,如您所说,改善噪声还需要多方面努力。
输入失调电压这个我在换一片芯片试试,看能否有改善。
,
Amy Luo:
ADC总的DC误差包括失调误差、增益误差和非线性误差,下面链接有总的误差TUE(Total Unadjusted Error)的计算方法:
https://e2e.ti.com/blogs_/archives/b/precisionhub/posts/adc-accuracy-part-2-total-unadjusted-error-explained
TI也提供了总的误差计算工具:
Analog Engineer's Calculator
如下我输入各参数计算出的结果,可以看出增益误差是最大的误差,最大误差是378ppm,378*0.89V=336uV
具体使用方法可以点击help查看。
看增益误差是±0.1%,如果正好一个是正误差一个是负误差,那么两通道最大的差值就是336uV*2=672uV。
您可以换一片芯片试试,看结果是否有所改善?