|
本帖最后由 shichen717 于 2015-9-11 00:31 编辑
用ADS1256做个5 3/4位的仪器,折腾了一星期,还没完全好。
目前的状态:
开启输入缓冲器,PGA=4
2.5SPS,跳动...几乎不跳
5SPS,跳动1count
10SPS,跳动2count
50SPS,跳动3-4count
上述数据含传感器及其调理电路的噪声,直接短路输入端,50SPS跳动1-2count。
基本性能尚可,比手册中的理想情况差一点儿。(也许所有的问题的答案就是找回这一点儿的答案,或者反过来?)
电路是手册的标准电路,但没有49.9Ω电阻,输入端也没有电容,OPA188运放直接驱动。
包括基准驱动也是图26的标准电路,只不过2路ADS1256用了一路OPA350驱动,基准共同退耦147μF钽电容。
2路ADS1256的基准、SCLK、DIN、DOUT复用,CS和DRDY分开。
PCB的地线处理没有问题,否则读数不会如此稳定。(也许还不够稳定?)
电源退耦电容只多不少。
时序应该正确,读读数和寄存器内容都没问题,写寄存器应该也没有问题,除了ACAL功能不能用以外。
出现的问题:
1. 不能使用ADS1256的自校准,STATUS寄存器中的ACAL ON。使用自校准时2路ADS1256均无法设置任何参数,例如通道、速率、PGA。
2. 使用SELFCAL命令校准时,每次校准完成后零点OFC寄存器的值有较大变化,基本为2个比较固定的值,随机出现,之间差160(0xA0),导致显示的读数变化约10count,相当于ADC自身读数变化250 LSB。基本无法接受。最要命的,零点校准后,短路输入端读数居然不是零,而是比零点低768LSB。
请教确实用过ADS1256的坛友,是否遇到过类似问题?
今天也给TI写信问这个事情,等待回复中。
这种问题其他ADC好像还没见过。我只在AD7705用4.9152倍频时钟时见过自校准后增益不对的情况,也是两个比较固定的数值随机出现,当时问过ADI,答复时钟线可能太长,后来也没深究,因为换上2.4576晶振就好了。
不过这一次的时钟线很短,大约10mm,会不会还是太长了?可是TI的ADS1256测试板的晶振好像离得更远。我看过晶振和ADS1256的时钟输出波形,很好。
另外还有一些问题:
1. 看TI论坛,TI的人说基准退耦电容的大小与输出速率有关,速率越高电容需要越大,以保证采样电容完全充电,但这种过采样的ADC实际采样率应该固定,不同输出速率只对应不同的采样平均数量,因此采样电容的充放电是否完全应该与输出速率无关。
2. 手册中提到如果开启ACAL功能,开启或关闭输入缓冲器、PGA和输出速率时,ADS1256会自动进行一次自校准,但改变输入缓冲器状态需要写入的STATUS寄存器本身也能开启或关闭ACAL功能,写入STATUS寄存器的操作本身会不会引发自动校准?也许我应该一个命令先只开启输入缓冲器,第二个命令再开启ACAL?
3. 好像任何操作,例如写寄存器必须全程在DRDY=0时才行,否则ADS1256会进入不可预期的状态,手册中也没有任何描述,实际情况是否如此?我之前试过不管DRDY直接写与DRDY状态无关的寄存器,好像也没异常,但很多人都会任何操作前先等DRDY下降沿,现在的程序也如此,但校准的问题和无法使用ACAL的问题依旧。
4. 各位有没有做过两路ADS1256的,会出现什么单路没有的问题?已经很小心的处理2路共同使用的问题,CS控制的很严格,DRDY也是分别读取,因此应该不会出现SCLK和DIN混淆的问题(也许由于寄生延时的问题也有可能混淆?光耦是HCPL-M611或者HCPL-M600,就是小体积的6N137,能到10M?)。以前用过2路AD7705,没有问题,这次就是用1256代换7705。
5. 另外发现,ADS1256初始化时只能按照顺序写寄存器,由0x00顺序写到0x04,共5个寄存器。我试过先写输出速率,ADS1256会进入奇怪的状态,读数跳动巨大,读数数值比正常值大或小的离谱。有没有见过类似问题?
6. 模拟电源78M05,数字电源LM1117-3.3V,退耦电容都是10μF陶瓷+0.1μF陶瓷,会不会有问题,是否需要换10μF钽电容?
7. 有没有朋友用过TI的官方ADS1256测试板(不是网上100多的那种),真的能达到手册中的指标吗?我的测量结果中,无噪声分辨率比手册低了1位。
TI测试板还是大面积铺地,不分模拟地和数字地,我的模拟地和数字地分开星形接地,难道问题出在这里?手册中也提到推荐数字地和模拟地要用一块铺地,如果分开二者之间不能有压差。我用万用表看过直流压差为0,但交流真不好说。我觉得问题很有可能出在这里,明天划开地线试试。
ADS1256的用户手册真是崩溃,最基本的信息很多没有,而且自校准的公式好像还有错误。
我查了大量TI论坛的内容,看到TI的人强调:“ADS1256上电后会进入RDATAC连续读数状态,必须首先发送RESET或SRDATAC命令”,而这一信息居然不在手册中,那手册已经看过无数遍。
更崩溃的是手册中没有官方的初始化例程,甚至连一个完整的时序图都没有。
一切都得摸着来。
ADS1256似乎是很难搞的型号,很多人都感觉崩溃。
1. 超出想象的基准驱动
基准驱动居然是不太精密的高速运放OPA350,温漂4uV/C,2.5V基准时相当于1C漂移1.6ppm,虽然我的应用无所谓,但说实话真配不上ADS1256的性能。原因是OPA350高频内阻低,而且有巨大的电容驱动能力,至少能推150uF,200μF也不是问题,而ADS1256的基准输入没有内部缓冲,基准输入端直接接采样电容,必须要这么大的钽电容退耦做电荷泵,为采样电容提供完全充电的能力。
Rigol的6 1/2位万用表用的也是ADS1256,但基准驱动是低速的零漂移运放OPA2335,估计做了补偿才能推这么大的电容,不过准确度高多了。
好在OPA350不贵,4μV/C的漂移也可以接受。
之前用过LM336做基准直接驱动ADS1256的基准输入端,的确内阻太高,自校准的时候基准电压会忽而高1mV(K2000 fast filter off 测量,示波器抓不住,也许更高?),加了OPA350缓冲后,任何时候OPA350的输出端都纹丝不动,除了LM336和OPA350的温漂。
2. 上电后居然是高速状态
最崩溃的是ADS1256上电后直接运行在30KSPS状态下,单片机速度不够可能都无法正确写寄存器。我的单片机是STC 1T 33.1776M,速度还好。会不会是STC 1T单片机的问题,输出电平要在写入状态后4个周期才有效,不过我加了足够的延时。
3. 功耗巨大
5V模拟电源10mA往上,3.3V数字电源1mA,50mW的样子,微微发热,有明显的零漂,而且零漂好像也不像手册说的那么小。
啰啰嗦嗦说了一大堆,不胜其烦,还没说完全,还请各位不吝赐教。
|
|