Solusi
Solusi

Panduan Pengguna untuk Papan Demo Termopile Inframerah Digital SL-W-TRS-5.5Dx

2024-12-13 1849
SLKOR Mikro Semikon Co., Ltd., memiliki tulang punggung teknis yang berasal dari Universitas Tsinghua dan Universitas Yonsei di Korea Selatan. Perusahaan ini memimpin pengembangan perusahaan dengan material baru, proses baru, dan produk baru, serta menguasai teknologi canggih internasional dari perangkat daya silikon karbida semikonduktor generasi ketiga relatif awal.

 

SLKOR adalah perusahaan teknologi tinggi yang mengintegrasikan desain, pengembangan, produksi, dan penjualan produk elektronik. Perusahaan ini menyediakan produk yang andal dan layanan teknis yang sesuai kepada pelanggan. Merek "SLKOR"secara bertahap telah berkembang menjadi perusahaan terkenal secara internasional, menawarkan produk dan solusi kepada lebih dari 10,000 pelanggan di seluruh dunia.

 

Dalam upaya untuk berusaha menyediakan pelanggan dengan berbagai macam produk pelengkap, SLKOR telah meluncurkan serangkaian panduan pengguna untuk papan demo desain aplikasi pengukuran suhu non-kontak termopil inframerah digital.

 

1.1 Nama: Panduan Pengguna untuk SLKOR Papan Demo Desain Aplikasi Pengukuran Suhu Non-kontak Termopile Inframerah Digital

1.2 Aplikasi: Perangkat pintar yang dapat dikenakan, telepon pintar, pemantauan suhu industri, pengukuran suhu permukaan tubuh manusia tanpa kontak, penginderaan dan kontrol suhu cerdas, serta perangkat berukuran kecil lainnya untuk pengukuran suhu jarak pendek.

Papan Demo Seri 1.3 SL-W-TRS-5.5Dx:

Digunakan untuk evaluasi dan pengujian berbagai jenis sensor. Hasil pengukuran akan ditampilkan di layar dan dapat dicetak ke perangkat lunak debugging port serial di PC melalui USB ke port serial. Deskripsi tombol: Tombol kiri untuk mengatur ulang, dan tombol kanan dapat mengontrol mulai dan jeda program.

image.png 

2. Desain Perangkat Keras Seri SL-W-TRS-5.5Dx

 

Pin chip mencakup catu daya dan bus I2C, dengan total 4 pin. Rentang tegangan catu yang diizinkan adalah 2.3 - 3.6V. Sensor itu sendiri memiliki konsumsi daya yang sangat rendah. Kapasitor 0.1uF di antara ground catu daya sudah cukup. Jika sensor relatif jauh dari bagian catu daya, kapasitor 10uF tambahan dapat dipertimbangkan untuk memastikan catu daya yang stabil dan mengurangi gangguan.

image.png 

 

 

3. Deskripsi Papan Demo Seri SL-W-TRS-5.5Dx

 

3.1 Papan demo ditenagai oleh soket Tipe-C, dan tegangan catu daya untuk papan demo adalah 5V. Saat digunakan, sambungkan papan demo ke PC melalui Tipe-C, lalu Anda dapat melihat hasilnya di layar. Jika Anda perlu menampilkan data melalui port serial, Anda diharuskan menginstal program driver WCH CH340 lalu menggunakan perangkat lunak debugging port serial untuk mengoperasikannya. Pengaturan komunikasi port serial adalah sebagai berikut: Baud rate: 9600, Data bit: 8, Stop bit: 1, dan tidak ada pemeriksaan paritas.

 

3.2 Tampilan layar papan demo dari atas ke bawah adalah sebagai berikut: suhu sekitar (tamb), tegangan keluaran sensor (vtp_cor), suhu objek (permukaan) (tobj), dan suhu tubuh manusia (tbdy). Satuan nilai suhu di atas adalah °C, dan satuan tegangan adalah μV. Di antara ketiganya, tiga nilai pertama adalah keluaran asli perangkat. Nilai suhu tubuh dihitung berdasarkan nilai asli menggunakan algoritme perusahaan kami dan hanya untuk referensi. Pengguna dapat memproses data menggunakan algoritme suhu tubuh mereka sendiri sesuai dengan kebutuhan mereka. 

