AD7705和pt100的使用请教
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_719319QUU3CT.jpgpt100和ad7705的原理图 (原文件名:(4Z~FW~08S5]TSFJBEXW6@8.jpg)
我用ad7705测量pt100的温度,想测量的温度在-20度到110度之间,精度在+-0.3,我选ad7705的转换频率为20hz,用自校准和64倍增益,带缓存的模式
u16 AD7705_GetCurVoltageVal(u8 channel)
{
u16 tmp;
CS_OUT_LOW();
AD7705_Writebyte(RD_DATA_REG);
tmp = AD7705_ReadDword();//读ad数据
if((tmp==0x0000)||(tmp==0xFFFF))
gStruAD7705.Error = TRUE;
CS_OUT_HIGH();
return (tmp);
}
void AD7705_Event(void)
{
u8 i;
int AdValue;
float temp=0.0;
WatchDogFeed(); // 喂狗
gStruAD7705.CurrentSampleVal=AD7705_GetCurVoltageVal(0);//存放读回的数据
if(gStruAD7705.Error == TRUE) // gai
{
gStruAD7705.ErrorCnt++;
if(gStruAD7705.ErrorCnt > 3)
Process_EnterSysErrorMode();
else
AD7705_Initial();
return;
}
else
{
gStruAD7705.ErrorCnt = 0;
}
if(++gStruAD7705.CurrentSamplePtr >= MAX_SAMPLE_CNT)/*连续一组采样结束*/
{
gStruAD7705.CurrentSamplePtr = 0;
}
for(i=0;i<MAX_SAMPLE_CNT;i++)
temp += gStruAD7705.CurrentSampleVal;
temp -= AD7705_GetMaxVal(gStruAD7705.CurrentSampleVal,MAX_SAMPLE_CNT);
temp -= AD7705_GetMinVal(gStruAD7705.CurrentSampleVal,MAX_SAMPLE_CNT);
temp = temp/(MAX_SAMPLE_CNT-2);//去掉最大最小值
temp-=(-0.0000010053942*temp*temp+0.04551514*temp-104.1201); // 桥路非线性修正
AdValue=(int)(temp/(float)VAULEPER+(float)TEMPBASE);//VALEPER =2.8469286,TEMPBASE = -550;
AdValue = (AdValue+5)/10;
gStruSystem.CurrentTemp.H = AdValue/10;
gStruSystem.CurrentTemp.L = AdValue%10;
}
u16 AD7705_GetMaxVal(u16 val[],u8 len)
{
u16 max=val;
u8 i=0;
for(i=0;i<len;i++)
{
if(val>= max)
{
max=val;
}
}
return max;
}
u16 AD7705_GetMinVal(u16 val[],u8 len)
{
u16 min=val;
u8 i=0;
for(i=0;i<len;i++)
{
if(val<=min)
{
min=val;
}
}
return min;
}
代码中ADvalue是读的温度的10倍,,我读回来显示的温度差距太大,温度10几度,我显示的30多度,应该怎么变换这里的公式或者AD的模式怎么改变,求教!!!! 回复【楼主位】wumin0566
-----------------------------------------------------------------------
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_719322BXF1SC.jpg
这张清楚些 (原文件名:CQ}]9W{Q(}1WY{QU5(H37C8.jpg) 2线制的PT100?
程序没细看,你可以先换算成欧姆,然后网上下个软件验证
就知道你是AD换算成欧姆错,还是欧姆换算温度错了 回复【2楼】qwerttt
-----------------------------------------------------------------------
公式以前算0-100度的时候可以的,但是我把pt100的电阻换了后,测-20到110度范围的时候,这个公式应该不对,我不知道用哪个公式 pt100在负温度时的计算公式和正温度时是不一样的,建议先由桥路计算出RTD的电阻,由电阻再求温度,当然你也可以直接由输出电压直接求温度,这估计需要2阶以上的矩阵求出
页:
[1]