أخبار
أخبار
دليل المستخدم للوحة العرض التوضيحية للقياس الحراري بالأشعة تحت الحمراء الرقمية SL-W-TRS-5.5Dx
2024-12-13 1849
SLKOR شركة مايكرو سيميكون المحدودة تتمتع الشركة بأساسيات تقنية مستمدة من جامعة تسينغهوا وجامعة يونسي في كوريا الجنوبية. وهي تقود تطوير الشركة باستخدام مواد جديدة وعمليات جديدة ومنتجات جديدة، كما أتقنت في وقت مبكر نسبيًا التكنولوجيا المتقدمة دوليًا لأجهزة الطاقة المصنوعة من كربيد السيليكون أشباه الموصلات من الجيل الثالث.

 

SLKOR هي مؤسسة ذات تكنولوجيا عالية تجمع بين تصميم وتطوير وإنتاج وبيع المنتجات الإلكترونية. وهي توفر للعملاء منتجات موثوقة وخدمات تقنية مقابلة. العلامة التجارية "SLKOR"تطورت الشركة تدريجياً لتصبح شركة مشهورة دولياً، حيث تقدم المنتجات والحلول لأكثر من 10,000 عميل حول العالم.

 

في إطار الجهود المبذولة لتزويد العملاء بمجموعة كاملة من المنتجات التكميلية، SLKOR أطلقت سلسلة من أدلة المستخدم للوحات التجريبية لتصميمات تطبيق قياس درجة الحرارة غير التلامسية باستخدام الأشعة تحت الحمراء الرقمية.

 

1.1 الاسم:دليل المستخدم لـ SLKOR لوحة عرض تصميم تطبيق قياس درجة الحرارة بدون تلامس باستخدام الأشعة تحت الحمراء الرقمية

تطبيقات 1.2:الأجهزة الذكية القابلة للارتداء، والهواتف الذكية، ومراقبة درجة الحرارة الصناعية، وقياس درجة حرارة سطح جسم الإنسان بدون تلامس، والاستشعار الذكي والتحكم في درجة الحرارة وغيرها من الأجهزة صغيرة الحجم لقياس درجة الحرارة على المدى القصير.

لوحة العرض التوضيحية لسلسلة 1.3 SL-W-TRS-5.5Dx:

يُستخدم في تقييم واختبار أنواع مختلفة من المستشعرات. سيتم عرض نتائج القياس على الشاشة ويمكن طباعتها إلى برنامج تصحيح أخطاء المنفذ التسلسلي على الكمبيوتر الشخصي عبر منفذ USB إلى المنفذ التسلسلي. وصف الزر: الزر الأيسر لإعادة الضبط، ويمكن للزر الأيمن التحكم في بدء البرنامج وإيقافه مؤقتًا.

image.png 

2. تصميم الأجهزة لسلسلة SL-W-TRS-5.5Dx

 

تتضمن دبابيس الشريحة مصدر الطاقة وناقل I2C، بإجمالي 4 دبابيس. النطاق المسموح به لجهد الإمداد هو 2.3 - 3.6 فولت. يستهلك المستشعر نفسه طاقة منخفضة للغاية. يكفي مكثف 0.1 ميكروفاراد بين أرض مصدر الطاقة. إذا كان المستشعر بعيدًا نسبيًا عن جزء مصدر الطاقة، فيمكن اعتبار مكثف إضافي 10 ميكروفاراد لضمان إمداد طاقة مستقر وتقليل الضوضاء.

image.png 

 

 

3. وصف لوحة العرض التوضيحية لسلسلة SL-W-TRS-5.5Dx

 

3.1 تعمل لوحة العرض التوضيحي بمقبس من النوع C، ويبلغ جهد مصدر الطاقة للوحة العرض التوضيحي 5 فولت. عند الاستخدام، قم بتوصيل لوحة العرض التوضيحي بالكمبيوتر الشخصي عبر النوع C، ثم يمكنك عرض النتائج على الشاشة. إذا كنت بحاجة إلى عرض البيانات من خلال المنفذ التسلسلي، فيجب عليك تثبيت برنامج تشغيل WCH CH340 ثم استخدام برنامج تصحيح أخطاء المنفذ التسلسلي للتشغيل. إعدادات اتصال المنفذ التسلسلي هي كما يلي: معدل الباود: 9600، بتات البيانات: 8، بتات التوقف: 1، ولا يوجد فحص للتكافؤ.

 

