我是按下面的原理图连接的,只是把RTD换成了一个120欧姆的定值电阻。寄存器配置写进去后,电阻两端能量到0.12V的电压。程序如下:
ADS1248WREG(ADS1248_REG_MUX0,0x01); //00100101,Bit7-6:传感器电流源检测不使用,Bit5-3:正输入为AIN0,Bit2-0:负输入为AIN1
//初始化MUX1多路复用控制寄存器
ADS1248WREG(ADS1248_REG_MUX1,0x38); //00111000,Bit7:启用内部晶振,Bit6-5:内部基准一直打开,Bit4-3:输入基准以板上和内部连接REFP0为准,Bit2-0:普通模式
// ADS1248WREG(ADS1248_REG_MUX0,0x01);
Delay(6*DELAY_10ms);
//初始化VBIAS偏压寄存器
ADS1248WREG(ADS1248_REG_VBIAS,0x00); //00000000,Bit7-0:偏置电压选择AN0,AN1开启
Delay(100);
//初始化IDAC1控制寄存器
ADS1248WREG(ADS1248_REG_IDAC1,0x01);//00000001,Bit7-4:内部第一恒流源的连接ANO,Bit3-0:内部第二恒流源连接ANO1 Delay(100);
//初始化IDAC0控制寄存器
ADS1248WREG(ADS1248_REG_IDAC0,0x07); //00000111,Bit7-4:只读,Bit3:DOUT功能 ,Bit2-0:1.5mA内部恒流源 Delay(100);
//初始化SYS0系统控制寄存器
ADS1248WREG(ADS1248_REG_SYS0,0x7F); //00000000,Bit7:必须设置为0,Bit6-41:选择128倍增益,Bit3-0:选择2000SPS测量速度
主函数为
void main()
{
start_set(1);
Delay(1000);
InitADS1248();
Ads1248();//读取24位转换结果,值赋给了resultss
Delay(10000);
AD_data=results;
AD_v=(unsigned long)AD_data*5/128/16777216.0;
RPt100 = AD_v/ (1.5e-6 * 128);
}
我运行得出的结果是
results=0x7FFFFF
AD_data=
AD_v=0.0195312
RPt100=101.725
请看看程序哪里有问题? 谢谢
还有一个问题 ENOB=ln(Full-Scale Range/Noise)/ln(2) ,这个值怎么确定?
yue lei:
新来的