خط تلفن خدمات
دفترچه راهنمای کاربر برای SL-W-TRS-5.5Dx Digital Infrared Thermopile Demo Board
SLKOR یک شرکت با فناوری پیشرفته است که طراحی، توسعه، تولید و فروش محصولات الکترونیکی را ادغام می کند. محصولات قابل اعتماد و خدمات فنی مربوطه را به مشتریان ارائه می دهد. نام تجاری "SLKOR"به تدریج به یک محصول بین المللی مشهور تبدیل شده است و محصولات و راه حل ها را به بیش از 10,000 مشتری در سراسر جهان ارائه می دهد.
در تلاش برای ارائه طیف کاملی از محصولات مکمل به مشتریان، SLKOR مجموعهای از کتابچههای راهنمای کاربر را برای بردهای آزمایشی طرحهای کاربردی اندازهگیری دمای غیر تماسی دماموبیل مادون قرمز دیجیتال راهاندازی کرده است.
1.1 نام: راهنمای کاربر برای SLKOR صفحه نمایش آزمایشی طراحی برنامه کاربردی اندازهگیری دمای غیر تماسی دماسنج مادون قرمز دیجیتال
1.2 برنامه: دستگاههای پوشیدنی هوشمند، تلفنهای هوشمند، نظارت بر دمای صنعتی، اندازهگیری دمای سطح بدن انسان بدون تماس، سنجش و کنترل هوشمند دما و سایر دستگاههای با اندازه کوچک برای اندازهگیری دمای کوتاه برد.
برد نمایشی 1.3 SL-W-TRS-5.5Dx Series:
برای ارزیابی و آزمایش انواع سنسورها استفاده می شود. نتایج اندازهگیری روی صفحه نمایش داده میشود و میتوان آن را از طریق پورت USB به سریال در نرمافزار اشکالزدایی پورت سریال رایانه شخصی چاپ کرد. توضیحات دکمه: دکمه سمت چپ برای تنظیم مجدد است و دکمه سمت راست می تواند شروع و توقف برنامه را کنترل کند.
2. طراحی سخت افزار سری SL-W-TRS-5.5Dx
پایه های تراشه شامل منبع تغذیه و گذرگاه I2C هستند که در مجموع 4 پایه دارند. محدوده مجاز ولتاژ تغذیه 2.3 - 3.6V است. خود سنسور مصرف برق بسیار کمی دارد. یک خازن 0.1uF بین زمین منبع تغذیه کافی است. اگر سنسور نسبتاً دور از قسمت منبع تغذیه باشد، می توان یک خازن 10uF اضافی برای اطمینان از منبع تغذیه پایدار و کاهش نویز در نظر گرفت.
3. توضیحات برد نمایشی سری SL-W-TRS-5.5Dx
3.1 برد دمو توسط یک سوکت نوع C تغذیه می شود و ولتاژ منبع تغذیه برای برد دمو 5 ولت است. هنگام استفاده، برد نمایشی را از طریق Type-C به رایانه شخصی متصل کنید و سپس می توانید نتایج را روی صفحه مشاهده کنید. اگر نیاز به نمایش داده ها از طریق پورت سریال دارید، باید برنامه درایور WCH CH340 را نصب کنید و سپس از نرم افزار اشکال زدایی پورت سریال برای کار استفاده کنید. تنظیمات ارتباط پورت سریال به شرح زیر است: نرخ Baud: 9600، بیت های داده: 8، بیت های توقف: 1، و بدون بررسی برابری.
3.2 نمایش صفحه نمایش برد دمو از بالا به پایین به شرح زیر است: دمای محیط (tamb)، ولتاژ خروجی سنسور (vtp_cor)، دمای جسم (سطح) (tobj) و دمای بدن انسان (tbdy). واحد مقادیر درجه حرارت بالا درجه سانتیگراد و واحد ولتاژ μV است. در میان آنها، سه مقدار اول خروجی های اصلی دستگاه هستند. مقدار دمای بدن بر اساس مقادیر اصلی با استفاده از الگوریتم شرکت ما محاسبه می شود و فقط برای مرجع است. کاربران می توانند داده ها را با استفاده از الگوریتم های دمای بدن خود بر اساس نیاز خود پردازش کنند.
جلوه نمایش پورت سریال
2. نمونه برنامه برد دمو سری SL-W-TRS-5.5Dx
///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// //
// main.c
//////
#define FOR_CUSTOMER
#ifdef برای_مشتری
#include "drv_uart.h"
#include "drv_i2c.h"
#include "drv_key.h"
#include "oled/oled.h"
#include "trs55d.h"
بهروزرسانی ساعت هسته سیستم (باطل) از نوع خارجی
extern void delay_ms(int cnt);
int main (void)
{
کلید 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) {
کلید = drv_key_read();
while(drv_key_read());
اگر (کلید) {
اجرا = (اجرا)؟0:1;
}
اگر (اجرا) {
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);
# اندیف
///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// //
// trs55d.c
//////
#include
#include "drv_i2c.h"
#include "trs55d.h"
#شامل "body_temp.h"
extern 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);
فضای خالی خارجی OLED_ShowBNum(uint8_t x, uint8_t y, float num, uint8_t len,
uint8_t size2، 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);
for(i = 0؛ i < شمارش؛ i ++) { ackflag = (i < (شمارش-1)) ? 1:0; بوف[i]
= drv_i2c_readbyte (ackflag);
}
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(addr_dev,DRV_I2C_OPWR);
drv_i2c_writebyte(addr_reg);
برای (i = 0؛ i < شمارش؛ i ++)
{ drv_i2c_writebyte(buf[i]);
}
drv_i2c_stop();
}
اتحادیه typedef{
int16_t i16;
uint16_t u16;
ساختار {
uint8_t u8l;
uint8_t u8h;
}un;
}u16_t;
اتحادیه typedef{
int32_t i32;
ساختار {
uint8_t u8b0;
uint8_t u8b1;
uint8_t u8b2;
uint8_t u8b3;
}un;
}u32_t;
بافر کاراکتر استاتیک[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))) && timeout++ < 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)؛ // Tbdy
}




粤公网安备44030002007346号