समाधान
समाधान

SL-W-TRS-5.5Dx डिजिटल इन्फ्रारेड थर्मोपाइल डेमो बोर्डको लागि प्रयोगकर्ता पुस्तिका

2024-12-13 1646
SLKOR माइक्रो सेमिकन कं, लिमिटेड, यसको प्राविधिक ब्याकबोनहरू दक्षिण कोरियाको Tsinghua विश्वविद्यालय र Yonsei विश्वविद्यालयबाट आउँछन्। यसले नयाँ सामग्रीहरू, नयाँ प्रक्रियाहरू र नयाँ उत्पादनहरूका साथ कम्पनीको विकासको नेतृत्व गर्दछ, र तेस्रो-पुस्ताको सेमीकन्डक्टर सिलिकन कार्बाइड पावर उपकरणहरूको अन्तर्राष्ट्रिय रूपमा उन्नत टेक्नोलोजीमा अपेक्षाकृत चाँडै महारत हासिल गरेको छ।

 

SLKOR इलेक्ट्रोनिक उत्पादनहरूको डिजाइन, विकास, उत्पादन र बिक्रीलाई एकीकृत गर्ने उच्च-टेक उद्यम हो। यसले ग्राहकहरूलाई भरपर्दो उत्पादनहरू र सम्बन्धित प्राविधिक सेवाहरू प्रदान गर्दछ। ब्रान्ड "SLKOR"विस्तारै बिस्तारै एक अन्तर्राष्ट्रिय प्रसिद्ध एक मा विकसित भएको छ, विश्वव्यापी 10,000 भन्दा बढी ग्राहकहरु लाई उत्पादनहरु र समाधानहरु प्रदान गर्दै।

 

ग्राहकहरूलाई पूरक उत्पादनहरूको पूर्ण दायरा प्रदान गर्ने प्रयासमा, SLKOR डिजिटल इन्फ्रारेड थर्मोपाइल गैर-सम्पर्क तापमान मापन अनुप्रयोग डिजाइनहरूको डेमो बोर्डहरूको लागि प्रयोगकर्ता पुस्तिकाहरूको एक श्रृंखला सुरू गरेको छ।

 

१ नाम: को लागी प्रयोगकर्ता पुस्तिका SLKOR डिजिटल इन्फ्रारेड थर्मोपाइल गैर-सम्पर्क तापमान मापन आवेदन डिजाइन डेमो बोर्ड

२.1.2 अनुप्रयोगहरू: स्मार्ट पहिरन योग्य उपकरणहरू, स्मार्ट फोनहरू, औद्योगिक तापक्रम अनुगमन, सम्पर्कविहीन मानव शरीरको सतहको तापक्रम मापन, बुद्धिमानी तापक्रम सेन्सिङ र नियन्त्रण र छोटो दूरीको तापक्रम मापनका लागि अन्य साना आकारका उपकरणहरू।

1.3 SL-W-TRS-5.5Dx श्रृंखला डेमो बोर्ड:

यो विभिन्न प्रकारका सेन्सरहरूको मूल्याङ्कन र परीक्षणको लागि प्रयोग गरिन्छ। मापन परिणामहरू स्क्रिनमा प्रदर्शित हुनेछन् र USB मार्फत सिरियल पोर्टमा पीसीमा सिरियल पोर्ट डिबगिङ सफ्टवेयरमा प्रिन्ट गर्न सकिन्छ। बटन विवरण: बायाँ बटन रिसेटको लागि हो, र दायाँ बटनले कार्यक्रमको सुरुवात र पज नियन्त्रण गर्न सक्छ।

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 डेमो बोर्ड टाइप-सी सकेटद्वारा संचालित छ, र डेमो बोर्डको लागि पावर सप्लाई भोल्टेज 5V छ। प्रयोगमा हुँदा, टाइप-सी मार्फत पीसीमा डेमो बोर्ड जडान गर्नुहोस्, र त्यसपछि तपाईंले स्क्रिनमा परिणामहरू हेर्न सक्नुहुन्छ। यदि तपाइँ सिरियल पोर्ट मार्फत डेटा प्रदर्शन गर्न आवश्यक छ भने, तपाइँलाई WCH CH340 ड्राइभर प्रोग्राम स्थापना गर्न आवश्यक छ र त्यसपछि सञ्चालन गर्न सिरियल पोर्ट डिबगिङ सफ्टवेयर प्रयोग गर्नुहोस्। सिरियल पोर्ट संचार सेटिङहरू निम्नानुसार छन्: बाउड दर: 9600, डाटा बिट: 8, स्टप बिट: 1, र कुनै समानता जाँच छैन।

 

3.2 माथि देखि तल सम्म डेमो बोर्ड को स्क्रिन प्रदर्शन निम्नानुसार छ: परिवेश तापमान (tamb), सेन्सर आउटपुट भोल्टेज (vtp_cor), वस्तु (सतह) तापमान (tobj), र मानव शरीरको तापमान (tbdy)। माथिको तापमान मानहरूको एकाइ °C हो, र भोल्टेजको एकाइ μV हो। तिनीहरू मध्ये, पहिलो तीन मानहरू यन्त्रको मूल आउटपुटहरू हुन्। शरीरको तापक्रम मान हाम्रो कम्पनीको एल्गोरिथ्म प्रयोग गरेर मूल मानहरूमा आधारित गणना गरिन्छ र सन्दर्भको लागि मात्र हो। प्रयोगकर्ताहरूले आफ्नो आवश्यकता अनुसार आफ्नो शरीरको तापक्रम एल्गोरिदम प्रयोग गरेर डाटा प्रशोधन गर्न सक्छन्। 

