ZHCAAO7A May   2020  – August 2021 ADS1015 , TLA2024 , TMP61

 

  1.   1
  2.   修订历史记录

温度 (°C) 电阻电压 (mV) TLA2024 数字输出代码 TMP61 电压 (mV) TLA2024 数字输出代码
-40 3012.5 3E1h 1987.5 5E2h
125 1781.1 649h 3218.9 37Ah
电源
VDD GND
5V 0V

设计说明

该电路设计描述了一种使用线性热敏电阻和 12 位 ADC 的温度测量电路。TMP61 线性热敏电阻的阻值在 –40°C 至 125°C 范围内随温度变化而变化,并且在远离 ADC 放置时可用于远程测量。TLA2024 ADC 用于测量 TMP61 和精密电阻器两端的电压。利用 ADC 的内部电压基准,该电路可作为一种紧凑的低成本、低功耗解决方案来测量温度。该设计包含用于配置器件的 ADC 寄存器设置以及用于配置和读取器件的伪代码。此电路可用于 PLC 模拟输入模块实验室和现场仪表 以及工厂自动化和控制 等应用中。

GUID-36790E38-BF33-4571-B5BA-191BCFE32575-low.gif

设计说明

  1. 为电源使用电源去耦电容器。必须使用连接到 GND 的至少为 0.1μF 的电容器对 TLA2024 VDD 进行去耦。有关电源相关建议的详细信息,请参阅《TLA202x 成本经优化的超小型、12 位、系统监控 ADC》数据表
  2. 可以使用多项式方程或查找表将 TMP61 电阻转换为温度。有关详细信息,请下载热敏电阻设计工具
  3. 使用 TMP61 进行温度测量时,仅需使用 TLA2024 上四个模拟输入中的两个(AIN0 和 AIN1)。剩余的两个模拟输入可用于其他差分测量或两个单端测量。
  4. TLA2024 可通过额外的测量周期,而不是额外的模拟输入,来测量电源电压。AIN0 已连接到 5V 电源,可以使用 ±6.144V FSR 和多路复用器的单端设置进行测量。
  5. 如果 ADC 测量需要更高的分辨率,则可用 ADS1115 代替。ADS1115 与 TLA2024 类似,它通过 I2C 进行通信,并使用类似的配置寄存器。如需进行 SPI 通信,可以用 ADS1018 替代。
  6. 更多有关 TI 硅基线性热敏电阻和应用的信息,请参阅 TI 的线性热敏电阻概述《使用热敏电阻进行温度感测》

