“(SKU:SEN0254)TC01 16x4红外线阵列温度传感器Modbus”的版本间的差异
来自DFRobot Product Wiki
Techsupport(讨论 | 贡献) (→测量精度梯度变化示意图) |
Techsupport(讨论 | 贡献) (→测量精度梯度变化示意图) |
||
第40行: | 第40行: | ||
[[image:SEN0254-V1.0-FOV示意图.png|thumb|600px|center|]] | [[image:SEN0254-V1.0-FOV示意图.png|thumb|600px|center|]] | ||
===测量精度梯度变化示意图=== | ===测量精度梯度变化示意图=== | ||
− | [[image:SEN0254-V1.0-测量精度图.png|thumb|600px|center| | + | [[image:SEN0254-V1.0-测量精度图.png|thumb|600px|center|]] |
注: | 注: | ||
2020年4月27日 (一) 09:13的版本
[[image:|thumb|right|300px|(SKU:SEN0254)]]
目录 |
简介
DFRobot TC01 16x4红外线阵列温度传感器主要功能为远程非接触红外线阵列温度检测,可以检测16x4个温度阵列,可以不接触目标而通过测量物体发出的红外辐射强度计算出物体的表面温度,具有内部温度补偿,可准确检测环境温度及目标温度。
传感器采用金属材质外壳,具有防水、防尘等优点,使用标准Modbus-RTU通讯协议,RS485输出采用屏蔽导线能够避免在复杂环境中使用受到环境干扰,在输出数据稳定可靠的前提下更具有超越众多市场同类产品的检测性能。
产品参数
- 工作电压:9-24V DC
- 额定功率:0.1W
- 工作温度:-40℃-85℃
- 测量温度:-20℃-300℃
- 测量精度:±1℃~±5.5℃
- 红外阵列:16x4
- FOV:60°x 16°
- 防护等级:IP65
- 通讯接口:RS485
- 通讯协议:Modbus-RTU
- 探头直径:15.4 mm
- 探头长度:79 mm
- 电缆长度:1.5m
- 电缆接口:剥口镀锡线
产品外形示意图
接口线序如下:
1.白------VCC(电源)
2.黑------GND(电源地)
3.橙------RS485-A
4.棕------RS485-B
像素排列
注意:传感器红外线阵列共有16x4个像素
FOV及测量距离说明
传感器的视场角FOV为60°x 16°,被测目标的尺寸和红外测温仪的光学特性决定了被测目标和测量头之间的最大距离。
传感器视场角示意图如下所示:
测量精度梯度变化示意图
注:
To-测量温度
Ta-环境温度
uniformity-均匀度
注意:
所有精度规格仅适用于稳定的等温条件。
此外,只有当被测物完全覆盖传感器的视场角FOV时,精度才有效。
图中所示精度参数为产品四个中心像素点的精度,其余像素点精度取决于均匀性声明。
由于长期(年)漂移,在室温附近所测得物体温度可能会有±3°C的额外测量偏差。
传感器Modbus-RTU寄存器表
Arduino驱动示例
准备
- 硬件
- 1 x DFR0221 DFRobot Leonardo & Xbee R3 (由于程序会占用较大SRAM资源,建议使用MEGA2560)
- 1 x TTL转RS485扩展板
- 1 x 9V~24V+ 外接供电(必须)
- 1 x TC01 16x4红外线阵列温度传感器
- 软件
- Arduino IDE (1.0.x 或1.8.x), 点击下载Arduino IDE
- 在IDE中打开Library Manager(Ctrl+Shift+I),找到并安装ArduinoModbus和ArduinoRS485两个库
硬件连接示意图
示例代码
#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不稳定 }
上位机软件
更多
[Link DFRobot商城购买链接]