image.png 

Efek tampilan port serial

 

 2. Contoh program papan demo seri SL-W-TRS-5.5Dx

 

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

 // utama.c

 //////

 #define UNTUK_PELANGGAN

 #ifdef UNTUK_PELANGGAN

 #sertakan "drv_uart.h"

 

#sertakan "drv_i2c.h"

#sertakan "drv_key.h"

#sertakan "oled/oled.h"

#sertakan "trs55d.h"

 

eksternal void SystemCoreClockupdate(void);

eksternal void delay_ms(int cnt);

 int main (void)

{

uint8_t kunci;

 uint8_t dijalankan = 0x01;

 SystemCoreClockupdate();

jika (SysTick_Config(SystemCoreClock / 1000))

sementara(1);

 uartInit();

drv_i2c_init();

drv_kunci_init();

 

OLED_Inisialisasi();

 OLED_Penyegaran();

OLED_Jelas();

OLED_ShowString(8,0,"Tampilkan:",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_Penyegaran();

uartKirimString("SL-W-Program demo TRS-5.5Dx ");

sementara(1) {

kunci = drv_key_read();

sementara(drv_key_read());

jika (kunci) {

 lari = (berjalan)?0:1;

}

jika (jalankan) {

 TRS55D_baca();

OLED_Penyegaran();

}

penundaan_ms(20);

}

}

 

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

 //trs55d.h

 //////

#ifndef _TRS55D_H_

#definisikan _TRS55D_H_

#include

#tentukan TRS55D_NORMAL_Tobj_MSB_R 0x10

#tentukan TRS55D_NORMAL_Tobj_CSB_R 0x11

#tentukan TRS55D_NORMAL_Tobj_LSB_R 0x12

 #tentukan TRS55D_NORMAL_TEMP_MSB_R 0x16

#tentukan TRS55D_NORMAL_TEMP_CSB_R 0x17

#tentukan TRS55D_NORMAL_TEMP_LSB_R 0x18

 #tentukan TRS55D_NORMAL_DATA1_MSB_R 0x19

#tentukan TRS55D_NORMAL_DATA1_CSB_R 0x1A

 #tentukan TRS55D_NORMAL_DATA1_LSB_R 0x1B

 #tentukan TRS55D_NORMAL_DATA2_MSB_R 0x1C

 #tentukan TRS55D_NORMAL_DATA2_CSB_R 0x1D

#tentukan TRS55D_NORMAL_DATA2_LSB_R 0x1E

 #tentukan TRS55D_RAW_DATA1_MSB_R 0x22

 #tentukan TRS55D_RAW_DATA1_CSB_R 0x23

#tentukan TRS55D_RAW_DATA1_LSB_R 0x24

 #tentukan TRS55D_RAW_DATA2_MSB_R 0x25

 #tentukan TRS55D_RAW_DATA2_CSB_R 0x26

 #tentukan TRS55D_RAW_DATA2_LSB_R 0x27

 #tentukan TRS55D_RAW_TEMP_MSB_R 0x28

 #tentukan TRS55D_RAW_TEMP_CSB_R 0x29

#tentukan TRS55D_RAW_TEMP_LSB_R 0x2A

 #tentukan ADDR_TRS55D 0xFE //(0x7F << 1)

 #define _STATUS_DRDY_ 0x01 batal TRS55D_baca(batal);

#berakhir jika

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

// trs55d.c

//////

#include

 #sertakan "drv_i2c.h"

 #sertakan "trs55d.h"

 #sertakan "body_temp.h"

 eksternal uint8_t uartSendString(const char* buf);

eksternal void OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t ukuran1,uint8_t mode);

 eksternal void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,

uint8_t ukuran2,uint8_t modus); uint8_t TRS55D_IIC_Baca(uint8_t addr_dev, uint8_t addr_reg,

uint8_t *buf, uint16_t hitung)

