实现适合各种环境的高精度、多通道温度测量

投稿人:DigiKey 北美编辑

虽然温度测量对于很多应用来说是一项常规要求,但开发人员在确保结果高度准确方面仍面临严峻挑战。克服这些挑战往往会导致设计过于复杂以及设计周期的延长,但新型器件的出现正在不断降低这种复杂性。

本文旨在简单讨论一下与开发精确解决方案相关的温度测量要求和挑战。随后本文会介绍 Linear Technology LTC2986-1 温度传感器,说明该产品如何应对这些挑战;最后会向开发人员展示如何在含有各种温度传感器(包括热电偶、RTD 和热敏电阻)的典型应用中利用这些功能。

温度测量要求和技术

在构建强大的温度测量系统时,设计人员需要利用各类传感器来满足其对成本、精度和温度范围的特定要求。在这些传感器类型中,通常会在苛刻的环境中使用热电偶,因为它们能够测量 -265°C 至 1800°C 以上的温度。

热电偶所产生的电压是尖头与其冷结(用来构成热电偶的两条导线的末端)之间温差的函数。因此,整体测量精度取决于热电偶电压和冷结的精确测量。

由于 Seebeck 效应,热电偶会产生电压梯度,而其他常见的温度传感器还包括电阻温度检测器 (RTD)、热敏电阻和二极管,同时需要激励电流才能产生随温度变化的电压输出。作为电阻器件,RTD 和热敏电阻还需要与激励电流源串联的精密检测电阻。检测电阻会与电阻器件形成一个电阻网络,从而可对通过传感器的电压进行辐射计式测量。最后,就各种类型的传感器而言,开发人员需要采用相应方法,以便使用查找表或方程将测量结果转换为线性化温度数据。

除了要处理传感器外,开发人员在确保温度测量系统正常运行方面也面临着多重挑战。温度传感器通常放置在工厂、商业环境、建筑物和家中一些环境较为恶劣的位置,无论在那里,应用都要求能够测量空气或液体流动中的温度梯度。在工业应用中,在传感器和测量系统输入之间使用长电缆,会使电缆受到电气噪声、磨损和外部电压源影响,可能会损坏传感器及其测量系统。

工程师采用了各种各样的方法来处理影响温度测量系统性能的各种因素。随着对温度传感器需求的不断增长,传统方法通常会加大设计的复杂度,并且还会增加部署和维护成本。Linear Technology 的 LTC2986-1 能应对这些挑战,它可以借助多个传感器提供精确的温度测量,开发人员需要花费的精力也很少。

降低复杂性

Linear Technology 的 LTC2986-1 是一款多通道温度测量系统,旨在简化设计复杂性,支持大多数传感器类型,其中包括热电偶、RTD、热敏电阻、二极管和有源模拟温度传感器。由于此器件已集成完整的信号路径、转换、线性化和其他功能,因此开发人员可借助温度传感器本身及一些其他元器件实现高度精确的温度测量设计(图 1)。如下所述,尽管该系列的早期产品(如 Linear Technology LTC2984)可提供更多输入通道,但 LTC2986-1 能提供其他工作模式,从而实现以独特的解决方案提高精度。

Linear Technology 的 LTC2986-1 原理图

图 1:Linear Technology 的 LTC2986-1 具备十个输入通道、可编程电流源、内置线性化表和故障检测功能,所以设计人员可将各种温度传感器与其连接。(图片来源:Linear Technology)

对于 RTD、热敏电阻和二极管,该器件会自动产生指定电平的激励电流,测量所得的传感器电压,并生成线性化结果(单元为 °C 或 °F)。LTC2986-1 经过预编程,带有针对大多数 RTD 和热敏电阻的转换和线性化数据。同样地,该器件几乎能对所有标准热电偶进行预配置,还能使用 RTD、热敏电阻、二极管或有源模拟温度传感器支持冷结补偿。就温度测量而言,该器件会自动求解将热电偶输出电压和冷结测量值转换为实用温度读数所涉及的多项式方程。对于更为常规的转换要求,开发人员可使用 LTC2986-1 的模数转换器 (ADC) 执行单端或差分电压测量,生成原始电压结果或利用可编程查找表对结果进行转换。

除了行业标准器件的数据外,该器件还可与定制 RTD、热电偶、二极管、有源传感器和热敏电阻配合使用。对于定制器件,开发人员可将查找表加载到存储器中,该表包含多达 64 个表示传感器相对温度输出值的数据点。对于定制热敏电阻,开发人员还可直接将多达六个热敏电阻制造商通常提供的 Steinhart-Hart 系数加载到该器件。与标准传感器的内置数据一样,该器件在转换过程及软故障检测期间会使用这些定制系数和查找表确认最终的温度插值(图 2)。

