_SKU_SEN0254_TC01_16x4红外线阵列温度传感器Modbus - jimaobian/DFRobotWikiCn GitHub Wiki

(SKU:SEN0254)

简介

DFRobot TC01 16x4红外线阵列温度传感器主要功能为远程非接触红外线阵列温度检测,可以检测16x4个温度阵列,可以不接触目标而通过测量物体发出的红外辐射强度计算出物体的表面温度,具有内部温度补偿,可准确检测环境温度及目标温度。 传感器采用金属材质外壳,具有防水、防尘等优点,使用标准Modbus-RTU通讯协议兼容,RS485输出采用屏蔽导线能够避免在复杂环境中使用受到环境干扰,在输出数据稳定可靠的前提下更具有超越众多市场同类产品的检测性能。

产品参数

  • 工作电压:9-24V DC
  • 额定功率:0.1W
  • 工作温度:-20℃-85℃
  • 测量温度:-20℃-300℃
  • 测量精度:±1℃~±5.5℃
  • 红外线阵列:16x4
  • FOV视场角:60°x 16°
  • 防护等级:IP65
  • 通讯接口:RS485
  • 通讯协议:Modbus-RTU
  • 探头直径:15.4 mm
  • 探头长度:79 mm
  • 电缆长度:1.5m
  • 电缆接口:剥口镀锡线

产品外形示意图

TC01尺寸图 接口线序如下: 1.白------VCC(电源) 2.黑------GND(电源地) 3.橙------RS485-A 4.棕------RS485-B

像素排列

TC01 像素排列示意图 注意:传感器红外线阵列共有16x4个像�

测量精度梯度变化示意图

TC01测量精度变化示意图 注:

To-测量温度 Ta-环境温度 uniformity-统一指标

注意:

所有精度规格仅适用于稳定的等温条件。 此外,只有当被测物完全覆盖传感器的视场角FOV时,精度才有效。 图中所示精度参数为产品四个中心像素点的精度,其余像素点精度采用统一指标。 由于长期(年)漂移,在室温附近所测得物体温度可能会有±3°C的额外测量偏差。

Arduino驱动示例

准备

库安装

硬件连接示意图

TC01连线图

示例代码

打印输出

#include <ArduinoModbus.h>
#include <ArduinoRS485.h>

#define baudRate 19200
#define addr 0x0A

float To[64]= {0.0};
float Ta= 0.0;

void getTa()
{
    if (!ModbusRTUClient.requestFrom(addr, HOLDING_REGISTERS, 0x45,1))
    {
        Serial.println("error: ");
        Serial.println(ModbusRTUClient.lastError());
    }
    else
    {
        Ta= ModbusRTUClient.read()/10.0;
    }
    delay(100);
}

void getTo()
{
  for(uint8_t row=0;row<4;row++)
  {
    if (!ModbusRTUClient.requestFrom(addr, HOLDING_REGISTERS, 0x05+(row*0x10),0x10))
    {
        Serial.print("error: ");
        Serial.println(row);
        Serial.println(ModbusRTUClient.lastError());
    }
    else
    {
        for(uint8_t i=0; i<16; i++)
        {
            To[row*16+i]=ModbusRTUClient.read()/10.0;
        }
    }
    delay(100);
  }
}

void setup() {
    Serial.begin(baudRate);
    ModbusRTUClient.begin(baudRate);
}

void loop() {

    /**********Ta*****************/
    getTa();
    Serial.println("======== Ta ========");
    Serial.println(Ta,1);

    /**********TO**********************/
    getTo();
    Serial.println("======== To ========");
    for(uint8_t i=0; i<64; i++)
    {
        Serial.print(To[i],1);
        Serial.print("  ");
        if((i+1)%16==0)Serial.println();
    }
    delay(100);
}

可视化测试软件

硬件连接

所需硬件及电气连接参考3.1和3.2 (无需安装库)

下载代码

/*
此代码实现将Leonardo做USB转485的功能,也可以用DF其他的USB转485工具测试
*/
void setup() {
  Serial.begin(19200); //初始化Serial(即USB串口)
  Serial1.begin(19200);//初始化Serial1
}
void loop() {
  while (Serial1.available()) {
    Serial.write(Serial1.read());//如果Serial1收到数据则通过Serial输出
  }
  while (Serial.available()) {
    Serial1.write(Serial.read());//如果Serial收到数据则通过Serial1输出
  }
  delay(1);//短暂延时,避免USB-COM不稳定
}

上位机软件

点击下载TC01测试工具

可视化显示

更多

DFshopping_car1.png [Link DFRobot商城购买链接]