โซลูชัน
โซลูชัน

คู่มือผู้ใช้สำหรับบอร์ดสาธิตเทอร์โมไพล์อินฟราเรดดิจิตอล SL-W-TRS-5.5Dx

2024-12-13 1652
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.6V เซ็นเซอร์มีการใช้พลังงานต่ำมาก ตัวเก็บประจุ 0.1uF ระหว่างกราวด์ของแหล่งจ่ายไฟก็เพียงพอ หากเซ็นเซอร์อยู่ห่างจากส่วนแหล่งจ่ายไฟค่อนข้างมาก อาจพิจารณาใช้ตัวเก็บประจุ 10uF เพิ่มเติมเพื่อให้แน่ใจว่าแหล่งจ่ายไฟมีเสถียรภาพและลดสัญญาณรบกวน

image.png 

 

 

3. คำอธิบายของบอร์ดสาธิตซีรีส์ SL-W-TRS-5.5Dx

 

3.1 บอร์ดสาธิตได้รับพลังงานจากซ็อกเก็ต Type-C และแรงดันไฟฟ้าของแหล่งจ่ายไฟสำหรับบอร์ดสาธิตคือ 5V เมื่อใช้งาน ให้เชื่อมต่อบอร์ดสาธิตกับพีซีผ่าน Type-C จากนั้นคุณจะสามารถดูผลลัพธ์บนหน้าจอได้ หากคุณต้องการแสดงข้อมูลผ่านพอร์ตซีเรียล คุณจะต้องติดตั้งโปรแกรมไดรเวอร์ WCH CH340 จากนั้นใช้ซอฟต์แวร์ดีบักพอร์ตซีเรียลเพื่อใช้งาน การตั้งค่าการสื่อสารพอร์ตซีเรียลมีดังนี้: อัตราบอด: 9600, บิตข้อมูล: 8, บิตหยุด: 1 และไม่มีการตรวจสอบพาริตี้

 

3.2 การแสดงผลบนหน้าจอของบอร์ดสาธิตจากบนลงล่างมีดังนี้: อุณหภูมิแวดล้อม (tamb), แรงดันเอาต์พุตของเซ็นเซอร์ (vtp_cor), อุณหภูมิวัตถุ (พื้นผิว) (tobj) และอุณหภูมิร่างกายมนุษย์ (tbdy) หน่วยของค่าอุณหภูมิข้างต้นคือ °C และหน่วยของแรงดันคือ μV โดยค่าสามค่าแรกเป็นค่าเอาต์พุตดั้งเดิมของอุปกรณ์ ค่าอุณหภูมิร่างกายคำนวณจากค่าดั้งเดิมโดยใช้อัลกอริทึมของบริษัทของเราและใช้สำหรับการอ้างอิงเท่านั้น ผู้ใช้สามารถประมวลผลข้อมูลโดยใช้อัลกอริทึมอุณหภูมิร่างกายของตนเองตามความต้องการ 

image.png 

เอฟเฟกต์การแสดงผลพอร์ตซีเรียล

 

 ตัวอย่างโปรแกรมบอร์ดสาธิตของซีรีย์ SL-W-TRS-5.5Dx

 

-

 // หลัก.c

 //////

 #กำหนดสำหรับลูกค้า

 #ifdef สำหรับลูกค้า

 #รวม "drv_uart.h"

 

#รวม "drv_i2c.h"

#รวม "drv_key.h"

#รวม "oled/oled.h"

#รวม "trs55d.h"

 

void ภายนอก SystemCoreClockupdate(void);

extern void delay_ms(int cnt);

 int main (โมฆะ)

{

ปุ่ม uint8_t;

 uint8_t รัน = 0x01;

 SystemCoreClockupdate()

หาก (SysTick_Config(SystemCoreClock / 1000))

ในขณะที่(1);

 uartInit() คำสั่ง

drv_i2c_init();

drv_key_init();

 

OLED_เริ่มต้น();

 OLED_รีเฟรช();

OLED_Clear()

OLED_ShowString(8,0,"จำนวน:",16,1);

OLED_ShowString(8,16,"ค่าเบี่ยงเบนมาตรฐาน:",16,1);

 OLED_แสดงจีน(8,32,0,16,1);

OLED_แสดงจีน(24,32,2,16,1);

OLED_แสดงจีน(40,32,3,16,1);

OLED_แสดงจีน(8,48,1,16,1);

 OLED_แสดงจีน(24,48,2,16,1);

OLED_แสดงจีน(40,48,3,16,1);

OLED_รีเฟรช();

uartSendString("SL-W-โปรแกรมสาธิต TRS-5.5Dx ");

ขณะที่(1) {

คีย์ = drv_key_read();

ในขณะที่ (drv_key_read())

ถ้า (คีย์) {

 วิ่ง = (วิ่ง)?0:1;

}

ถ้า (รัน) {

 TRS55D_อ่าน();

OLED_รีเฟรช();

}

ล่าช้า_ms(20);

}

}

 

