搜索
bottom↓
回复: 4
打印 上一主题 下一主题

AD7705和pt100的使用请教

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2012-2-16 13:18:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

pt100和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[gStruAD7705.CurrentSamplePtr]=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[0];
    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[0];
    u8 i=0;
    for(i=0;i<len;i++)
        {
            if(val<=min)
                {
                    min=val;
                }
        }
    return min;
}

代码中ADvalue是读的温度的10倍,,我读回来显示的温度差距太大,温度10几度,我显示的30多度,应该怎么变换这里的公式或者AD的模式怎么改变,求教!!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

2
 楼主| 发表于 2012-2-16 13:20:37 | 只看该作者
回复【楼主位】wumin0566
-----------------------------------------------------------------------


这张清楚些 (原文件名:CQ}]9W{Q(}1WY{QU5(H37C8.jpg)

出0入0汤圆

3
发表于 2012-2-16 14:46:26 | 只看该作者
2线制的PT100?
程序没细看,你可以先换算成欧姆,然后网上下个软件验证
就知道你是AD换算成欧姆错,还是欧姆换算温度错了

出0入0汤圆

4
 楼主| 发表于 2012-2-16 16:08:31 | 只看该作者
回复【2楼】qwerttt
-----------------------------------------------------------------------

公式以前算0-100度的时候可以的,但是我把pt100的电阻换了后,测-20到110度范围的时候,这个公式应该不对,我不知道用哪个公式

出0入85汤圆

5
发表于 2012-9-28 15:52:55 | 只看该作者
pt100在负温度时的计算公式和正温度时是不一样的,建议先由桥路计算出RTD的电阻,由电阻再求温度,当然你也可以直接由输出电压直接求温度,这估计需要2阶以上的矩阵求出
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 07:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表