Service Hotline
מדריך למשתמש עבור לוח הדגמה של SL-W-TRS-5.5Dx דיגיטלי אינפרא אדום תרמופיל
SLKOR הוא מיזם הייטק המשלב עיצוב, פיתוח, ייצור ומכירה של מוצרים אלקטרוניים. היא מספקת ללקוחות מוצרים אמינים ושירותים טכניים מתאימים. המותג"SLKOR"התפתח בהדרגה לבעל שם בינלאומי, המציע מוצרים ופתרונות ליותר מ-10,000 לקוחות ברחבי העולם.
במאמץ לשאוף לספק ללקוחות מגוון שלם של מוצרים משלימים, SLKOR השיקה סדרה של מדריכים למשתמשים עבור לוחות הדגמה של עיצובי יישומי מדידת טמפרטורה ללא מגע אינפרא אדום דיגיטליים.
1.1 שם: מדריך למשתמש עבור SLKOR Digital Infrared Thermopile ללא מגע מדידת טמפרטורה יישום עיצוב הדגמה לוח
1.2 יישומים: מכשירים לבישים חכמים, טלפונים חכמים, ניטור טמפרטורה תעשייתי, מדידת טמפרטורת פני גוף האדם ללא מגע, חישה ובקרה חכמים של טמפרטורה ומכשירים קטנים אחרים למדידת טמפרטורה בטווח קצר.
לוח הדגמה 1.3 SL-W-TRS-5.5Dx:
הוא משמש להערכה ובדיקה של סוגים שונים של חיישנים. תוצאות המדידה יוצגו על המסך וניתן להדפיס אותן לתוכנת איתור באגים של יציאה טורית במחשב באמצעות USB ליציאה טורית. תיאור הכפתור: הכפתור השמאלי מיועד לאיפוס, והלחצן הימני יכול לשלוט בהתחלה והשהייה של התוכנית.
2. עיצוב חומרה של סדרת SL-W-TRS-5.5Dx
פיני השבבים כוללים ספק כוח ואוטובוס I2C, עם סך של 4 פינים. הטווח המותר של מתח האספקה הוא 2.3 - 3.6V. לחיישן עצמו צריכת חשמל נמוכה מאוד. מספיק קבל של 0.1uF בין הארקה של ספק הכוח. אם החיישן מרוחק יחסית מחלק אספקת החשמל, ניתן לשקול קבל נוסף של 10uF כדי להבטיח אספקת חשמל יציבה ולהפחית רעש.
3. תיאור לוח ההדגמה מסדרת SL-W-TRS-5.5Dx
3.1 לוח ההדגמה מופעל על ידי שקע Type-C, ומתח אספקת החשמל ללוח ההדגמה הוא 5V. בעת השימוש, חבר את לוח ההדגמה למחשב באמצעות Type-C, ולאחר מכן תוכל לצפות בתוצאות על המסך. אם אתה צריך להציג נתונים דרך היציאה הטורית, אתה נדרש להתקין את תוכנית מנהל ההתקן WCH CH340 ולאחר מכן להשתמש בתוכנת ניפוי באגים ביציאה טורית כדי לפעול. הגדרות התקשורת של היציאה הטורית הן כדלקמן: קצב Baud: 9600, סיביות נתונים: 8, סיביות עצירה: 1, וללא בדיקת זוגיות.
3.2 תצוגת המסך של לוח ההדגמה מלמעלה למטה היא כדלקמן: טמפרטורת הסביבה (tamb), מתח פלט החיישן (vtp_cor), טמפרטורת האובייקט (המשטח) (tobj), וטמפרטורת גוף האדם (tbdy). היחידה של ערכי הטמפרטורה לעיל היא °C, ויחידת המתח היא μV. ביניהם, שלושת הערכים הראשונים הם הפלטים המקוריים של המכשיר. ערך טמפרטורת הגוף מחושב על סמך הערכים המקוריים באמצעות האלגוריתם של החברה שלנו והוא לעיון בלבד. משתמשים יכולים לעבד את הנתונים באמצעות אלגוריתמים משלהם של טמפרטורת הגוף בהתאם לצרכיהם.
אפקט תצוגת יציאה טורית
2. דוגמה לתוכנית לוח הדגמה של סדרת SL-W-TRS-5.5Dx
/////////////////////////////////////////////// /////////////////////////////////////////////// //
// main.c
//////
#define FOR_CUSTOMER
#ifdef FOR_CUSTOMER
#include "drv_uart.h"
#include "drv_i2c.h"
#include "drv_key.h"
#include "oled/oled.h"
#include "trs55d.h"
חלל חיצוני SystemCoreClockupdate (חלל);
extern void delay_ms(int cnt);
int main (חלל)
{
מפתח uint8_t;
uint8_t run = 0x01;
עדכוןשעוןליבתמערכת();
if (SysTick_Config(SystemCoreClock / 1000))
while(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");
while(1) {
key = drv_key_read();
while(drv_key_read());
אם (מפתח) {
run = (run)?0:1;
}
if (רוץ) {
TRS55D_read();
OLED_Refresh();
}
delay_ms(20);
}
}
/////////////////////////////////////////////// /////////////////////////////////////////////// //
//trs55d.h
//////
#ifndef _TRS55D_H_
#define _TRS55D_H_
#include
#define TRS55D_NORMAL_Tobj_MSB_R 0x10
#define TRS55D_NORMAL_Tobj_CSB_R 0x11
#define TRS55D_NORMAL_Tobj_LSB_R 0x12
#define TRS55D_NORMAL_TEMP_MSB_R 0x16
#define TRS55D_NORMAL_TEMP_CSB_R 0x17
#define TRS55D_NORMAL_TEMP_LSB_R 0x18
#define TRS55D_NORMAL_DATA1_MSB_R 0x19
#define TRS55D_NORMAL_DATA1_CSB_R 0x1A
#define TRS55D_NORMAL_DATA1_LSB_R 0x1B
#define TRS55D_NORMAL_DATA2_MSB_R 0x1C
#define TRS55D_NORMAL_DATA2_CSB_R 0x1D
#define TRS55D_NORMAL_DATA2_LSB_R 0x1E
#define TRS55D_RAW_DATA1_MSB_R 0x22
#define TRS55D_RAW_DATA1_CSB_R 0x23
#define TRS55D_RAW_DATA1_LSB_R 0x24
#define TRS55D_RAW_DATA2_MSB_R 0x25
#define TRS55D_RAW_DATA2_CSB_R 0x26
#define TRS55D_RAW_DATA2_LSB_R 0x27
#define TRS55D_RAW_TEMP_MSB_R 0x28
#define TRS55D_RAW_TEMP_CSB_R 0x29
#define TRS55D_RAW_TEMP_LSB_R 0x2A
#define 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"
extern 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 size2,uint8_t mode); uint8_t TRS55D_IIC_Read(uint8_t addr_dev, uint8_t addr_reg,
uint8_t *buf, uint16_t count)
{
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);
for(i = 0; i < count; i ++) { ackflag = (i < (count-1)) ? 1:0; buff[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 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();
}
typedef union{
int16_t i16;
uint16_t u16;
struct {
uint8_t u8l;
uint8_t u8h;
}בִּלתִי;
}uu16_t;
typedef union{
int32_t i32;
struct {
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;
float vtp_uv_f = 0.0;
float vtp_cor_f = 0.0;
float tambf = 0.0; float tobjf = 0.0;
float tbdyf = 0.0;
void TRS55D_read(void)
{
uint8_t rbuf[4];
uint8_t raddr,rdat;
uint8_t waddr = 0x0, wdat = 0x0;
int timeout=0;
waddr = 0x30;
wdat = 0x09;
TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);
//התחל המרה delay_ms(100);
// המתן לסיום ההמרה
raddr = 0x03;
עשה {
TRS55D_IIC_Read (ADDR_TRS55D, raddr, &rdat,1);
} while(((rdat == 0xFF) || (!(rdat & 0x30))) && timeout++ < 200);
raddr = 0x02;
עשה {
TRS55D_IIC_Read (ADDR_TRS55D, raddr, &rdat,1);
} while(((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];
if (vtp_cor.un.u8b2 & 0x80) { vtp_cor.un.u8b3 = 0xFF;
} אחר {
vtp_cor.un.u8b3 = 0x00;
// vtp לאחר תיקון
}
vtp_cor_f = (float)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 = (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
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); // טובג'
OLED_ShowBNum (64, 48, vals[3], 4, 16, 1); // תבדי
}




粤公网安备44030002007346号