Çözümler
Çözümler

SL-W-TRS-5.5Dx Dijital Kızılötesi Termokupl Demo Kartı için Kullanıcı Kılavuzu

2024-12-13 1850
SLKOR Mikro Semicon Co., Ltd., teknik omurgası Güney Kore'deki Tsinghua Üniversitesi ve Yonsei Üniversitesi'nden gelmektedir. Şirketin gelişimine yeni malzemeler, yeni süreçler ve yeni ürünlerle öncülük etmektedir ve üçüncü nesil yarı iletken silisyum karbür güç cihazlarının uluslararası düzeyde gelişmiş teknolojisinde nispeten erken bir dönemde ustalaşmıştır.

 

SLKOR elektronik ürünlerin tasarımını, geliştirilmesini, üretimini ve satışını entegre eden yüksek teknolojili bir kuruluştur. Müşterilerine güvenilir ürünler ve ilgili teknik hizmetler sunar. Marka "SLKOR" dünya çapında 10,000'den fazla müşteriye ürün ve çözümler sunan uluslararası bir şirket haline gelmiştir.

 

Müşterilere tamamlayıcı ürünlerden oluşan tam bir yelpaze sunma çabasıyla, SLKOR Dijital kızılötesi termopil temassız sıcaklık ölçümü uygulama tasarımlarının demo kartları için bir dizi kullanıcı kılavuzu yayınladı.

 

1.1 İsim: Kullanıcı Kılavuzu SLKOR Dijital Kızılötesi Termokupl Temassız Sıcaklık Ölçümü Uygulama Tasarım Demo Kartı

1.2 Uygulamaları: Akıllı giyilebilir cihazlar, akıllı telefonlar, endüstriyel sıcaklık izleme, temassız insan vücudu yüzey sıcaklığı ölçümü, akıllı sıcaklık algılama ve kontrolü ve kısa menzilli sıcaklık ölçümü için diğer küçük boyutlu cihazlar.

1.3 SL-W-TRS-5.5Dx Serisi Demo Kartı:

Çeşitli sensör tiplerinin değerlendirilmesi ve test edilmesi için kullanılır. Ölçüm sonuçları ekranda gösterilecek ve USB'den seri porta PC'deki seri port hata ayıklama yazılımına yazdırılabilir. Düğme açıklaması: Sol düğme sıfırlama içindir ve sağ düğme programın başlatılmasını ve duraklatılmasını kontrol edebilir.

resim.png 

2. SL-W-TRS-5.5Dx Serisinin Donanım Tasarımı

 

Çip pinleri güç kaynağı ve I2C veri yolunu içerir, toplam 4 pin vardır. İzin verilen besleme voltajı aralığı 2.3 - 3.6 V'tur. Sensörün kendisi çok düşük güç tüketimine sahiptir. Güç kaynağı toprağı arasında 0.1 uF kapasitör yeterlidir. Sensör güç kaynağı parçasından nispeten uzaksa, kararlı güç kaynağı sağlamak ve gürültüyü azaltmak için ek bir 10 uF kapasitör düşünülebilir.

resim.png 

 

 

3. SL-W-TRS-5.5Dx Serisi Demo Kartının Açıklaması

 

3.1 Demo kartı bir Type-C soketi ile çalışır ve demo kartı için güç kaynağı voltajı 5V'tur. Kullanımdayken, demo kartını Type-C aracılığıyla PC'ye bağlayın ve ardından sonuçları ekranda görüntüleyebilirsiniz. Verileri seri port üzerinden görüntülemeniz gerekiyorsa, WCH CH340 sürücü programını yüklemeniz ve ardından çalıştırmak için seri port hata ayıklama yazılımını kullanmanız gerekir. Seri port iletişim ayarları aşağıdaki gibidir: Baud hızı: 9600, Veri bitleri: 8, Durdurma bitleri: 1 ve parite kontrolü yok.

 

3.2 Demo kartının ekran görüntüsü yukarıdan aşağıya şu şekildedir: ortam sıcaklığı (tamb), sensör çıkış voltajı (vtp_cor), nesne (yüzey) sıcaklığı (tobj) ve insan vücudu sıcaklığı (tbdy). Yukarıdaki sıcaklık değerlerinin birimi °C, voltajın birimi ise μV'dir. Bunlardan ilk üç değer cihazın orijinal çıkışlarıdır. Vücut sıcaklığı değeri, firmamızın algoritması kullanılarak orijinal değerlere göre hesaplanır ve yalnızca referans amaçlıdır. Kullanıcılar, kendi vücut sıcaklığı algoritmalarını kullanarak verileri ihtiyaçlarına göre işleyebilirler. 

resim.png 

Seri port görüntüleme efekti

 

 2. SL-W-TRS-5.5Dx serisinin demo kart program örneği

 

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

 // ana.c

 //////

 #define MÜŞTERİ_İÇİN

 #ifdef MÜŞTERİ_İÇİN

 #include "drv_uart.h"

 

#include "drv_i2c.h"

#include "drv_key.h"

#include "oled/oled.h"

#include "trs55d.h"

 

