Talian Khidmat
Manual Pengguna untuk Papan Demo Termopile Inframerah Digital SL-W-TRS-5.5Dx
SLKOR ialah perusahaan berteknologi tinggi yang mengintegrasikan reka bentuk, pembangunan, pengeluaran dan penjualan produk elektronik. Ia menyediakan pelanggan dengan produk yang boleh dipercayai dan perkhidmatan teknikal yang sepadan. Jenama "SLKOR" telah berkembang secara beransur-ansur menjadi terkenal di peringkat antarabangsa, menawarkan produk dan penyelesaian kepada lebih 10,000 pelanggan di seluruh dunia.
Dalam usaha untuk berusaha untuk menyediakan pelanggan dengan rangkaian penuh produk pelengkap, SLKOR telah melancarkan satu siri manual pengguna untuk papan demo reka bentuk aplikasi pengukuran suhu bukan sentuhan termopile inframerah digital.
1.1 Nama: Manual Pengguna untuk SLKOR Papan Demo Reka Bentuk Aplikasi Pengukuran Suhu Tanpa Sentuhan Termopile Inframerah Digital
1.2 Aplikasi: Peranti boleh pakai pintar, telefon pintar, pemantauan suhu industri, pengukuran suhu permukaan badan manusia tanpa sentuhan, penderiaan dan kawalan suhu pintar dan peranti bersaiz kecil lain untuk pengukuran suhu jarak dekat.
1.3 Papan Demo Siri SL-W-TRS-5.5Dx:
Ia digunakan untuk penilaian dan ujian pelbagai jenis sensor. Hasil pengukuran akan dipaparkan pada skrin dan boleh dicetak ke perisian debugging port bersiri pada PC melalui USB ke port bersiri. Perihalan butang: Butang kiri adalah untuk menetapkan semula, dan butang kanan boleh mengawal permulaan dan jeda program.
2. Reka Bentuk Perkakasan Siri SL-W-TRS-5.5Dx
Pin cip termasuk bekalan kuasa dan bas I2C, dengan jumlah 4 pin. Julat voltan bekalan yang dibenarkan ialah 2.3 - 3.6V. Sensor itu sendiri mempunyai penggunaan kuasa yang sangat rendah. Kapasitor 0.1uF di antara tanah bekalan kuasa adalah mencukupi. Jika sensor agak jauh dari bahagian bekalan kuasa, kapasitor 10uF tambahan boleh dipertimbangkan untuk memastikan bekalan kuasa stabil dan mengurangkan bunyi.
3. Perihalan Papan Demo Siri SL-W-TRS-5.5Dx
3.1 Papan tunjuk cara dikuasakan oleh soket Jenis-C, dan voltan bekalan kuasa untuk papan tunjuk cara ialah 5V. Apabila digunakan, sambungkan papan demo ke PC melalui Jenis-C, dan kemudian anda boleh melihat hasilnya pada skrin. Jika anda perlu memaparkan data melalui port bersiri, anda dikehendaki memasang program pemacu WCH CH340 dan kemudian menggunakan perisian debugging port bersiri untuk beroperasi. Tetapan komunikasi port bersiri adalah seperti berikut: Kadar baud: 9600, Bit data: 8, Bit henti: 1, dan tiada semakan pariti.
3.2 Paparan skrin papan demo dari atas ke bawah adalah seperti berikut: suhu ambien (tamb), voltan keluaran sensor (vtp_cor), suhu objek (permukaan) (tobj), dan suhu badan manusia (tbdy). Unit nilai suhu di atas ialah °C, dan unit voltan ialah μV. Antaranya, tiga nilai pertama ialah output asal peranti. Nilai suhu badan dikira berdasarkan nilai asal menggunakan algoritma syarikat kami dan adalah untuk rujukan sahaja. Pengguna boleh memproses data menggunakan algoritma suhu badan mereka sendiri mengikut keperluan mereka.
Kesan paparan port bersiri
2. Contoh program papan demo siri SL-W-TRS-5.5Dx
/////////////////////////////////////////////// /////////////////////////////////////////////// //
// utama.c
//////
#define FOR_CUSTOMER
#ifdef UNTUK_PELANGGAN
#include "drv_uart.h"
#include "drv_i2c.h"
#include "drv_key.h"
#include "oled/oled.h"
#include "trs55d.h"
extern void SystemCoreClockupdate(void);
extern void delay_ms(int cnt);
int utama (tidak sah)
{
kunci uint8_t;
uint8_t run = 0x01;
SystemCoreClockupdate();
jika (SysTick_Config(SystemCoreClock / 1000))
manakala(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 Program Demo ");
manakala(1) {
kunci = drv_key_read();
while(drv_key_read());
jika (kunci) {
lari = (lari)?0:1;
}
jika (lari) {
TRS55D_read();
OLED_Refresh();
}
kelewatan_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);
extern void OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t size1,uint8_t mod);
extern void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,
saiz uint8_t2, mod uint8_t); uint8_t TRS55D_IIC_Read(uint8_t addr_dev, uint8_t addr_reg,
uint8_t *buf, kiraan 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 <count; i ++) { ackflag = (i < (count-1)) ? 1:0; buf[i]
= drv_i2c_readbyte(ackflag);
}
drv_i2c_stop();
pulang ret;
}
batal 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);
untuk (i = 0; i <kiraan; i ++)
{ drv_i2c_writebyte(buf[i]);
}
drv_i2c_stop();
}
kesatuan typedef{
int16_t i16;
uint16_t u16;
struct {
uint8_t u8l;
uint8_t u8h;
}un;
}uu16_t;
kesatuan typedef{
int32_t i32;
struct {
uint8_t u8b0;
uint8_t u8b1;
uint8_t u8b2;
uint8_t u8b3;
}un;
}uu32_t;
penimbal char statik[264];
uu32_t tobj, tamb_cal;
uu32_t vtp_cor;
apungan vtp_uv_f = 0.0;
float vtp_cor_f = 0.0;
apungan tambf = 0.0; terapung tobjf = 0.0;
terapung tbdyf = 0.0;
batal TRS55D_read(void)
{
uint8_t rbuf[4];
uint8_t raddr,rdat;
uint8_t waddr = 0x0, wdat = 0x0;
int tamat masa=0;
waddr = 0x30;
wdat = 0x09;
TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);
//mula penukaran delay_ms(100);
// tunggu penukaran tamat
raddr = 0x03;
buat {
TRS55D_IIC_Read (ADDR_TRS55D, raddr, &rdat,1);
} while(((rdat == 0xFF) || (!(rdat & 0x30))) && tamat masa++ < 200);
raddr = 0x02;
buat {
TRS55D_IIC_Read (ADDR_TRS55D, raddr, &rdat,1);
} while(((rdat == 0xFF) || (!(rdat & 0x0B))) && tamat masa++ < 200);
// nilai voltan selepas penentukuran
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];
jika (vtp_cor.un.u8b2 & 0x80) { vtp_cor.un.u8b3 = 0xFF;
} lain {
vtp_cor.un.u8b3 = 0x00;
// vtp selepas diperbetulkan
}
vtp_cor_f = (float)vtp_cor.i32/524288.0;
vtp_cor_f *= 1000;
// nilai suhu ambien selepas penentukuran
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; // suhu persekitaran
// suhu objek (permukaan) selepas penentukuran
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;
// suhu objek (permukaan).
// dapatkan suhu badan
tbdyf = get_body_temp(tambf,tobjf); // dapatkan suhu badan
// paparan pada uart sprintf(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(penampan);
// paparan pada oled
float vals[4] = {tambf, vtp_cor_f, tobjf, tbdyf+0.05};
OLED_ShowBNum (64, 0, vals[0], 4, 16, 1); // Tamb
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
}




粤公网安备44030002007346号