元器件
  • 元器件
  • 方案
  • 供应商
搜索
上传BOM
购物车0

购物车中还没有产品,赶紧选购吧!

萨科微半导体

查看资质
经营品类

经营品类

其他

38.88%

二极管、晶体管及晶闸管

36.44%

电路保护

13.85%

电源管理

6.34%

放大器

1.42%
联系商家 关注店铺
当前位置:应用方案> 萨科微SL-W-TRS-5.5Dx数字红外热电堆demo板使用教程
应用领域
工业电子
  • 测试与测量
  • 其他工业领域
  • 自动化
计算及数据存储
  • 笔记本电脑
  • 平板电脑
汽车电子
  • 车身域
  • 动力域(动力总成)
  • 自动驾驶域(辅助驾驶/自动驾驶(ADAS))
通信设备
  • 运营商以太网交换机和路由器
消费电子
  • 电视及游戏机(黑电)
  • 家庭及个人音频
  • 媒体平板电脑
  • 其它消费电子
  • 移动电话
  • 智能穿戴设备
  • 中小型家用电器
新能源
  • 新能源
医疗保健
  • 医疗保健

萨科微SL-W-TRS-5.5Dx数字红外热电堆demo板使用教程

2026-06-15 26
品       牌:
Slkor/萨科微
应用领域:
测试与测量 移动电话 智能穿戴设备
标       签:
数字红外热电堆
方案概述

深圳市萨科微SLKOR(WWW.SLKORMICRO.COM)半导体有限公司技术骨干来自清华大学和韩国延世大学,以新材料新工艺新产品引领公司发展,较早就掌握国际领先的第三代半导体碳化硅功率器件技术。萨科微集电子产品的设计开发、生产和销售一体化的高新科技企业,为客户提供可靠的产品和配套的技术服务,“slkor”逐渐发展成为国际知名品牌,为全世界超过10000家客户提供产品和解决方案。为了努力为客户提供全系列的配套产品,萨科微推出一系列数字红外热电堆非接触测温应用设计demo板使用教程。



1.1名称:萨科微数字红外热电堆非接触测温应用设计demo板使用教程


1.2应用:智能可穿戴设备、智能手机、工业温度监测、非接触表面人体测温、智能温度感应与控制等近距离测温尺寸较小的设备


1.3萨科微SL-W-TRS-5.5Dx系列demo板:

用于对各型号传感器进行评估测试。测 量结果会在屏幕上显示,并可以通过 USB 转串口打印到 PC 端串口调试软件。按键说明:左侧按键为复位,右侧按键可以控制程序启动、暂停。



2.萨科微SL-W-TRS-5.5Dx系列硬件设计

 芯片引脚包含电源、I2C 总线共 4 个管脚,供电电压允许范围为 2.3~3.6V。传感器本身功耗很低,电源地之间使用一颗 0.1uF 电容即可,如果传感器离供电部分比较远,可以考虑增 加一个10uF 电容,以保证电源稳定降低噪声。

 

       



3.萨科微(www.slkoric.com)SL-W-TRS-5.5Dx系列demo板说明

3.1 demo 板通过 Type-C 插座供电,demo 板供电电压为 5V。使用时将 demo 板通过 Type-c 连接至 PC 端,即可从屏幕上查看结果。如需串口显示数据,需安装沁恒 CH340 驱动程序然后使用串口调试软件进行操作,串口通信设置为: 波特率:9600 数据位:8 停止位:1 无奇偶校验

3.2 demo 板屏幕显示从上到下依次是:环境温度(tamb)、传感器输出电压(vtp_cor)、 物体(表面)温度(tobj)、人体温度(tbdy)。上述数值温度单位为℃,电压单位为 uV。 其中前三个值为器件原始输出,体温值使用我司算法根据原始值计算得到,仅供参考,用户可以根据需要使用自家体温算法来处理数据。



串口显示效果



3.萨科微SL-W-TRS-5.5Dx系列demo板程序示例


//////////////////////////////////////////////////////////////////////////////////////////////////////

// main.c

//////

#define FOR_CUSTOMER

#ifdef FOR_CUSTOMER

#include "drv_uart.h"


#include "drv_i2c.h"

#include "drv_key.h"

#include "oled/oled.h"

#include "trs55d.h"