Linear Technology 可使用开发人员所建查找表的 LTC2986-1 图形

图 2:Linear Technology 的 LTC2986-1 可将开发人员创建的查找表用于定制器件,当输入值超出所提供的输入数据范围时,会自动报错。(图片来源:Linear Technology)

提高精度和保护

对于转换过程,该器件使用多个周期来提升精度。在正常操作中,该器件会是使用两个周期,已在产生最终温度结果之前补偿失调误差和噪声。开发人员也可以用三周期模式使用该器件,即放缓测量速度以获取某些好处;其中三周期模式和两周期模式的时间分别约 251 毫秒 (ms) 和 167 ms。

三周期模式下,该器件可以在第一个周期通过产生电流脉冲来执行开路检测,然后再进行两个周期的正常转换过程。若该器件在随后的转换周期内检测到较高电压,它将会设置一个状态位以报告硬故障,从而指示热电偶或电缆可能已受损。此外,除开路所致的硬故障外,该器件还报告多种不同的故障情况(图 3)。

故障 错误类型 描述 输出结果
D31 传感器硬故障 开路、ADC 或冷结硬故障 -999°C 或 °F
D30 ADC 超范围硬故障 ADC 读数错误(可能混杂外部噪声事件) -999°C 或 °F
D29 冷结硬故障 冷结传感器出现硬故障错误 -999°C 或 °F
D28 冷结软故障 冷结传感器结果超出正常范围 可疑读数
D27 传感器过压 热电偶读数高于上限 可疑读数
D26 传感器欠压 热电偶读数低于下限 可疑读数
D25 ADC 超范围 ADC 绝对输入电压超过 ±1.125 × VREF/2 可疑读数
D24 有效 不适用 结果有效(应为 1),如果为 0,则放弃结果 有效读数

图 3:Linear Technology 的 LTC2986-1 可为所有传感器读数生成硬故障和软故障,还能提供与热电偶传感器相关的冷结测量附加结果,如图所示。(图片来源:Linear Technology)

除了保护应用免受传感器故障影响外,开发人员通常还会采用设计技术专门来保护测量系统本身。温度传感器通常会用于恶劣环境。诸如热电偶之类的传感器通常完全外露,以便为测量系统的输入提供可接入的导电路径。即便使用 RTD 或热敏电阻等封装传感器,电缆也有可能受损,进而导致引线可能出现高压短路或彼此之间的短路。最后,即使是非常细心的操作员和技术人员也会不小心做出错误的电缆连接,尤其是在可与不同传感器类型的通用硬件连接配合使用的应用中。

为了保护测量系统不出现过压情况,开发人员通常会在测量系统的传感器和输入通道之间放置限流电阻。通常情况下,设计人员会增加电容器以建立低通滤波器,进而减弱噪声源。这些滤波器会延长建立时间,在使用激励电流脉冲的方法(如上文所述的 LTC2986-1 转换过程)中运用这些滤波器特别有问题。除了建立时间会增加复杂度外,保护电阻的使用也会影响测量精度。

LTC2986-1 所提供的功能和工作模式专为减轻保护电阻的次要不利影响而设计。例如,为了抵消因器件输入端的较大滤波器所致的建立时间延长,开发人员可在该器件的输入多路复用器开关时间中编程加入附加延迟。假如可能会对结果产生更大影响,该器件独特的激励电流模式可解决更多与保护电阻相关的串联电阻的基本问题。

虽然保护电阻对于确保安全而言至关重要,但是用于像 RTD 或热敏电阻这样的任何电阻器件时很有问题。在两端子电阻器件中,当激励电流流经保护元件的附加串联电阻时,添加保护电阻会影响电压测量。由于传感器是电阻器,开发人员通常也要面临将传感器电阻与保护电阻及其引线相关的附加串联电阻分开的挑战。

为了解决此问题,工程师采用 3 线 RTD,并在 RTD 端子和外加电线之间使用电阻来测量引线电阻。当然,这种方法需要仔细匹配引线长度和串联电阻以确保其精度。为避免出现匹配问题,采用 4 线式或开尔文检测,在每个端子上使用电阻器可能是更好的解决方案(图 4)。

传统 4 线 RTD 原理图

图 4:传统 4 线 RTD 允许电流绕过用于保护测量通道的串联电阻(此图中的 CH3 和 CH4),因此通过这些通道的漏电电流非常低,进而能将测量误差控制在有限范围。(图片来源:Linear Technology)

在此配置中,电流通过的路径(图 4 中的 CH1 至 CH5)不涉及测量通道(CH3 和 CH4)上的串联保护电阻。流经测量通道的所有电流均仅限于器件的漏电电流。由于 LTC2986-1 的输入漏电电流小于 1 纳安 (nA),相关的测量误差通常会远远低于任何所需的分辨率水平。