3.2 عرض شاشة لوحة العرض التوضيحية من الأعلى إلى الأسفل هو كما يلي: درجة الحرارة المحيطة (tamb)، وجهد خرج المستشعر (vtp_cor)، ودرجة حرارة الجسم (السطح) (tobj)، ودرجة حرارة جسم الإنسان (tbdy). وحدة قيم درجة الحرارة أعلاه هي درجة مئوية، ووحدة الجهد هي μV. ومن بينها، القيم الثلاث الأولى هي المخرجات الأصلية للجهاز. يتم حساب قيمة درجة حرارة الجسم بناءً على القيم الأصلية باستخدام خوارزمية شركتنا وهي للإشارة فقط. يمكن للمستخدمين معالجة البيانات باستخدام خوارزميات درجة حرارة الجسم الخاصة بهم وفقًا لاحتياجاتهم. 

image.png 

تأثير عرض المنفذ التسلسلي

 

 2. مثال على برنامج لوحة العرض التوضيحية لسلسلة SL-W-TRS-5.5Dx

 

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

 // main.c

 //////

 #تعريف للعميل

 #ifdef للعميل

 #تضمين "drv_uart.h"

 

#تضمين "drv_i2c.h"

#تضمين "drv_key.h"

#تضمين "oled/oled.h"

#تضمين "trs55d.h"

 

خارجي void SystemCoreClockupdate(void);

خارجي void delay_ms(int cnt);

 int الرئيسي (باطل)

{

مفتاح uint8_t؛

 uint8_t تشغيل = 0x01؛

 تحديث ساعة النظام الأساسية();

إذا (SysTick_Config(SystemCoreClock / 1000))

بينما(1);

 uartInit();

drv_i2c_init();

مفتاح_الدكتور_البداية();

 

OLED_Init();

 تحديث OLED();

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();

"uartSendString("SL-W-برنامج تجريبي TRS-5.5Dx ");

بينما(1) {

المفتاح = drv_key_read();

بينما(drv_key_read());

إذا (المفتاح) {

 تشغيل = (تشغيل)؟ 0:1؛

}

إذا (تشغيل) {

 TRS55D_قراءة();

تحديث OLED();

}

delay_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_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 void TRS55D_read(void);

#endif

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

// trs55d.c

//////

تتضمن #

 #تضمين "drv_i2c.h"

 #تضمين "trs55d.h"

 #تضمين "body_temp.h"

 خارجي uint8_t uartSendString(const char* buf);

خارجي void OLED_ShowString(uint8_t x، uint8_t y، ثابت char *chr، uint8_t الحجم 1، uint8_t الوضع)؛

 خارجي void OLED_ShowBNum(uint8_t x، uint8_t y، رقم عائم، 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 < count؛ i ++) { ackflag = (i < (count-1)) ? 1:0؛ buf[i]

 = drv_i2c_readbyte(علامة الإرجاع)؛

 }

drv_i2c_stop();

 عودة متقاعد؛

 }

 

لاغية 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);

 بالنسبة إلى (i = 0؛ i < count؛ 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؛

 

مخزن أحرف ثابت[264]؛

 uu32_t توبج، تامب_كال؛

 

uu32_t vtp_cor؛

تعويم vtp_uv_f = 0.0؛

تعويم vtp_cor_f = 0.0؛

تعويم tambf = 0.0؛ تعويم tobjf = 0.0؛

 تعويم tbdyf = 0.0؛

 باطل TRS55D_read(باطل)

{

uint8_t rbuf[4]؛

uint8_t raddr،rdat؛

 uint8_t waddr = 0x0، wdat = 0x0؛

وقت الانتظار = 0؛

 

وادر = 0x30؛

وات = 0x09؛

TRS55D_IIC_Write(ADDR_TRS55D، waddr، &wdat، 1)؛

 //بدء التحويل delay_ms(100);

 

//انتظر التحويل

رادر = 0x03؛

افعل

قراءة TRS55D_IIC (ADDR_TRS55D، raddr، &rdat، 1)؛

} بينما (((rdat == 0xFF) || (!(rdat & 0x30))) && مهلة++ < 200);

رادر = 0x02؛

 افعل

قراءة TRS55D_IIC (ADDR_TRS55D، raddr، &rdat، 1)؛

} بينما (((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]؛

 إذا (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_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; // درجة الحرارة المحيطة

 

// درجة حرارة الجسم (السطح) بعد المعايرة

رادر = 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(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(buffer);

 

// عرض على شاشة OLED

 تعويم القيم [4] = {tambf، vtp_cor_f، tobjf، tbdyf + 0.05}؛

 OLED_ShowBNum (64، 0، فالس [0]، 4، 16، 1)؛ // تامب

OLED_ShowBNum (48، 16، القيم [1]، 6، 16، 1)؛ // vtp

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

OLED_ShowBNum (64، 32، القيم [2]، 4، 16، 1)؛ // Tobj

OLED_ShowBNum (64، 48، القيم [3]، 4، 16، 1)؛ // سيتم تحديده لاحقًا

}

whatsapp

الخط الساخن للخدمة

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950