元件选型

  1. 确定温度传感器的工作范围。

    TMP61 的温度测量范围为 –40°C 至 125°C。在此温度范围内,TMP61 的电阻在 6537Ω 至 17853Ω 之间变化,具有正温度斜率。该范围用于在 ADC 的满量程范围条件下,最大限度地提高测量的分辨率。

    下图显示了 TMP61 电阻的传递函数。

    GUID-510DAD2E-E665-4F6E-A0F6-A69C11AC059B-low.gif

    虽然该传递函数不是完全线性的,但它比标准 PTC 热敏电阻具有更高的线性度。如前所述,需要使用查找表或多项式方程来根据电阻确定温度。

    更多有关 TMP61 热敏电阻温度转换的信息,请下载热敏电阻设计工具。该工具包含电阻表、示例温度转换方法和代码示例。

  2. 使用 TMP61 确定分压器的精密电阻值。

    为进行测量,由 TMP61 和精密电阻器 (R1) 组成一个分压器并使用电源。

    GUID-4AD30EB0-A87A-40F9-89EC-0C297E65C8E2-low.gif

    首先,ADC 使用 TLA2024 多路复用器的一个通道测量 R1 两端的电压。在两次测量中,先测量已知电阻,依此确定 TMP61 的阻值。然后,ADC 使用第二个通道测量 TMP61 两端的电压。这两次测量会产生两个输出 ADC 代码。

    由于 R1 电阻是已知的,TMP61 的电阻可以根据两次 ADC 测量的输出代码之比计算得出。R1 用作热敏电阻阻值的比较基准,因此该电阻必须准确。电阻有任何误差都会导致测量 TMP61 电阻时出现误差。

    为方便起见,选择 R1 的基准电阻值作为 10kΩ。TMP61 在 25°C 时的室温电阻也约为 10kΩ。在此温度下,热敏电阻接近温度范围的中点。如果 25°C 是中点,则电阻测量值和 TMP61 在整个温度范围内都具有类似的电压幅度。下图显示了 R1 和 TMP61 两端的电压与温度的关系。

    GUID-7B610108-3215-4C52-9D04-416229BA35AA-low.gif

    R1 和 TMP61 的电压在大约 1.8V 到 3.2V 之间变化。即使 R1 的电压发生变化,已知电阻仍保持 10kΩ 的恒定值。将该电压的测量值与 TMP61 电压的测量值进行比较,以计算电阻之间的比率。

  3. 确定 ADC 的增益和输入范围。

    TLA2024 具有通过缩放电容采样实现的可编程增益放大器 (PGA),这并非真正的放大器。通过此 PGA,输入范围可扩展为整个电源范围,并为 ADC 提供六个不同的满量程范围 (FSR) 设置选项。为了最大限度地提高分辨率,请选择包含温度测量范围的最小 ADC 满量程范围。

    根据 –40°C 至 125°C 的温度范围,您可以确定两个电阻元件两端的电压。第一次测量的 10kΩ 电阻两端电压在 3012.5mV 至 1781.1mV 范围内。相反,第二次测量的 TMP61 电压在 1987.5mV 至 3218.9mV 范围内。在这些电压范围内,±4.096V FSR 可用于同时测量电阻器和 TMP61。两者使用相同的 ADC 和 FSR,因此测量间的增益误差差异非常小。使用此设置,R1 和 TMP61 的温度测量范围涵盖 616 个代码。由此得出的基本分辨率近似为每个代码 0.27°C。

    电阻器具有相同的电流,因此 ADC 输出代码与电阻成正比。不需要计算输出电压,TMP61 的电阻可以根据两次测量的 ADC 代码之比计算得出。

    TLA2024 16 位 ADC 会以差分方式报告数据。即使使用 ADC 进行单端测量,ADC 也会将数据报告为差分数据。单端测量具有 15 位的分辨率。

配置寄存器设置

配置寄存器会设置 ADC 的操作模式和配置。配置包括前面各节中描述的所有设置。在 16 个位之间使用六个字段来配置器件。下表显示了配置寄存器字段描述以及位名称和位置、读写用法和复位值。

15 14 13 12 11 10 9 8
操作系统 MUX[2:0] PGA[2:0] MODE
R/W-1h R/W-0h R/W-2h R/W-1h
7 6 5 4 3 2 1 0
DR[2:0] 保留
R/W-4h 始终写入 03h

OS 位会设置操作状态并启动单次转换。MUX[2:0] 位会设置输入多路复用器以选择模拟输入。MODE 位会将器件设置为单冲转换模式。DR[2:0] 位会设置器件的数据速率。有关配置寄存器的详细信息,请参阅《TLA202x 成本经优化的超小型、12 位、系统监控 ADC》数据表

对于此应用,首先设置 ADC 来测量 R1 两端的电压,并使用多路复用器在 AIN0 和 AIN1 之间测量。FSR 设为 ±4.096V,数据速率为 1600SPS。TLA2024 中配置寄存器字段的设置如下表所示。

字段 设置 说明
15 操作系统 1 开始转换
14:12 MUX[2:0] 000
101
单端输入测量,AINP – AINN = AIN0 – AIN1,首次测量 R1
差分输入测量,AINP – AINN = AIN1 – GND,第二次测量 TMP61
11:9 PGA[2:0] 001 FSR = ±4.096V,将 ADC 设置为能够测量 0V 至 VDD 的整个电源范围
8 MODE 1 单冲转换模式下的运行
7:5 DR[2:0] 100 数据速率 = 1600SPS
4:0 保留 00011 始终写入 03h