不过,若是借助 LTC2986-1,此方法便不再受限于 4 线 RTD。工程师可以对器件进行配置,使用 3 线 RTD、2 线 RTD 和热敏电阻执行开尔文检测。

对于各种此类传感器,LTC2986-1 可提供独特的激励模式,即将相邻通道用作电流路径。为了实现这种模式,开发人员需在每个传感器端子和独立的 LTC2986-1 输入之间连接一个附加保护电阻。然后,仅需在 LTC2986-1 配置寄存器中设置位并正确配置输入通道,即可启用这一附加电流路径(图 5)。与更为传统的 4 线器件一样,激励电流可躲开测量通道,从而减少测量误差。

Linear Technology 的 LTC2986-1 相邻通道原理图

图 5:开发人员可以将 Linear Technology 的 LTC2986-1 配置为使用相邻通道作为激励电流路径,从而为 2 线 RTD 和热敏电阻带来开尔文检测的优势。(图片来源:Linear Technology)

无论设计人员是否使用这种替代激励模式,他们在采用 LTC2986-1 设置传感器时仍需遵循基本协议。为了实现传感器连接,他们需要对通道进行分配并利用传感器配置数据加载相关的存储器位置(图 6)。此通道分配数据会驻留在 RAM 中的连续位置,并与该器件的十个输入通道一一对应。对 RAM 进行编程后,开发人员可以在器件内置的 EEPROM 中保存配置,以便在随后的掉电或休眠周期后进行恢复。

Linear Technology 的 LTC2986-1 通道分配数据块原理图

图 6:为了配置 Linear Technology 的 LTC2986-1,开发人员需创建包含相关传感器详细信息的通道分配数据块。(图片来源:Linear Technology)

在存储器的各个通道分配数据块内,开发人员需定义传感器配置的详细信息,包括传感器类型、通道、传感器配置、激励电流以及标准或定制转换信息的预定义值。以下所示为图 6 左上角所示 PT-100 RTD 器件的存储器映射(图 7)。

PT-100 RTD 的相关存储器映射表

图 7:通道分配数据包含每个传感器的相关配置细节——此处为图 6 左上角所示 PT-100 RTD 的相关存储器映射。(图片来源:Linear Technology)

只有仔细关注每个细节,才能在复杂的多传感器温度系统中为每个通道配置合适的存储器映射。由于该器件具备适合各种传感器和传感器类型的内置支持,开发人员则需确保为其特定的传感器选择正确的代码。配置错误可能会对结果产生严重影响。

为免于手动配置,Linear Technology 可提供基于 Windows® 的免费 LTC2986 演示软件程序,如此一来,开发人员便能利用下拉菜单选项为每个通道指定配置。开发人员可以从演示板或 LTC2986-1 规格书中所示特定图表,加载配置示例(图 8)。

Linear Technology 的 LTC2986 演示软件图片

图 8:Linear Technology LTC2986 演示软件可简化器件的使用方式,即为相关硬件开发板提供预定义配置下拉菜单选择,以及加载 LTC2986-1 规格书中的示例。(图片来源:Linear Technology)

例如,上文图 6 所示的两个 4 线 RTD 配置就取自 LTC2986-1 规格书中的图 22。从该程序的配置下拉菜单中选择该图即可为该配置生成相应的设置(图 9)。

Linear Technology 的 LTC2986 演示软件图片

图 9:Linear Technology 的 LTC2986 演示软件可依次产生用于生成通道分配数据的详细配置。(图片来源:Linear Technology)

除了简化配置创建外,该程序还能对定制配置进行评估以确保分配正确无误。最重要的是,该程序还可生成一组相应的 C 语言头文件和软件例程,而且都能在 Linear Technology 的 DC2026 Arduino 兼容的 Linduino One 板上执行,处理起来毫不费力。

例如,图 9 所示配置生成的 C 代码会自动生成初始化例程,其中包含实现所需存储器映射的软件分配(如图 7 所示)。正如列表 1 所示,生成的代码会使用随附的一组已定义常数来创建相应的通道分配语句(列表 1)。

Copy
   .  .  .
