ZHCAAO7A May 2020 – August 2021 ADS1015 , TLA2024 , TMP61
温度 (°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 模拟输入模块、实验室和现场仪表 以及工厂自动化和控制 等应用中。
设计说明
元件选型
TMP61 的温度测量范围为 –40°C 至 125°C。在此温度范围内,TMP61 的电阻在 6537Ω 至 17853Ω 之间变化,具有正温度斜率。该范围用于在 ADC 的满量程范围条件下,最大限度地提高测量的分辨率。
下图显示了 TMP61 电阻的传递函数。
虽然该传递函数不是完全线性的,但它比标准 PTC 热敏电阻具有更高的线性度。如前所述,需要使用查找表或多项式方程来根据电阻确定温度。
更多有关 TMP61 热敏电阻温度转换的信息,请下载热敏电阻设计工具。该工具包含电阻表、示例温度转换方法和代码示例。
为进行测量,由 TMP61 和精密电阻器 (R1) 组成一个分压器并使用电源。
首先,ADC 使用 TLA2024 多路复用器的一个通道测量 R1 两端的电压。在两次测量中,先测量已知电阻,依此确定 TMP61 的阻值。然后,ADC 使用第二个通道测量 TMP61 两端的电压。这两次测量会产生两个输出 ADC 代码。
由于 R1 电阻是已知的,TMP61 的电阻可以根据两次 ADC 测量的输出代码之比计算得出。R1 用作热敏电阻阻值的比较基准,因此该电阻必须准确。电阻有任何误差都会导致测量 TMP61 电阻时出现误差。
为方便起见,选择 R1 的基准电阻值作为 10kΩ。TMP61 在 25°C 时的室温电阻也约为 10kΩ。在此温度下,热敏电阻接近温度范围的中点。如果 25°C 是中点,则电阻测量值和 TMP61 在整个温度范围内都具有类似的电压幅度。下图显示了 R1 和 TMP61 两端的电压与温度的关系。
R1 和 TMP61 的电压在大约 1.8V 到 3.2V 之间变化。即使 R1 的电压发生变化,已知电阻仍保持 10kΩ 的恒定值。将该电压的测量值与 TMP61 电压的测量值进行比较,以计算电阻之间的比率。
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。使用以下公式计算总等待时间。
例如,如果器件以 1600SPS 运行,则标称数据周期为 625µ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 电阻:
请注意,对于 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 上拉电阻器。
设计中采用的器件
器件 | 关键特性 | 链接 | 其他可能的器件 |
---|---|---|---|
TLA2024 | TLA202x 成本经优化的超小型、12 位、系统监控 ADC | /product/cn/TLA2024 | 指向类似器件的链接 指向类似 SPI 器件的链接 |
TMP61 | TMP61 ±1% 10-kΩ 线性热敏电阻,带 0402 和 0603 封装选件 | /product/cn/TMP61 |
设计参考资料
请参阅《模拟工程师电路设计指导手册》,了解 TI 的综合电路库。
其他资源
如需 TI 工程师提供直接支持,请登陆 E2E 社区:
TI e2e.ti.com