结合字段描述中的这些位,配置寄存器值为 1000 0011 1000 0011 或 8383h。这会配置对 R1 电阻器的第一次测量。

然后在第二次测量中,将多路复用器设置为测量 TMP61 两端的电压。在这次测量中,唯一的变化是将输入设置为在 AIN1 和 GND 之间测量,作为单端测量。配置寄存器设置为 1101 0011 1000 0011 或 D383h。

TLA2024 的通道循环

TLA2024 具有四个模拟输入通道,它们来自连接到 ADC 的可配置多路复用器。温度测量只需在 TLA2024 的 AIN0 和 AIN1 输入进行即可(一次差分测量和一次单端测量)。但是,也可以添加最后两个通道来循环执行所有测量。

为进行上述测量,ADC 经编程可循环使用所有通道,启动每一转换过程,等待转换完成,然后读回数据。然后,开始下个通道的转换过程。在移动到下一个通道之前,对四个单端输入通道重复每次测量。

在系统中重复此序列会循环使用所有通道。写入配置寄存器会启动转换并将 ADC 配置为正确的运行模式。通信从写入器件的 I2C 从器件地址开始。I2C 写入后跟三个字节。第一个字节是 01h,用以指示配置寄存器。接下来的两个字节是写入配置寄存器的数据。下表中显示了设置 R1 电阻器测量的四个字节的完整通信。

I2C 地址:
1001000 写入
地址指针:
配置寄存器
配置 MSB:开始转换、设置输入、FSR、单冲模式 配置 LSB:128SPS,
比较器已禁用
1001 0000 0000 0001 1000 0011 1000 0011

然后,主器件等待转换完成。在本示例中,TLA2024 器件设置为默认数据速率 1600SPS。该器件使用内部振荡器,因此数据速率存在一些变化。为确保在 ADC 完成转换后读取器件,微控制器需等待转换完成所需的最长时间。该等待时间是标称数据周期加上 10%(用以补偿器件的内部振荡器变化)。对于每次单冲转换,ADC 唤醒时间都额外增加 20µs。使用以下公式计算总等待时间。

Wait time(等待时间) = nominal data period(标称数据周期)+ 10% + 20µs

例如,如果器件以 1600SPS 运行,则标称数据周期为 625µs。所需的等待时间将为:

Wait time(等待时间) = (625µs × 1.1) + 20µs = 708µs

读取器件从写入转换寄存器 (00h) 的寄存器指针开始,然后从同一 I2C 地址再次读取两个字节。下面显示了在首次配置 ADC 之后读取 R1 电阻器测量数据。五个字节的完整通信如下表所示。

I2C 地址:
1001000 写入
地址指针:
转换数据寄存器
I2C 地址:
1001000 读取
读取转换数据 MSB 读取转换数据 LSB
1001 0000 0000 0000 1001 0001 xxxx xxxx xxxx xxxx

收集 R1 的数据后,TLA2024 被配置为测量 TMP61 两端的电压。下表中显示了设置 TMP61 测量的四个字节的通信。

I2C 地址:
1001000 写入
地址指针:
配置寄存器
配置 MSB:开始转换、设置输入、FSR、单冲模式 配置 LSB:128SPS,
比较器已禁用
1001 0000 0000 0001 1101 0011 1000 0011

等待 ADC 完成转换后,使用相同的前五个字节读取转换数据寄存器来检索上表中所示的数据。剩余的其他 TLA2024 通道可以通过重复此序列以任意顺序循环。

测量转换

如前所述,ADC 数据不需要转换为电压。ADC 输出代码之比相当于 R1 和 TMP61 电阻之比。使用从 R1 测量获得的 OutputCode1 和从 TMP61 测量获得的 OutputCode2,可以通过以下公式计算 TMP61 电阻:

TMP61 resistance(电阻) = 10kΩ × (OutputCode2 / OutputCode1)

请注意,对于 TLA2024,数据格式为 12 位,右侧填充了 4 位零。满量程读数为 7FFh,将从转换寄存器 7FF0h 中读取。

若要将 TMP61 从电阻转换为温度,请下载热敏电阻设计工具。使用该工具,可以通过查找表、四阶多项式或 Steinhart-Hart 方程进行计算,从而进行转换。

伪代码示例

以下示例显示了伪代码序列以及设置器件和微控制器所需的步骤,该微控制器与 ADC 相连,以便在单冲转换模式下从 TLA2024 获取后续读数。ADC 首先读取的是基准电阻器 R1,使用 AIN0 和 AIN1 的差分测量。使用最大数据周期获取数据,留出唤醒器件、配置 ADC、进行单次转换和设置其他 ADC 测量的时间。然后使用类似方法对 TMP61 使用单端测量 AIN1,以进行第二次测量。其他测量通道以类似方式用于写入配置寄存器和开始转换,等待转换完成,然后回读转换。

  
Configure microcontroller for I2C communication, I2C address=1001000 (48h)
Loop 
{
Send 90h 01h 83h 83h // Measure R1 voltage as Data1
// 开始写入地址 48h,写第 0 位 (90h)
// 配置寄存器 01h 
// 设置 8383h,AIN0-AIN1,FSR=±4.096V,单冲转换,DR=1600SPS,停止
Wait 708us // 等待数据周期,+10% 补偿内部振荡器变化,+20us
Send 90h 00h 91h xxh xxh // Read back ADC conversion data 
// 开始写入地址 48h,写第 0 位 (90h)
// 转换寄存器 00h,停止
// 开始从地址 48h 读取,读第 1 位 (91h)
// 读回 2 个字节,停止
Send 90h 01h 83h 83h // Measure TMP61 voltage as Data2
// 开始写入地址 48h,写第 0 位 (90h)
// 配置寄存器 01h
// 设置 D383h,AIN1-GND,FSR=±4.096V,单冲转换,DR=1600SPS,停止
Wait 708us // 等待数据周期,+10% 补偿内部振荡器变化,+20us
Send 90h 00h 91h xxh xxh // Read back ADC conversion data 
// 开始写入地址 48h,写第 0 位 (90h)
// 转换寄存器 00h,停止
// 开始从地址 48h 读取,读第 1 位 (91h)
// 读回 2 个字节,停止
// 将 TMP61 的电阻计算为 R_TMP61
Calculate R_TMP61 from 10kOhms*Data2/Data1 
// 使用热敏电阻设计工具中的示例代码将 R_TMP61 转换为温度
// 从 AIN2 和 AIN3 的测量(可选)
Send configuration for channel 2
Wait for conversion to complete
Read channel 2
Send configuration for channel 3
Wait for conversion to complete
Read channel 3
}

布局示例

下面显示了 TLA2024 器件和 TMP61 的布局示例。使用 0402 电容器为 ADC 放置旁路电容。生成的布局约为 200mil×225mil。此测量未考虑 I2C 上拉电阻器。

GUID-A4E0D44A-825B-4A66-B11E-B4A2DC83BA51-low.gif布局示例

设计中采用的器件

器件 关键特性 链接 其他可能的器件
TLA2024 TLA202x 成本经优化的超小型、12 位、系统监控 ADC http://www.ti.com.cn/product/cn/TLA2024 指向类似器件的链接
指向类似 SPI 器件的链接
TMP61 TMP61 ±1% 10-kΩ 线性热敏电阻,带 0402 和 0603 封装选件 http://www.ti.com.cn/product/cn/TMP61

设计参考资料

请参阅《模拟工程师电路设计指导手册》,了解 TI 的综合电路库。

其他资源

如需 TI 工程师提供直接支持,请登陆 E2E 社区:

TI e2e.ti.com