void configure_channels()
{
  uint8_t channel_number;
  uint32_t channel_assignment_data;
 
  // ----- Channel 2: Assign Sense Resistor -----
  channel_assignment_data = 
    SENSOR_TYPE__SENSE_RESISTOR |
    (uint32_t) 0x9C4000 << SENSE_RESISTOR_VALUE_LSB;            // sense resistor - value: 10000.
  assign_channel(CHIP_SELECT, 2, channel_assignment_data);
  // ----- Channel 4: Assign RTD PT-100 -----
  channel_assignment_data = 
    SENSOR_TYPE__RTD_PT_100 |
    RTD_RSENSE_CHANNEL__2 |
    RTD_NUM_WIRES__4_WIRE |
    RTD_EXCITATION_MODE__ROTATION_SHARING |
    RTD_EXCITATION_CURRENT__100UA |
    RTD_STANDARD__ITS_90;
  assign_channel(CHIP_SELECT, 4, channel_assignment_data);
  // ----- Channel 7: Assign RTD PT-500 -----
  channel_assignment_data = 
    SENSOR_TYPE__RTD_PT_500 |
    RTD_RSENSE_CHANNEL__2 |
    RTD_NUM_WIRES__4_WIRE |
    RTD_EXCITATION_MODE__NO_ROTATION_SHARING |
    RTD_EXCITATION_CURRENT__50UA |
    RTD_STANDARD__AMERICAN;
  assign_channel(CHIP_SELECT, 7, channel_assignment_data);
 
}
   .  .  .
// -------------- Run the LTC2986 -------------------------------------
 
void loop()
{
  measure_channel(CHIP_SELECT, 4, TEMPERATURE);      // Ch 4: RTD PT-100
  measure_channel(CHIP_SELECT, 7, TEMPERATURE);      // Ch 7: RTD PT-500
}

列表 1:Linear Technology 的 LTC2986 演示软件程序生成的代码会自动产生通道分配语句,包括与图 7 所示存储器映射对应的通道 4 分配。(代码来源:Linear Technology)

无论是采用 Linduino 平台还是其他硬件,所生成的代码集都会展示与使用 LTC2986-1 相关的主要设计模式。例如,列表 1 中的代码片段显示了数据采集的基本回路。只要查阅生成的代码,开发人员便能检查器件使用所涉及的具体操作。例如,列表 1 中显示的顶级函数 x measure_channel 会调用访问器件寄存器的低级例程来启动转换,等待完成,然后读取结果(列表 2)。在此例中,所生成的程序只是将结果打印到控制台,但开发人员可以轻松为其应用修改该代码。

Copy
// *****************
// Measure channel
// *****************
void measure_channel(uint8_t chip_select, uint8_t channel_number, uint8_t channel_output)
{
    convert_channel(chip_select, channel_number);
    get_result(chip_select, channel_number, channel_output);
}
 
 
void convert_channel(uint8_t chip_select, uint8_t channel_number)
{
  // Start conversion
  transfer_byte(chip_select, WRITE_TO_RAM, COMMAND_STATUS_REGISTER, CONVERSION_CONTROL_BYTE | channel_number);
 
  wait_for_process_to_finish(chip_select);
}
 
   . . .
 
void wait_for_process_to_finish(uint8_t chip_select)
{
  uint8_t process_finished = 0;
  uint8_t data;
  while (process_finished == 0)
  {
    data = transfer_byte(chip_select, READ_FROM_RAM, COMMAND_STATUS_REGISTER, 0);
    process_finished  = data & 0x40;
  }
}
 
 
// *********************************
// Get results
// *********************************
void get_result(uint8_t chip_select, uint8_t channel_number, uint8_t channel_output)
{
  uint32_t raw_data;
  uint8_t fault_data;
  uint16_t start_address = get_start_address(CONVERSION_RESULT_MEMORY_BASE, channel_number);
  uint32_t raw_conversion_result;
 
  raw_data = transfer_four_bytes(chip_select, READ_FROM_RAM, start_address, 0);
 
  Serial.print(F("\nChannel "));
  Serial.println(channel_number);
 
  // 24 LSB's are conversion result
  raw_conversion_result = raw_data & 0xFFFFFF;
  print_conversion_result(raw_conversion_result, channel_output);
 
  // If you're interested in the raw voltage or resistance, use the following
  if (channel_output != VOLTAGE)
  {
    read_voltage_or_resistance_results(chip_select, channel_number);
  }
 
  // 8 MSB's show the fault data
  fault_data = raw_data >> 24;
  print_fault_data(fault_data);
}

列表 2:Linear Technology 的 LTC2986 演示软件可生成 Linduino 就绪代码,包括旨在执行器件通道低级访问的支持例程,如此代码片段所示。(代码来源:Linear Technology)

借助该软件,开发人员可使用 Linear Technology DC2608A 套件快速启动 LTC2986-1 硬件开发。DC2618 套件旨在与 Linduino 配合使用,提供含有 LTC2986-1 的演示板和试验板。与 LTC2986 演示软件结合使用时,此套件便能为快速开发温度感测应用提供一个平台。

总结

温度测量系统通常需要在苛刻的环境下工作,这就为开发人员带来了一系列挑战,保护机制与测量精度之间的冲突便是其中之一。借助 LTC2986-1 和相关开发工具,工程师现在可以快速实现既安全、又精确的温度测量系统。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此出版商

DigiKey 北美编辑