image.png 

सीरियल पोर्ट प्रदर्शन प्रभाव

 

 १ SL-W-TRS-5.5Dx श्रृंखला को डेमो बोर्ड कार्यक्रम उदाहरण

 

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

 // main.c

 //////

 # FOR_CUSTOMER परिभाषित गर्नुहोस्

 #ifdef FOR_CUSTOMER

 # "drv_uart.h" समावेश गर्नुहोस्

 

# "drv_i2c.h" समावेश गर्नुहोस्

# "drv_key.h" समावेश गर्नुहोस्

# "oled/oled.h" समावेश गर्नुहोस्

# "trs55d.h" समावेश गर्नुहोस्

 

बाह्य शून्य प्रणाली कोरक्लकअपडेट(शून्य);

extern void delay_ms(int cnt);

 int मुख्य (शून्य)

{

uint8_t कुञ्जी;

 uint8_t रन = 0x01;

 सिस्टमकोरक्लकअपडेट();

यदि (SysTick_Config(SystemCoreClock / 1000))

जबकि (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 डेमो कार्यक्रम ");

जबकि (१) {

key = drv_key_read();

जबकि(drv_key_read());

यदि (कुञ्जी) {

 रन = (दौड)? ०:१;

}

यदि (दौड) {

 TRS55D_read();

OLED_Refresh();

}

delay_ms(20);

}

}

 

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

 //trs55d.h

 //////

#ifndef _TRS55D_H_

#परिभाषित _TRS55D_H_

# समावेश गर्नुहोस्

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

 #परिभाषित _STATUS_DRDY_ 0x01 शून्य TRS55D_read(void);

#अन्त्य

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

// trs55d.c

//////

# समावेश गर्नुहोस्

 # "drv_i2c.h" समावेश गर्नुहोस्

 # "trs55d.h" समावेश गर्नुहोस्

 # "body_temp.h" समावेश गर्नुहोस्

 extern uint8_t uartSendString(const char* buf);

बाह्य शून्य OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t size1,uint8_t मोड);

 बाह्य शून्य 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 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);

को लागी (i = 0; i < गणना; i ++) { ackflag = (i < (count-1)) ? १:०; बफ [i]

 = drv_i2c_readbyte(ackflag);

 }

drv_i2c_stop();

 रिटर्न रिटर्न;

 }

 

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(addr_dev,DRV_I2C_OPWR);

drv_i2c_writebyte(addr_reg);

 को लागी (i = 0; i < गणना; i ++)

 { drv_i2c_writebyte(buf[i]);

}

drv_i2c_stop();

}

 टाइपडेफ युनियन{

int16_t i16;

uint16_t u16;

संरचना {

uint8_t u8l;

uint8_t u8h;

 }अन;

}uu16_t;

 

टाइपडेफ युनियन{

int32_t i32;

संरचना {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}अन;

 }uu32_t;

 

स्थिर चार बफर [२६४];

 uu32_t tobj, tamb_cal;

 

uu32_t vtp_cor;

फ्लोट vtp_uv_f = 0.0;

फ्लोट vtp_cor_f = 0.0;

फ्लोट tambf = 0.0; फ्लोट tobjf = ०.०;

 फ्लोट tbdyf = ०.०;

 void TRS55D_read(void)

{

uint8_t rbuf [४];

uint8_t raddr,rdat;

 uint8_t waddr = 0x0, wdat = 0x0;

int टाइमआउट = 0;

 

wadr = 0x30;

wdat = 0x09;

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

 // रूपान्तरण सुरु delay_ms(100);

 

// रूपान्तरणको लागि पर्खनुहोस्

raddr = 0x03;

गर {

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

} जबकि((rdat == 0xFF) || (!(rdat र 0x30)) && टाइमआउट++ <200);

raddr = 0x02;

 गर {

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

} जबकि(((rdat == 0xFF) || (!(rdat र 0x0B))) && टाइमआउट++ <200);

 

 // क्यालिब्रेसन पछि भोल्टेज मान

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

 यदि (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;

// क्यालिब्रेसन पछि परिवेश तापमान मान

 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 = (फ्लोट) 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 = (फ्लोट) tobj.i32 / 16384.0;

// वस्तु (सतह) तापमान

 

// शरीरको ताप प्राप्त गर्नुहोस्

tbdyf = get_body_temp(tambf,tobjf); // शरीरको ताप प्राप्त गर्नुहोस्

 

// uart sprintf मा प्रदर्शन गर्नुहोस् (बफर, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(बफर);

 

// oled मा प्रदर्शन

 float 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); // Tbdy

}

सम्बन्धित सिफारिसहरू
WhatsApp

WhatsApp

व्हाट्सएप: +8618073002950१XNUMX२XNUMX .XNUMX०XNUMX०XNUMX।