extern void SystemCoreClockupdate(void);

extern void delay_ms(int cnt);

int main(void)

{

uint8_t key;

uint8_t run = 0x01;

SystemCoreClockupdate();

if (SysTick_Config(SystemCoreClock / 1000))

while(1);

uartInit();

drv_i2c_init();

drv_key_init();


OLED_Init();

OLED_Refresh();

OLED_Clear();

OLED_ShowString(8,0,"Tamb:",16,1);

OLED_ShowString(8,16,"Vtp:",16,1);

OLED_ShowChinese(8,32,0,16,1);

OLED_ShowChinese(24,32,2,16,1);

OLED_ShowChinese(40,32,3,16,1);

OLED_ShowChinese(8,48,1,16,1);

OLED_ShowChinese(24,48,2,16,1);

OLED_ShowChinese(40,48,3,16,1);

OLED_Refresh();

uartSendString("SL-W-TRS-5.5Dx Demo program ");

while(1) {

key = drv_key_read();

while(drv_key_read());

if (key) {

run = (run)?0:1;

}

if (run) {

TRS55D_read();

OLED_Refresh();

}

delay_ms(20);

}

}

//////////////////////////////////////////////////////////////////////////////////////////////////////

//trs55d.h

//////

#ifndef _TRS55D_H_

#define _TRS55D_H_

#include

#define TRS55D_NORMAL_Tobj_MSB_R 0x10

#define TRS55D_NORMAL_Tobj_CSB_R 0x11

#define TRS55D_NORMAL_Tobj_LSB_R 0x12

#define TRS55D_NORMAL_TEMP_MSB_R 0x16

#define TRS55D_NORMAL_TEMP_CSB_R 0x17

#define TRS55D_NORMAL_TEMP_LSB_R 0x18

#define TRS55D_NORMAL_DATA1_MSB_R 0x19

#define TRS55D_NORMAL_DATA1_CSB_R 0x1A

#define TRS55D_NORMAL_DATA1_LSB_R 0x1B

#define TRS55D_NORMAL_DATA2_MSB_R 0x1C

#define TRS55D_NORMAL_DATA2_CSB_R 0x1D

#define TRS55D_NORMAL_DATA2_LSB_R 0x1E

#define TRS55D_RAW_DATA1_MSB_R 0x22

#define TRS55D_RAW_DATA1_CSB_R 0x23

#define TRS55D_RAW_DATA1_LSB_R 0x24

#define TRS55D_RAW_DATA2_MSB_R 0x25

#define TRS55D_RAW_DATA2_CSB_R 0x26

#define TRS55D_RAW_DATA2_LSB_R 0x27

#define TRS55D_RAW_TEMP_MSB_R 0x28

#define TRS55D_RAW_TEMP_CSB_R 0x29

#define TRS55D_RAW_TEMP_LSB_R 0x2A

#define ADDR_TRS55D 0xFE //(0x7F << 1)

#define _STATUS_DRDY_ 0x01 void TRS55D_read(void);

#endif

//////////////////////////////////////////////////////////////////////////////////////////////////////

// trs55d.c

//////

#include

#include "drv_i2c.h"

#include "trs55d.h"

#include "body_temp.h"

extern uint8_t uartSendString(const char* buf);

extern void OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t size1,uint8_t mode);

extern void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,

uint8_t size2,uint8_t mode); uint8_t TRS55D_IIC_Read(uint8_t addr_dev, uint8_t addr_reg,

uint8_t *buf, uint16_t count)

{

uint8_t ret;

uint8_t ackflag;

uint16_t i = 0;

drv_i2c_start();

drv_i2c_select_dev(addr_dev,DRV_I2C_OPWR);


drv_i2c_writebyte(addr_reg);

drv_i2c_start();

drv_i2c_select_dev(addr_dev,DRV_I2C_OPRD);

for(i = 0; i < count; i ++) { ackflag = (i < (count-1)) ? 1:0; buf[i]

= drv_i2c_readbyte(ackflag);

}

drv_i2c_stop();

return ret;

}


void TRS55D_IIC_Write(uint8_t addr_dev, uint8_t addr_reg, uint8_t *buf, uint16_t count)

