ADS1220芯片PT100/PT1000温度采集方案,不改硬件。单片机stm32f103c8t6可用

一、概述

本方案旨在设计一个基于ADS1220高精度ADC芯片和PT100/PT1000温度传感器的温度采集系统。PT100/PT1000是一种广泛应用于工业温度测量的热电阻传感器,其电阻值随温度变化而线性变化。ADS1220是一款高精度、低功耗的24位Δ-Σ模数转换器,适用于各种高精度模拟信号的采集。

只需要更改程序即可完成PT100/PT1000采集切换。

二、硬件设计

**电源管理**:ADS1220工作电压为2.7V至5.5V,建议选择3.3V作为供电电压。
**数据速率**:设定合适的数据采集速率,以平衡精度与响应速度。对于温度测量,20ps通常是合理的范围。

 三、软件设计

通过改变寄存器设置 ,切换采集  参照手册39页https://www.ti.com/cn/lit/ds/symlink/ads1220.pdf?ts=1732081353659&ref_url=https%253A%252F%252Fso.szlcsc.com%252F

void ADS1220_Init(void)
{
    uint8_t config_0 = 0x60;//PT1000采集1倍增益
    //    uint8_t config_0 = 0x66;//PT100采集8倍增益
    uint8_t config_1 = 0x04;
    uint8_t config_2 = 0x55;
    uint8_t config_3 = 0x72;
    ADS1220AssertCS(1);
    ADS1220SendResetCommand();
    HAL_Delay(10);
    ADS1220AssertCS(1);

    //写入配置寄存器0
    ADS1220WriteRegister(0x00, 1, &config_0);

    //写入配置寄存器1
    ADS1220WriteRegister(0x01, 1, &config_1);

    //写入配置寄存器2
    ADS1220WriteRegister(0x02, 1, &config_2);

    //写入配置寄存器3
    ADS1220WriteRegister(0x03, 1, &config_3);
    HAL_Delay(10);
    ADS1220AssertCS(1);
    ADS1220SendStartCommand();
}

pt1000温度计算参数

double aa,bb,cc,dd,H,t1,t2,t,f_t,f_prime_t;
double wendu_temp(float ZUZHI)
    {

    if (ZUZHI >= 1000)     // 当 t >= 0
        {
         aa = B;
         bb = A;
         cc = 1 - (ZUZHI / 1000);

         H = bb* bb - 4 * aa * cc;
        if (H < 0) {
            return -1;
        }
        // 求解二次方程
         t1 = (-bb + sqrt(H)) / (2 * aa);
         t2 = (-bb - sqrt(H)) / (2 * aa);
        // 返回非负解
        return (t1 >= 0) ? t1 : t2;
    }
    else {
        // 当 t < 0
        // 三次方程: R_t = R_0 * (1 + A * t + B * t^2 + C * (t - 100) * t^3)
         aa = C;
         bb = B - 100 * C;
         cc = A;
         dd = 1000 - ZUZHI;
        // 使用牛顿法迭代求解
         t = -10; // 初始猜测
        for (int i = 0; i < 100; i++) 
        {
             f_t = 1000 * (1 + A * t + B * t * t + C * (t - 100) * t * t * t) - ZUZHI;
             f_prime_t = 1000 * (A + 2 * B * t + 3 * C * (t - 100) * t * 2 + C * t * t);
            t = t - f_t / f_prime_t; // 牛顿法更新公式
            // 判断精度以停止迭代
            if (fabs(f_t) < 1e-6) break;
        }
        return t; // 返回温度
    }
}

采集到的数据转换

void ADS1220_GetData()
{
 temp = ADS1220ReadData();
    Vin = temp*(1650)/8388608;//PT1000采集电压计算
    //    Vin = temp*(204.8)/8388608;//PT100采集电压计算
    ZUZHI=(Vin*2);//PT1000/PT00采集电压计算
      T = wendu_temp(ZUZHI);
}

其他程序网上搜直接可以套用

 四、总结

PT1000时可以看到25.39°时采集电压在549mv,阻值计算为1098.87

GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。icon-default.png?t=O83Ahttps://gitcode.com/Open-source-documentation-tutorial/86789/blob/main/PT1000%E5%88%86%E5%BA%A6%E8%A1%A8.pdf

以上即为基于ADS1220与PT100传感器的温度采集系统设计方案。此方案结合了高精度ADC与高稳定性PT100传感器,适用于对温度测量精度有较高要求的应用场景。在实际应用中,还需根据具体环境条件对电路布局、元件选型等方面做出适当调整,以达到最佳性能。

相关文章;【嵌入式】PT1000求温度值及C语言实现_pt100计算-CSDN博客文章浏览阅读1.1k次,点赞14次,收藏24次。PT1000求温度值及C语言实现_pt100计算https://blog.csdn.net/EleganceJiaBao/article/details/143478862

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值