뉴스
뉴스
SL-W-TRS-5.5Dx 디지털 적외선 열전대 데모 보드 사용자 매뉴얼
2024-12-13 1849
SLKOR 마이크로세미콘(주) 기술 백본은 한국의 청화대와 연세대에서 나왔습니다. 새로운 소재, 새로운 공정, 새로운 제품으로 회사의 개발을 이끌고 있으며, 3세대 반도체 실리콘 카바이드 전력 장치의 국제적으로 진보된 기술을 비교적 일찍 습득했습니다.

 

SLKOR 는 전자 제품의 설계, 개발, 생산 및 판매를 통합하는 하이테크 기업입니다. 고객에게 신뢰할 수 있는 제품과 해당 기술 서비스를 제공합니다. 브랜드 "SLKOR"는 점차 국제적으로 유명한 기업으로 발전하여 전 세계적으로 10,000명 이상의 고객에게 제품과 솔루션을 제공하고 있습니다.

 

고객에게 완벽한 보완 제품을 제공하기 위해 노력하는 노력의 일환으로, SLKOR 디지털 적외선 열전대 비접촉 온도 측정 애플리케이션 설계용 데모 보드에 대한 일련의 사용자 매뉴얼을 출시했습니다.

 

1.1 이름: 사용자 설명서 SLKOR 디지털 적외선 열전대 비접촉 온도 측정 응용 프로그램 설계 데모 보드

1.2 응용 프로그램: 스마트 웨어러블 기기, 스마트폰, 산업용 온도 모니터링, 비접촉 인체 표면 온도 측정, 지능형 온도 감지 및 제어, 단거리 온도 측정을 위한 기타 소형 장치.

1.3 SL-W-TRS-5.5Dx 시리즈 데모 보드:

다양한 유형의 센서를 평가하고 테스트하는 데 사용됩니다. 측정 결과는 화면에 표시되고 USB 대 직렬 포트를 통해 PC의 직렬 포트 디버깅 소프트웨어로 인쇄할 수 있습니다. 버튼 설명: 왼쪽 버튼은 재설정용이고 오른쪽 버튼은 프로그램의 시작과 일시 중지를 제어할 수 있습니다.

image.png 

2. SL-W-TRS-5.5Dx 시리즈의 하드웨어 설계

 

칩 핀에는 전원 공급 장치와 I2C 버스가 포함되어 있으며 총 4개의 핀이 있습니다. 허용 가능한 공급 전압 범위는 2.3~3.6V입니다. 센서 자체는 전력 소모가 매우 낮습니다. 전원 공급 장치 접지 사이의 0.1uF 커패시터로 충분합니다. 센서가 전원 공급 장치 부분에서 비교적 멀리 떨어져 있는 경우 안정적인 전원 공급을 보장하고 노이즈를 줄이기 위해 추가 10uF 커패시터를 고려할 수 있습니다.

image.png 

 

 

3. SL-W-TRS-5.5Dx 시리즈 데모 보드 설명

 

3.1 데모 보드는 Type-C 소켓으로 전원을 공급받으며, 데모 보드의 전원 공급 전압은 5V입니다. 사용 시 Type-C를 통해 데모 보드를 PC에 연결하면 화면에서 결과를 볼 수 있습니다. 직렬 포트를 통해 데이터를 표시해야 하는 경우 WCH CH340 드라이버 프로그램을 설치한 다음 직렬 포트 디버깅 소프트웨어를 사용하여 작동해야 합니다. 직렬 포트 통신 설정은 다음과 같습니다. 통신 속도: 9600, 데이터 비트: 8, 정지 비트: 1, 패리티 검사 없음.

 

