原本想在先前发的“
ADS1248获取到的AD值如何转换成电阻”讨论帖中总结的,觉得有点乱,,还是重新整个吧
十分感谢“littleshrimp”版主的帮助!提供的参考资料让我省了不少麻烦
下面是个人对ADS1248的总结--代码实现省略
1、根据上图,通过ADS1248手册上的例子可以得到下列数据:(编程人员一般只需关注最大增益值的计算)
参考电阻电压:
VREF = RREF * (IIDAC1 + IIDAC2 )
恒流源输出电压最大值:
VIDAC1 MAX = RRTD MAX · IIDAC1 + (RREF · (IIDAC1 + IIDAC2))
RTD电压最大&最小值:
VRTD MAX = RRTD@850˚C · IIDAC1
VRTD MIN = RRTD@-200˚C · IIDAC1
R1电压:
VR1 = RR1 · IIDAC2
最大增益值:
Gain MAX = VREF /(VRTD MAX - VR1 )
确认CM电压在合适范围内:
VCM = VREF + (VRTD MAX / 2)
AVSS + 0.1 V + (VRTD MAX · Gain) / 2 ≤ VCM ≤ AVDD – 0.1 V – (VRTD MAX · Gain) / 2
2、得到AD值后,按照正常思路,接着就是将其转换为电阻值了:
根据AD值计算电阻值:
Code:AD值
Code[Full]:AD满量程值
未经过放大器放大时:
Code ∝ (VRTD – VR1) / RREF ( IIDAC1 + IIDAC2)
Code ∝ (RRTD – RR1) / 2RREF
RRTD = Code * 2RREF / Code[Full] + RR1
经过放大器放大后:
Code ∝ (VRTD – VR1) * Gain / RREF ( IIDAC1 + IIDAC2)
Code ∝ (RRTD – RR1) * Gain/ 2RREF
RRTD = Code * 2RREF / (Code[Full] * Gain)+ RR1
3、如果电路中的电阻精度较粗,则采用“AD值--》电阻值--》查表得到温度值”的方式会产生较大误差,
于是可以通过下述方式解决:
首先使用电阻箱替代RTD接入电路,采用“AD值--》电阻值--》查表得到温度值”的方式测试程序是否运行正常,
当发现得到的温度值与理想值之间的误差始终保持在一定的误差范围内后,(即确认程序没有错误)
接着通过PT100的电阻-温度对照表,依次调整电阻箱的阻值,
并将对应的AD值记录下来,最终构成一张表,将该表取代“电阻-温度”表,
事后直接将得到的AD值通过查找该表得到温度值,
4、在调试过程中可能会遇到板子断电后再上电时AD值改变的问题
原因:ADS1248初始化时需要提供电流源供电
因此只要先提供电流源供电,接着再连接调试线,
这样AD就可以正常初始化了,AD值的显示也就正常了
5、当SPI设置的频率过高时会出现AD值不稳定的现象(断断续续的)
(将程序移植到RTX操作系统上后波动更加明显)
原因:不详~~希望知道的大虾解答下
当前解决方法:降低SPI频率