{

uint8_t ret;

uint8_t tanda terima;

uint16_t saya = 0;

drv_i2c_mulai();

drv_i2c_select_dev(alamat_dev,DRV_I2C_OPWR);

 

drv_i2c_writebyte(alamat_reg);

 drv_i2c_mulai();

drv_i2c_select_dev(alamat_dev,DRV_I2C_OPRD);

untuk (i = 0; i < hitung; i ++) { ackflag = (i < (hitung-1)) ? 1:0; buf[i]

 = drv_i2c_readbyte(tanda seru);

 }

drv_i2c_berhenti();

 kembali mundur;

 }

 

void TRS55D_IIC_Write(uint8_t alamat_dev, uint8_t alamat_reg, uint8_t *buf, uint16_t hitung)

 {

 uint16_t saya = 0;

drv_i2c_mulai();

drv_i2c_select_dev(alamat_dev,DRV_I2C_OPWR);

drv_i2c_writebyte(alamat_reg);

 untuk (i = 0; i < hitung; i ++)

 { drv_i2c_writebyte(buf[i]);

}

drv_i2c_berhenti();

}

 ketik definisi gabungan {

int16_t i16;

uint16_t u16;

struktur {

uint8_t u8l;

uint8_t u8h;

 }un;

}uu16_t;

 

ketik definisi gabungan {

int32_t i32;

struktur {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}un;

 }uu32_t;

 

buffer karakter statis[264];

 uu32_t tobj, tamb_cal;

 

uu32_t vtp_cor;

mengapung vtp_uv_f = 0.0;

mengapung vtp_cor_f = 0.0;

mengapung tambf = 0.0; mengapung tobjf = 0.0;

 mengapung tbdyf = 0.0;

 batal TRS55D_baca(batal)

{

uint8_t rbuf[4];

uint8_t raddr,rdat;

 uint8_t waddr = 0x0, wdat = 0x0;

int batas waktu=0;

 

waddr = 0x30;

wdat = 0x09;

TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);

 //mulai konversi delay_ms(100);

 

// tunggu konversi selesai

raddr = 0x03;

lakukan {

TRS55D_IIC_Baca(ADDR_TRS55D, raddr, &rdat,1);

} sementara(((rdat == 0xFF) || (!(rdat & 0x30))) && batas waktu++ < 200);

raddr = 0x02;

 lakukan {

TRS55D_IIC_Baca(ADDR_TRS55D, raddr, &rdat,1);

} sementara(((rdat == 0xFF) || (!(rdat & 0x0B))) && batas waktu++ < 200);

 

 // nilai tegangan setelah kalibrasi

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 dan 0x80) { vtp_cor.un.u8b3 = 0xFF;

}lain {

vtp_cor.un.u8b3 = 0x00;

// vtp setelah diperbaiki

}

vtp_cor_f = (mengambang)vtp_cor.i32/524288.0;

vtp_cor_f *= 1000;

// nilai suhu sekitar setelah kalibrasi

 raddr = TRS55D_SUHU_NORMAL_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 sekitar

 

// suhu objek (permukaan) setelah kalibrasi

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 = (mengambang)tobj.i32 / 16384.0;

// suhu objek(permukaan)

 

// dapatkan suhu tubuh

tbdyf = get_body_temp(tambf,tobjf); // dapatkan suhu tubuh

 

// ditampilkan di uart sprintf(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(buffer);

 

//tampilkan di oled

 mengapung nilai[4] = {tambf, vtp_cor_f, tobjf, tbdyf+0.05};

 OLED_ShowBNum (64, 0, vals[0], 4, 16, 1); // Tamb

OLED_ShowBNum (48, 16, nilai[1], 6, 16, 1); // vtp

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

OLED_ShowBNum (64, 32, nilai[2], 4, 16, 1); // Tobj

OLED_ShowBNum (64, 48, nilai[3], 4, 16, 1); // Tbdy

}

whatsapp

Hotline Layanan

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950