关于ADS1248的PGA的请教
你好:
对于ads1248的pga的数值与实际放大倍数之间的关系我想求教下。我采用REF2.048V电压做基准,经过分压差分输入测量电压。当设为一倍增益时测得电压值和真实值一样,当将增益调大时,计算出的电压值和实际测量的之间的关系不是PGA的值,比如2倍增益时大概为1.33倍;4倍增益时位1.6倍。请问ADS1248的电压的放大倍数和PGA的值是什么样的关系,出现我这种情况是什么原因?
Hi
PGA的设置实际上影响到的是ADC模拟输入的范围(+/-Vref/PGA),按照你的说法是否是,当你的输入时Vref/PGA输入时(或者是其他值),得到的ADC转换结果并非是满刻度,而是比较满刻度小很多的值是吧。
按照你上面的测试,我觉得应该是输入的电压和输出的数字电压不对应导致的,而你是通过增益来表达这个差异的。按照你的测试,如果PGA=128时,这个误差将更加大。
Hi
注意一下你ADS1248电路的设计,可以参考TI的EVM板。包括供电,参考电压等等。电路注意数模隔离。
另外说明一下: 你输入电压按照差分,分别给的是多少伏? PGA设置等于4时,转换得到的值是多少? (最好能提供的电路)
以及你对ADC寄存器的设置是怎么样的?
ADC本身是有满刻度校正和offset校正的,但是看起来你的转换结果差别太大了,建议先确定一下造成转换误差太大的原因。
Hi
如你所说在PGA=128时误差很大。我不是很能理解你说的“是输入的电压和输出的数字电压不对应导致的”,能否详细解释下,麻烦了。
Hi
目前网络有问题无法上传附近,我会尽快上传电路图以及具体测得的数据的。
供电是怎么样的?方便的话可以先共享一下原理图。
Hi
"是输入的电压和输出的数字电压不对应导致的" 也就是讲模拟输入,和数字输出其实对应不上。
另外你也要查一下,转换得到是24位,看有没有位的丢失, 用示波器确认一下。
(固定一个输入信号,用示波器观察时序,看转换得到的结果,可以用命令改变PGA的设置)
对于大输出,高增益情况,有时候会导致放大器或ADC饱和。
Hi
附件是原理图,我是差分输入,使用的AIN4和AIN5,其中AIN4接要测的电压,AIN5接地。按照你说的,当PGA设置成四时输入电压1.283V,输出电压2.0443V;当PGA设置成2时输入1.538V,输出2.0473V。输入采用的的REF20.48V电压分压而来。
Hi
之前有提到输入电压范围的问题,当PGA=4时, 模拟输入的范围是+/-Vref/PGA =+/-2.048/4=+/-0.512V.
而很显然你的输入是1.284V, 1.538V都是超出对应PGA时模拟输入范围Vref/4,ADC将输出7FFFFFh, 此时你将其误认为是满刻度2.048V,其实对应的应该是0.512V。
(上述提到7FFFFFh,实际测试值是接近这个的,所以按照你的计算输出大约是2.0443V, 2.0473V,造成这个差异是因为ADC的有效位不会达到24位)
Hi
见ADC的输入范围,与对应关系:
Hi
你的意思我明白,但是当PGA=4,模拟输入0.512V时返回的24位值如下图所示
当调成超过1.283V才如你所说的变成127 255 255 也就是7FFFFF
Hi
也就是此时相差一倍?
请确认差分输入时0.512, 参考电压时2.048V, 都没有改变,输出时以补码形式。
你是单电源供电还是双电源供电? 双电源供电可能会造成这个问题。
Hi
并不是一倍关系,PGA=1时,差分输入0.512V的返回值是
与PGA=4时的值大约是1.6倍的关系。另外基准电压2.048V一直没变,我采用的是5V单电源供电。原理图前面已经上传。
Hi
按照你现在的测试
PGA=1时,Vdin=0.512V, 数字转换的结果是0.513V, 有效位做到了15位。
PGA=4时,Vin=0.512V, 数字输出的结果是0.835V, 转换的值已经超出实际值, 而有效位只做到了8位。
比较上表,会发现你ADC转换的精度非常的差,导致了结果的不准确。
从你上传上来的电路看:
1. 数模并没有隔离,建议 数字信号模拟信号各自用自己的GDN Plane(端点接GND), 数字GND Plane与模拟GND plane 用磁珠或者0欧姆电阻隔离。
2. 输入建议增加一个小电阻构成RC滤波器。(这个是参考TI EVM板的)
3. 可以的话建议采用高精度的外部参考源。
Hi
我刚刚试着将输入端一端直接接REF,一端直接接地,返回的值如下图
不是应该是127 255 255的吗,为什么会出现这个情况。我计算了下,如果电压基准按2.5算的话大概2.048的时候出现的应该是这个值。但是就算是基准是2.5V前面的那些个PGA=2,PGA=4时的增益倍数也不对。另外我还想问下就是2.5V基准和2.048V基准是通过什么方法确定的呢?我是个初学者,旁边还没有人指导,所以问题比较多,也比较低级,还请见谅。
Hi
先如之前所谈,确认数字GND和模拟GND严格分离,这个是转换不准确的重点。
其次选择VREF电压,选2.048或者2.5V都是没有关系的,重点是需要高精度的基准源,如REF5025,REF5020之类。 基准电压转到2.5V并不会改变问题,区别只是在于模拟输入电压的范围有所改变。 在现阶段调试,可以先采用内部基准电压2.048V(默认内部参考电压)
刚刚发现当PGA=32,PGA=64,PGA=128时的返回值是成比例关系的。
PGA=32
PGA=64
PGA=128
但是PGA为小于32的值得时候就不遵循2倍的关系。
Hi
在你的另外一个帖子里有提到时序的问题,在这个帖子里也有建议你差一下数字输出的位数(用示波器)
时序上建议有DRDY指示数据输出,而后得到数据,看转换的数据是否正确。(也可以整体确认一下其他的时序问题)。
Hi
注意PGA取值比较大时,意味着输入范围更加窄。
从你现在的测试看是否都是相差2倍的关系吗? (如上用示波器确认时序,查SPI时序,看24位的数据是否有错位之类)
好的,我用示波器看一看,谢谢。
我也碰到这个问题,PGA为1的时候,AD转换的结果很理想,但PGA改为2以上,AD转换值不是理想的倍数,看了大家的解释,我想可能是数字与模拟电路没有分离的结果,不知道专家怎么看?这是设计比较匆忙,把模拟地和数字地直接连接在一起了,一般使用没有什么问题,精度还可以,但改变PGA后出现问题了,但不知道数字地和模拟地合在一起的后果这么严重。
兄台
按照datasheet clk脚接地。 ads1247 ads1147等vrefout 脚上电就有2.0v左右电压么? 我焊接了好几块,线路就接3.3v和地,
vrefout脚是需要软件初始化设置后才有电压还是什么?
我用
ADS124x_WREG( ADS124x_REG_MUX1 );
ADS124x_WCMD( 0 );
ADS124x_WCMD( DEF_BINARY_0010_0000);
bit 6 5位为 01时 internal reference is always on。 设置后vrefout还是没有电压。
求救。。。。
HI
芯片默认状态下是内部参考电压关掉的,也就是说需要外接参考电压REF0时VREFOUT才会有电压。因此你需要确认数字电压DVDD有3.3V电压,此时芯片会Power-up reset, Reset后芯片寄存器为默认值。
00 = Internal reference is always off (default)
谢谢你的回复。真敬业啊……
没看明白。我的DVDD AVDD等等都接了3.3v 是不是默认测量vrefout上是没有2.0v电压的,,需要用软件写写mux1寄存器。。。然后
我用万用表测量这个引脚 就能看到2.0左右的电压。。。。
搞定。。。电压出来了。。。
多谢了。。这么晚还不下班啊
Hi
感谢你反馈结果。
该问题是由于共模电压范围不正确而引起的,之前是一端接地,一端接参考电压。改为一端参考电压另一端比参考电压大的时候放大倍数正常。谢谢各位的帮助。
您好:
我最近也在用ADS1248这个芯片 能否分享下你的驱动代码,谢谢 576810593@qq.com
我现在用ads247 遇到的问题如下:
目前寄存器的值还是无法读取,但是已经能够采集数据,改变寄存器配置的值,采集数据也有变化,所以我觉得寄存器的值已经写进去了
AIN1=GND,AIN2为模拟信号输入,当AIN2输入为0,也就是接地时采集数据位1A7000(低16位数据一直变化),当输入为1.6V时为7FFFFF,PGA=1,可我要求的范围是0---2.5V,该怎么调增寄存器,我试了好多次值都不行,当为0时采集的数据比1A7000还大,我希望的是当为0时采集为0000000, 2.5V时采集为7FFFFF,