ニュース
ニュース
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です。このうち、最初のXNUMXつの値はデバイスの元の出力です。体温値は、当社のアルゴリズムを使用して元の値に基づいて計算されており、参考値です。ユーザーは、必要に応じて独自の体温アルゴリズムを使用してデータを処理できます。 

image.png 

シリアルポートの表示効果

 

 2。 SL-W-TRS-5.5Dxシリーズのデモボードプログラム例

 

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

 // メイン.c

 //////

 #FOR_CUSTOMER を定義します

 #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;

 システムコアクロック更新();

SysTick_Config(SystemCoreClock / 1000)の場合

一方で(1);

 uartInit();

drv_i2c_init();

drv_key_init();

 

OLED_Init();

 OLED_リフレッシュ();

OLED_クリア();

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

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

 OLED_Show Chinese(8,32,0,16,1);

OLED_Show Chinese(24,32,2,16,1);

OLED_Show Chinese(40,32,3,16,1);

OLED_Show Chinese(8,48,1,16,1);

 OLED_Show Chinese(24,48,2,16,1);

OLED_Show Chinese(40,48,3,16,1);

OLED_リフレッシュ();

uartSendString("SL-W-TRS-5.5Dx デモプログラム ");

(1) の間 {

キー = drv_key_read();

drv_key_read() が呼び出される間、

if (キー) {

 実行 = (実行)?0:1;

}

if (実行) {

 TRS55D_読み取り();

OLED_リフレッシュ();

}

遅延_ms(20);

}

}

 

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

 //trs55d.h

 //////

#ifndef _TRS55D_H_

#define _TRS55D_H_

#include

#TRS55D_NORMAL_Tobj_MSB_R 0x10 を定義します

#TRS55D_NORMAL_Tobj_CSB_R 0x11 を定義します

#TRS55D_NORMAL_Tobj_LSB_R 0x12 を定義します

 #TRS55D_NORMAL_TEMP_MSB_R 0x16 を定義します

#TRS55D_NORMAL_TEMP_CSB_R 0x17 を定義します

#TRS55D_NORMAL_TEMP_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

 #include "drv_i2c.h"

 #include "trs55d.h"

 #include "body_temp.h"

 外部 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);

 外部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 addr_dev、uint8_t addr_reg、

uint8_t *buf、uint16_t カウント)

{

uint8_t 戻り値:

uint8_t 確認フラグ;

uint16_t i = 0;

drv_i2c_start();

drv_i2c_select_dev(アドレスdev、DRV_I2C_OPWR);

 

drv_i2c_writebyte(アドレスレジスタ);

 drv_i2c_start();

drv_i2c_select_dev(アドレスdev、DRV_I2C_OPRD);

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

 = drv_i2c_readbyte(ackフラグ);

 }

drv_i2c_stop();

 ret を返します。

 }

 

void TRS55D_IIC_Write(uint8_t addr_dev、uint8_t addr_reg、uint8_t *buf、uint16_t カウント)

 {

 uint16_t i = 0;

drv_i2c_start();

drv_i2c_select_dev(アドレスdev、DRV_I2C_OPWR);

drv_i2c_writebyte(アドレスレジスタ);

 (i = 0; i < count; i ++) の場合

 drv_i2c_writebyte(buf[i]);

}

drv_i2c_stop();

}

 typedef 共用体{

int16_t i16;

u16_t u16; 整数。

構造体 {

uint8_t u8l;

uint8_t u8h;

 }国連;

}uu16_t;

 

typedef 共用体{

int32_t i32;

構造体 {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}国連;

 }uu32_t;

 

静的charバッファ[264];

 uu32_t tobj、tamb_cal;

 

uu32_t vtp_cor;

浮動小数点vtp_uv_f = 0.0;

浮動小数点vtp_cor_f = 0.0;

浮動小数点数 tambf = 0.0; 浮動小数点数 tobjf = 0.0;

 浮動小数点tbdyf = 0.0;

 void TRS55D_read(void)

{

uint8_t rbuf[4];

uint8_t raddr、rdat;

 uint8_t waddr = 0x0、wdat = 0x0;

タイムアウト=0;

 

ワッドアドレス = 0x30;

WDAT = 0x09;

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

 //変換開始delay_ms(100);

 

// 変換が完了するまで待機

ラッド = 0x03;

する

TRS55D_IIC_読み取り (ADDR_TRS55D、raddr、&rdat、1);

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

ラッド = 0x02;

 する

TRS55D_IIC_読み取り (ADDR_TRS55D、raddr、&rdat、1);

} while(((rdat == 0xFF) || (!(rdat & 0x0B))) && タイムアウト++ < 200);

 

 // キャリブレーション後の電圧値

ラジアン = TRS55D_NORMAL_DATA1_MSB_R;

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

rbuf[8] をオーバーライドします。

 rbuf[8] をオーバーライドします。

vtp_cor.un.u8b0 =rbuf[2];

 vtp_cor.un.u8b2 と 0x80 の場合 { vtp_cor.un.u8b3 = 0xFF;

}そうしないと {

u8b3 = 0x00; です。

// 修正後のvtp

}

vtp_cor_f = (float)vtp_cor.i32/524288.0;

1000 を超えると、

// キャリブレーション後の周囲温度値

 ラジアン = 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; // 周囲温度

 

// キャリブレーション後の物体(表面)温度

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;

// 物体(表面)温度

 

// 体温を取得

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 に表示する

 浮動小数点vals[4] = {tambf、vtp_cor_f、tobjf、tbdyf+0.05};

 OLED_ShowBNum (64, 0, vals[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); // Tobj

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

}

whatsapp

サービスホットライン

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950