dış void SystemCoreClockupdate(void);

dış void gecikme_ms(int sayma);

 int main (void)

{

uint8_t anahtarı;

 uint8_t çalıştır = 0x01;

 SistemÇekirdekSaatGüncellemesi();

eğer (SysTick_Config(SystemCoreClock / 1000))

while(1);

 uartInit();

drv_i2c_init();

drv_anahtar_init();

 

OLED_Başlatma();

 OLED_Yenile();

OLED_Temizle();

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

uartGönderDizesi("SL-B-TRS-5.5Dx Demo programı ");

(1) iken {

anahtar = drv_anahtar_okuma();

drv_anahtar_okuma();

eğer (anahtar) {

 koş = (koş)?0:1;

}

eğer (koş) {

 TRS55D_oku();

OLED_Yenile();

}

gecikme_ms(20);

}

}

 

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

 //trs55d.h

 //////

#ifndef _TRS55D_H_

#define _TRS55D_H_

#Dahil etmek

#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

//////

#Dahil etmek

 #include "drv_i2c.h"

 #include "trs55d.h"

 #include "body_temp.h"

 harici uint8_t uartSendString(const char* buf);

harici void OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t size1,uint8_t mod);

 dış void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,

uint8_t size2,uint8_t modu); uint8_t TRS55D_IIC_Read(uint8_t addr_dev, uint8_t addr_reg,

uint8_t *buf, uint16_t sayısı)

{

uint8_t dönüşü;

uint8_t onay bayrağı;

uint16_t ben = 0;

drv_i2c_başlat();

drv_i2c_select_dev(addr_dev,DRV_I2C_OPWR);

 

drv_i2c_writebyte(addr_reg);

 drv_i2c_başlat();

drv_i2c_select_dev(addr_dev,DRV_I2C_OPRD);

i = 0 için; i < sayım; i ++) { ackflag = (i < (sayım-1)) ? 1:0; buf[i]

 = drv_i2c_readbyte(okumabayrağı);

 }

drv_i2c_durdur();

 geri dön;

 }

 

void TRS55D_IIC_Write(uint8_t addr_dev, uint8_t addr_reg, uint8_t *buf, uint16_t sayısı)

 {

 uint16_t ben = 0;

drv_i2c_başlat();

drv_i2c_select_dev(addr_dev,DRV_I2C_OPWR);

drv_i2c_writebyte(addr_reg);

 (i = 0; i < sayım; i ++) için

 { drv_i2c_writebyte(buf[i]);

}

drv_i2c_durdur();

}

 typedef birliği{

int16_t i16;

uint16_t u16;

yapı {

uint8_t u8l;

uint8_t u8h;

 }bir;

}uu16_t;

 

typedef birliği{

int32_t i32;

yapı {

uint8_t u8b0;

uint8_t u8b1;

uint8_t u8b2;

uint8_t u8b3;

}bir;

 }uu32_t;

 

statik char tamponu[264];

 uu32_t tobj, tamb_kal;

 

uu32_t vtp_cor;

vtp_uv_f = 0.0'dır;

vtp_cor_f = 0.0'dır;

float tambf = 0.0; float tobjf = 0.0;

 float tbdyf = 0.0;

 geçersiz TRS55D_okuma(geçersiz)

{

uint8_t rbuf[4];

uint8_t raddr,rdat;

 uint8_t waddr = 0x0, wdat = 0x0;

int zaman aşımı=0;

 

waddr = 0x30;

wdat = 0x09;

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

 //dönüştürmeyi başlat delay_ms(100);

 

// dönüşümün bitmesini bekleyin

raddr = 0x03;

yapmak {

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

} while(((rdat == 0xFF) || (!(rdat & 0x30))) && zaman aşımı++ < 200);

raddr = 0x02;

 yapmak {

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

} while(((rdat == 0xFF) || (!(rdat & 0x0B))) && zaman aşımı++ < 200);

 

 // kalibrasyondan sonraki voltaj değeri

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

 eğer (vtp_cor.un.u8b2 ve 0x80) { vtp_cor.un.u8b3 = 0xFF;

}Başka {

vtp_cor.un.u8b3 = 0x00;

// vtp düzeltildikten sonra

}

vtp_cor_f = (yüzer)vtp_cor.i32/524288.0;

vtp_cor_f *= 1000;

// Kalibrasyondan sonra ortam sıcaklığı değeri

 raddr = TRS55D_NORMAL_SICAKLIK_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; // ortam sıcaklığı

 

// kalibrasyondan sonra nesnenin (yüzeyin) sıcaklığı

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

// nesne(yüzey) sıcaklığı

 

// vücut sıcaklığını al

tbdyf = get_body_temp(tambf,tobjf); // vücut sıcaklığını al

 

// uart'ta görüntüle sprintf(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(buffer);

 

// oled'de görüntüle

 yüzen vals[4] = {tambf, vtp_cor_f, tobjf, tbdyf+0.05};

 OLED_ShowBNum (64, 0, değerler[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, değerler[2], 4, 16, 1); // Tobj

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

}

whatsapp

WhatsApp

Whatsapp:+8618073002950