3.2 데모 보드의 화면 표시는 위에서 아래로 다음과 같습니다. 주변 온도(tamb), 센서 출력 전압(vtp_cor), 물체(표면) 온도(tobj), 인체 온도(tbdy). 위의 온도 값의 단위는 °C이고 전압의 단위는 μV입니다. 그 중 처음 세 값은 장치의 원래 출력입니다. 체온 값은 원래 값을 기반으로 회사 알고리즘을 사용하여 계산되며 참조용일 뿐입니다. 사용자는 필요에 따라 자체 체온 알고리즘을 사용하여 데이터를 처리할 수 있습니다. 

image.png 

직렬 포트 디스플레이 효과

 

 2. SL-W-TRS-5.5Dx 시리즈 데모보드 프로그램 예시

 

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

 // 메인.c

 //////

 #고객을 위해 정의

 #ifdef FOR_CUSTOMER

 #include "drv_uart.h"

 

#include "drv_i2c.h"

#include "drv_key.h"

#include "oled/oled.h"

#include "trs55d.h"

 

외부 void SystemCoreClockupdate(void);

외부 void delay_ms(int cnt);

 int main (void)

{

uint8_t 키;

 uint8_t 실행 = 0x01;

 시스템코어클럭업데이트();

if (SysTick_Config(SystemCoreClock / 1000))

동안(1);

 uartInit();

drv_i2c_init();

drv_key_init();

 

OLED_초기화();

 OLED_새로 고침();

OLED_지우기();

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

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

 OLED_Show중국어(8,32,0,16,1);

OLED_Show중국어(24,32,2,16,1);

OLED_Show중국어(40,32,3,16,1);

OLED_Show중국어(8,48,1,16,1);

 OLED_Show중국어(24,48,2,16,1);

OLED_Show중국어(40,48,3,16,1);

OLED_새로 고침();

uartSendString("SL-W-TRS-5.5Dx 데모 프로그램 ");

while(1) {

키 = drv_key_read();

while(drv_key_read());

if (키) {

 실행 = (실행)?0:1;

}

if (실행) {

 TRS55D_read();

OLED_새로 고침();

}

지연_ms(20);

}

}

 

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

 //trs55d.h

 //////

#만약_TRS55D_H_

#TRS55D_H_를 정의합니다.

#포함

#TRS55D_NORMAL_Tobj_MSB_R 0x10을 정의합니다.

#TRS55D_NORMAL_Tobj_CSB_R 0x11을 정의합니다.

#TRS55D_NORMAL_Tobj_LSB_R 0x12를 정의합니다.

 #TRS55D_정상_온도_MSB_R 0x16 정의

#정의 TRS55D_정상_온도_CSB_R 0x17

#TRS55D_정상_온도_LSB_R 0x18 정의

 #TRS55D_NORMAL_DATA1_MSB_R 0x19를 정의합니다.

#TRS55D_NORMAL_DATA1_CSB_R 0x1A를 정의합니다.

 #TRS55D_NORMAL_DATA1_LSB_R 0x1B를 정의합니다.

 #TRS55D_NORMAL_DATA2_MSB_R 0x1C를 정의합니다.

 #TRS55D_NORMAL_DATA2_CSB_R 0x1D를 정의합니다.

#TRS55D_NORMAL_DATA2_LSB_R 0x1E를 정의합니다.

 #TRS55D_RAW_DATA1_MSB_R 0x22를 정의합니다.

 #TRS55D_RAW_DATA1_CSB_R 0x23 정의

#TRS55D_RAW_DATA1_LSB_R 0x24를 정의합니다.

 #TRS55D_RAW_DATA2_MSB_R 0x25를 정의합니다.

 #TRS55D_RAW_DATA2_CSB_R 0x26 정의

 #TRS55D_RAW_DATA2_LSB_R 0x27를 정의합니다.

 #TRS55D_RAW_TEMP_MSB_R 0x28을 정의합니다.

 #TRS55D_RAW_TEMP_CSB_R 0x29를 정의합니다.

#TRS55D_RAW_TEMP_LSB_R 0x2A를 정의합니다.

 #ADDR_TRS55D 0xFE //(0x7F << 1) 정의

 #define _STATUS_DRDY_ 0x01 void TRS55D_read(void);