{

uint16_t i = 0;

drv_i2c_start();

drv_i2c_select_dev(addr_dev,DRV_I2C_OPWR);

drv_i2c_writebyte(addr_reg);

for (i = 0; i < count; i ++)

{ drv_i2c_writebyte(buf[i]);

}

drv_i2c_stop();

}

typedef union{

int16_t i16;

uint16_t u16;

struct {

uint8_t u8l;

uint8_t u8h;

}un;

}uu16_t;


typedef union{

int32_t i32;

struct {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}un;

}uu32_t;


static char buffer[264];

uu32_t tobj, tamb_cal;


uu32_t vtp_cor;

float vtp_uv_f = 0.0;

float vtp_cor_f = 0.0;

float tambf = 0.0; float tobjf = 0.0;

float tbdyf = 0.0;

void TRS55D_read(void)

{

uint8_t rbuf[4];

uint8_t raddr,rdat;

uint8_t waddr = 0x0, wdat = 0x0;

int timeout=0;


waddr = 0x30;

wdat = 0x09;

TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);

//start conversion delay_ms(100);


// waite for conversion over

raddr = 0x03;

do {

TRS55D_IIC_Read (ADDR_TRS55D, raddr, &rdat,1);

} while(((rdat == 0xFF) || (!(rdat & 0x30))) && timeout++ < 200);

raddr = 0x02;

do {

TRS55D_IIC_Read (ADDR_TRS55D, raddr, &rdat,1);

} while(((rdat == 0xFF) || (!(rdat & 0x0B))) && timeout++ < 200);


// voltage value after calibration

raddr = TRS55D_NORMAL_DATA1_MSB_R;

TRS55D_IIC_Read (ADDR_TRS55D, raddr,&rbuf[0],3);

vtp_cor.un.u8b2 = rbuf[0];

vtp_cor.un.u8b1 = rbuf[1];

vtp_cor.un.u8b0 =rbuf[2];

if (vtp_cor.un.u8b2 & 0x80) { vtp_cor.un.u8b3 = 0xFF;

}else {

vtp_cor.un.u8b3 = 0x00;

// vtp after corrected

}

vtp_cor_f = (float)vtp_cor.i32/524288.0;

vtp_cor_f *= 1000;

// ambient temperature value after calibration

raddr = TRS55D_NORMAL_TEMP_MSB_R;

TRS55D_IIC_Read (ADDR_TRS55D,raddr,&rbuf[0],3);

tamb_cal.un.u8b2 = rbuf[0];

tamb_cal.un.u8b1 =rbuf[1];

tamb_cal.un.u8b0 =rbuf[2];

tambf = (float)tamb_cal.i32 / 16384.0; // ambient temperature


// object(surface) temperature after calibration

raddr = TRS55D_NORMAL_Tobj_MSB_R;

TRS55D_IIC_Read (ADDR_TRS55D,raddr,&rbuf[0],3);

tobj.un.u8b2 = rbuf[0]; tobj.un.u8b1 = rbuf[1];

tobj.un.u8b0 =rbuf[2]; tobjf = (float)tobj.i32 / 16384.0;

// object(surface) temperature


// get bodytemp

tbdyf = get_body_temp(tambf,tobjf); // get bodytemp


// display on uart sprintf(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(buffer);


// display on oled

float vals[4] = {tambf, vtp_cor_f, tobjf, tbdyf+0.05};

OLED_ShowBNum (64, 0, vals[0], 4, 16, 1); // Tamb

OLED_ShowBNum (48, 16, vals[1], 6, 16, 1); // vtp

OLED_ShowString(112,16, "uv",16, 1);

OLED_ShowBNum (64, 32, vals[2], 4, 16, 1); // Tobj

OLED_ShowBNum (64, 48, vals[3], 4, 16, 1); // Tbdy

}

新手入门
找回密码
商品搜索
交易设置
常见问题
购物指南
在线议价
发布求购
订单咨询
支付方式
物流跟踪
消费保障
售后服务
订单评价
发票须知
买家保障
供应商
成为认证供应商
入驻流程
库存发布
关于我们
关于创新优选
集团介绍
知识产权
资质荣誉
联系我们
联系我们
服务热线:400-600-9635
服务时间:9:00-18:00
联系地址:北京市海淀区彩和坊路10号1+1大厦5层501-506室

Copyright © 2026 创新优选 www.icweb.net 北京创新在线科技集团有限公司 版权所有

图标