-

 //trs55d.h

 //////

#IFNDef_TRS55D_H_ สำคัญ:

#กำหนด_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);

#เอนดิฟ

-

// trs55d.c

//////

#include

 #รวม "drv_i2c.h"

 #รวม "trs55d.h"

 #รวม "อุณหภูมิร่างกาย"

 ภายนอก uint8_t uartSendString(const char* buf);

ภายนอก void OLED_ShowString(uint8_t x, uint8_t y, const char * chr, uint8_t size1, uint8_t mode);

 ช่องว่างภายนอก 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 ฉัน = 0;

drv_i2c_เริ่มต้น();

drv_i2c_select_dev(เพิ่มdr_dev, DRV_I2C_OPWR)

 

drv_i2c_writebyte(เพิ่มreg);

 drv_i2c_เริ่มต้น();

drv_i2c_select_dev(เพิ่มdr_dev,DRV_I2C_OPRD)

สำหรับ (i = 0; i < count; i ++) { ackflag = (i < (count-1)) ? 1:0; buf[i]

 = drv_i2c_readbyte(รับทราบสถานะ);

 }

drv_i2c_stop();

 กลับ;

 }

 

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

 {

 uint16_t ฉัน = 0;

drv_i2c_เริ่มต้น();

drv_i2c_select_dev(เพิ่มdr_dev, DRV_I2C_OPWR)

drv_i2c_writebyte(เพิ่มreg);

 สำหรับ (i = 0; i < count; i++)

 { drv_i2c_writebyte(buf[i]);

}

drv_i2c_stop();

}

 สหภาพ typedef

int16_ที ไอ 16;

uint16_ต u16;

โครงสร้าง {

uint8_ต u8l;

uint8_t u8h;

 }อัน;

}uu16_ต;

 

สหภาพ typedef

int32_ที ไอ 32;

โครงสร้าง {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}อัน;

 }uu32_ต;

 

บัฟเฟอร์ถ่านแบบคงที่[264];

 uu32_t โทบีเจ, tamb_cal;

 

uu32_t vtp_cor;

ลอย vtp_uv_f = 0.0;

ลอย vtp_cor_f = 0.0;

float tambf = 0.0; float tobjf = 0.0;

 ลอย tbdyf = 0.0;

 TRS55D_read เป็นโมฆะ(เป็นโมฆะ)

{

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

 

// รอการแปลงเสร็จสิ้น

raddr = 0x03;

ทำ {

TRS55D_IIC_อ่าน (ADDR_TRS55D, raddr, &rdat,1);

} ในขณะที่(((rdat == 0xFF) || (!(rdat & 0x30))) && timeout++ < 200);

raddr = 0x02;

 ทำ {

TRS55D_IIC_อ่าน (ADDR_TRS55D, raddr, &rdat,1);

} ในขณะที่(((rdat == 0xFF) || (!(rdat & 0x0B))) && timeout++ < 200);

 

 //ค่าแรงดันไฟหลังการสอบเทียบ

raddr = TRS55D_NORMAL_DATA1_MSB_R;

TRS55D_IIC_อ่าน (ADDR_TRS55D, เรดาร์,&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;

} else {

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_อ่าน (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_อ่าน (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

 ค่า float[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, "ยูวี",16, 1);

OLED_ShowBNum (64, 32, vals[2], 4, 16, 1); // กำหนด

OLED_ShowBNum (64, 48, vals[3], 4, 16, 1); // สุดท้าย

}

คำแนะนำที่เกี่ยวข้อง
whatsapp

บริการสายด่วน

โทร: + 86 755 83044319

WhatsApp

Whatsapp: +8618073002950