#endif

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

// trs55d.c

//////

#포함

 #include "drv_i2c.h"

 #include "trs55d.h"

 #include "body_temp.h"

 외부 uint8_t uartSendString(const char* buf);

외부 void OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t 크기1,uint8_t 모드);

 외부 void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,

uint8_t 크기2, uint8_t 모드); uint8_t TRS55D_IIC_Read(uint8_t 주소_장치, uint8_t 주소_등록,

uint8_t *buf, uint16_t 개수)

{

uint8_t ret;

uint8_t 응답 플래그;

uint16_t i = 0;

drv_i2c_start();

drv_i2c_select_dev(주소_장치,DRV_I2C_OPWR);

 

drv_i2c_writebyte(주소_등록);

 drv_i2c_start();

drv_i2c_select_dev(주소_장치, DRV_I2C_OPRD);

i = 0; i < count; i ++에 대하여 { ackflag = (i < (count-1)) ? 1:0; buf[i]

 = drv_i2c_readbyte(응답플래그);

 }

drv_i2c_stop();

 반환 ret;

 }

 

void TRS55D_IIC_Write(uint8_t 주소 장치, uint8_t 주소 등록, uint8_t *buf, uint16_t 개수)

 {

 uint16_t i = 0;

drv_i2c_start();

drv_i2c_select_dev(주소_장치,DRV_I2C_OPWR);

drv_i2c_writebyte(주소_등록);

 i = 0; i < 개수; i ++)

 { drv_i2c_writebyte(buf[i]);

}

drv_i2c_stop();

}

 typedef union{

int16_t i16;

uint16_t u16;

구조체 {

uint8_t u8l;

uint8_t u8h;

 }운;

}uu16_t;

 

typedef union{

int32_t i32;

구조체 {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}운;

 }uu32_t;

 

정적 문자 버퍼[264];

 uu32_t 토브제이, 탐브칼;

 

uu32_t vtp_cor;

부동 소수점 vtp_uv_f = 0.0;

부동 소수점 vtp_cor_f = 0.0;

플로트 탐브프 = 0.0; 플로트 토브프 = 0.0;

 부동 소수점 tbdyf = 0.0;

 무효 TRS55D_read(무효)

{

uint8_t rbuf[4];

uint8_t 방사형, 방사형 데이터;

 uint8_t waddr = 0x0, wdat = 0x0;

int 시간 초과=0;

 

waddr = 0x30;

**wdat = 0x09**

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

 //변환 시작 delay_ms(100);

 

// 변환을 기다립니다

레이더 = 0x03;

하다 {

TRS55D_IIC_Read(ADDR_TRS55D, 방사데이터, &rdat,1);

} while(((rdat == 0xFF) || (!(rdat & 0x30))) && 시간 초과++ < 200);

레이더 = 0x02;

 하다 {

TRS55D_IIC_Read(ADDR_TRS55D, 방사데이터, &rdat,1);

} while(((rdat == 0xFF) || (!(rdat & 0x0B))) && 시간 초과++ < 200);

 

 // 교정 후 전압 값

방사형 = 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;

}또 다른 {

**vtp_cor.un.u8b3 = 0x00**입니다.

// vtp 수정 후

}

vtp_cor_f = (부동소수점)vtp_cor.i32/524288.0;

**vtp_cor_f *= 1000** 으로 설정됨

// 교정 후 주변 온도 값

 방사율 = TRS55D_정상_온도_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; // 주변 온도

 

// 교정 후 객체(표면) 온도

방사형 = 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;

// 객체(표면) 온도

 

// 체온 얻기

tbdyf = get_body_temp(tambf,tobjf); // 신체 온도 얻기

 

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

 

// oled에 표시

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

 OLED_ShowBNum (64, 0, 값[0], 4, 16, 1); // 탐브

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); // 토브지

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

}

whatsapp

서비스 핫라인

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950