Zerbitzua
SLKOR produktu elektronikoen diseinua, garapena, ekoizpena eta salmenta integratzen dituen goi-mailako teknologiako enpresa bat da. Bezeroei produktu fidagarriak eta dagokien zerbitzu teknikoak eskaintzen dizkie. Marka "SLKOR" pixkanaka nazioartean ezaguna den enpresa bihurtu da, mundu osoko 10,000 bezero baino gehiagori produktuak eta irtenbideak eskainiz.
Bezeroei osagarri diren produktu sorta osoa eskaintzeko ahaleginean, SLKOR Termopila infragorri digitalen kontakturik gabeko tenperatura neurtzeko aplikazioen diseinuen demo-plaken erabiltzaile-eskuliburu sorta bat kaleratu du.
1.1 IzenaErabiltzailearen eskuliburua SLKOR Termopila infragorri digitalaren kontakturik gabeko tenperatura neurtzeko aplikazioaren diseinuaren demo taula
1.2 AplikazioakGailu eramangarri adimendunak, telefono adimendunak, industria-tenperaturaren monitorizazioa, kontakturik gabeko giza gorputzaren gainazaleko tenperaturaren neurketa, tenperaturaren detekzio eta kontrol adimenduna eta tenperatura-neurketa laburreko beste gailu txiki batzuk.
1.3 SL-W-TRS-5.5Dx Serieko Demo Plaka:
Sentsore mota desberdinak ebaluatzeko eta probatzeko erabiltzen da. Neurketaren emaitzak pantailan bistaratuko dira eta ordenagailuko serieko ataka arazteko softwarean inprima daitezke USBtik serieko atakara bidez. Botoiaren deskribapena: Ezkerreko botoia berrezartzeko da, eta eskuineko botoiak programaren hasiera eta pausa kontrola ditzake.
2. SL-W-TRS-5.5Dx seriearen hardware diseinua
Txip pinek elikatze-iturria eta I2C busa dituzte, guztira 4 pinekin. Elikatze-tentsioaren tarte onargarria 2.3 - 3.6V da. Sentsoreak berak energia-kontsumo oso baxua du. 0.1uF-ko kondentsadore bat nahikoa da elikatze-iturriaren lurraren artean. Sentsorea elikatze-iturritik nahiko urrun badago, 10uF-ko kondentsadore gehigarri bat kontuan har daiteke elikatze-iturri egonkorra bermatzeko eta zarata murrizteko.
3. SL-W-TRS-5.5Dx Serieko Demo Txartelaren deskribapena
3.1 Demo plaka C motako entxufe batetik elikatzen da, eta demo plakaren elikatze-tentsioa 5V-koa da. Erabiltzen ari zarenean, konektatu demo plaka ordenagailura C motako entxufearen bidez, eta emaitzak pantailan ikus ditzakezu. Serieko atakaren bidez datuak bistaratu behar badituzu, WCH CH340 kontrolatzaile programa instalatu eta serieko atakaren arazketa softwarea erabili beharko duzu funtzionatzeko. Serieko atakaren komunikazio ezarpenak hauek dira: Baud abiadura: 9600, Datu bitak: 8, Geldialdi bitak: 1, eta paritate-egiaztapenik ez.
3.2 Demo plakaren pantaila-bistaratze goitik behera honako hau da: giro-tenperatura (tamb), sentsorearen irteerako tentsioa (vtp_cor), objektuaren (gainazalaren) tenperatura (tobj) eta giza gorputzaren tenperatura (tbdy). Goiko tenperatura-balioen unitatea °C da, eta tentsioaren unitatea μV. Horien artean, lehenengo hiru balioak gailuaren jatorrizko irteerak dira. Gorputzaren tenperaturaren balioa gure enpresaren algoritmoa erabiliz kalkulatzen da jatorrizko balioetan oinarrituta, eta erreferentzia gisa soilik da. Erabiltzaileek datuak prozesatu ditzakete beren gorputzaren tenperaturaren algoritmoak erabiliz, beren beharren arabera.
Serieko ataka bistaratzeko efektua
2. SL-W-TRS-5.5Dx seriearen demo plakaren programaren adibidea
////////////////////////////////////////////////////////////////////////////////////
// main.c
//////
#definitu BEZEROARENTZAT
#ifdef BEZEROARENTZAT
#sartu "drv_uart.h"
#sartu "drv_i2c.h"
#sartu "drv_key.h"
#sartu "oled/oled.h"
#sartu "trs55d.h"
kanpoaldea void SystemCoreClockupdate(void);
kanpoko void delay_ms(int cnt);
int nagusia (hutsunea)
{
uint8_t gakoa;
uint8_t exekutatu = 0x01;
SystemCoreClockupdate();
baldin eta (SysTick_Config(SystemCoreClock / 1000))
bitartean(1);
uartHasiera();
drv_i2c_init();
drv_key_init();
OLED_Hasiera();
OLED_Freskatu();
OLED_Garbitu();
OLED_ErakutsiKatea(8,0,"Tamb:",16,1);
OLED_ErakutsiKatea(8,16,"Vtp:",16,1);
OLED_Show Chinese(8,32,0,16,1);
OLED_Show Chinese(24,32,2,16,1);
OLED_Show Chinese(40,32,3,16,1);
OLED_Show Chinese(8,48,1,16,1);
OLED_Show Chinese(24,48,2,16,1);
OLED_Show Chinese(40,48,3,16,1);
OLED_Freskatu();
uartSendString("SL-W-TRS-5.5Dx Demo programa");
bitartean(1) {
giltza = drv_giltza_irakurketa();
bitartean(drv_key_read());
baldin eta (giltza) {
korrika = (korrika)?0:1;
}
baldin eta (exekutatu) {
TRS55D_irakurri();
OLED_Freskatu();
}
atzerapena_ms(20);
}
}
////////////////////////////////////////////////////////////////////////////////////
//trs55d.h
//////
#ifndef _TRS55D_H_
#definitu _TRS55D_H_
#include
#definitu TRS55D_NORMAL_Tobj_MSB_R 0x10
#definitu TRS55D_NORMAL_Tobj_CSB_R 0x11
#definitu TRS55D_NORMAL_Tobj_LSB_R 0x12
#definitu TRS55D_NORMAL_TEMP_MSB_R 0x16
#definitu TRS55D_NORMAL_TEMP_CSB_R 0x17
#definitu TRS55D_NORMAL_TEMP_LSB_R 0x18
#definitu TRS55D_NORMAL_DATA1_MSB_R 0x19
#definitu TRS55D_NORMAL_DATA1_CSB_R 0x1A
#definitu TRS55D_NORMAL_DATA1_LSB_R 0x1B
#definitu TRS55D_NORMAL_DATA2_MSB_R 0x1C
#definitu TRS55D_NORMAL_DATA2_CSB_R 0x1D
#definitu TRS55D_NORMAL_DATA2_LSB_R 0x1E
#definitu TRS55D_RAW_DATA1_MSB_R 0x22
#definitu TRS55D_RAW_DATA1_CSB_R 0x23
#definitu TRS55D_RAW_DATA1_LSB_R 0x24
#definitu TRS55D_RAW_DATA2_MSB_R 0x25
#definitu TRS55D_RAW_DATA2_CSB_R 0x26
#definitu TRS55D_RAW_DATA2_LSB_R 0x27
#definitu TRS55D_RAW_TEMP_MSB_R 0x28
#definitu TRS55D_RAW_TEMP_CSB_R 0x29
#definitu TRS55D_RAW_TEMP_LSB_R 0x2A
#definitu ADDR_TRS55D 0xFE //(0x7F << 1)
#define _STATUS_DRDY_ 0x01 void TRS55D_read(void);
#endif
////////////////////////////////////////////////////////////////////////////////////
// trs55d.c
//////
#include
#sartu "drv_i2c.h"
#sartu "trs55d.h"
#sartu "gorputzaren_tenperatura.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);
extern void OLED_ShowBNum(uint8_t x,uint8_t y,float zenb,uint8_t luzera,
uint8_t tamaina2, uint8_t modua); uint8_t TRS55D_IIC_Read(uint8_t helbide_dev, uint8_t helbide_erreg,
uint8_t *buf, uint16_t kontaketa)
{
uint8_t itzuli;
uint8_t berrespen-flag;
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 < kontaketa; i ++) { ackflag = (i < (kontaketa-1)) ? 1:0; buf[i]
= drv_i2c_readbyte(ackflag);
}
drv_i2c_stop();
itzuli ret;
}
void TRS55D_IIC_Write(uint8_t addr_dev, uint8_t addr_reg, uint8_t *buf, uint16_t kontaketa)
{
uint16_t i = 0;
drv_i2c_start();
drv_i2c_select_dev(addr_dev,DRV_I2C_OPWR);
drv_i2c_writebyte(addr_reg);
for (i = 0; i < zenbaketa; i ++)
{ drv_i2c_writebyte(buf[i]);
}
drv_i2c_stop();
}
typedef batasuna{
int16_t i16;
uint16_t u16;
egitura {
uint8_t u8l;
uint8_t u8h;
}bat;
}uu16_t;
typedef batasuna{
int32_t i32;
egitura {
uint8_t u8b0;
uint8_t u8b1;
uint8_t u8b2;
uint8_t u8b3;
}bat;
}uu32_t;
karaktere estatikoen bufferra[264];
uu32_t tobj, tamb_cal;
uu32_t vtp_cor;
flotatzailea vtp_uv_f = 0.0;
flotatzailea 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 denbora-muga=0;
waddr = 0x30;
wdat = 0x09;
TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);
//bihurketa hasteko delay_ms(100);
// bihurketaren zain
raddr = 0x03;
egin {
TRS55D_IIC_Irakurketa (ADDR_TRS55D, raddr, &rdat,1);
} bitartean(((rdat == 0xFF) || (!(rdat & 0x30))) && denbora-muga++ < 200);
raddr = 0x02;
egin {
TRS55D_IIC_Irakurketa (ADDR_TRS55D, raddr, &rdat,1);
} bitartean(((rdat == 0xFF) || (!(rdat & 0x0B))) && denbora-muga++ < 200);
// tentsioaren balioa kalibrazioaren ondoren
raddr = TRS55D_NORMAL_DATA1_MSB_R;
TRS55D_IIC_Irakurri (ADDR_TRS55D, raddr,&rbuf[0],3);
vtp_cor.un.u8b2 = rbuf[0];
vtp_cor.un.u8b1 = rbuf[1];
vtp_cor.un.u8b0 =rbuf[2];
baldin eta (vtp_cor.un.u8b2 eta 0x80) { vtp_cor.un.u8b3 = 0xFF;
}bestela {
vtp_cor.un.u8b3 = 0x00;
// zuzendu ondoren vtp
}
vtp_cor_f = (float)vtp_cor.i32/524288.0;
vtp_cor_f *= 1000;
// giro-tenperaturaren balioa kalibrazioaren ondoren
raddr = TRS55D_NORMAL_TEMP_MSB_R;
TRS55D_IIC_Irakurri (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; // giro-tenperatura
// objektuaren (gainazalaren) tenperatura kalibrazioaren ondoren
raddr = TRS55D_NORMAL_Tobj_MSB_R;
TRS55D_IIC_Irakurri (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;
// objektuaren (gainazalaren) tenperatura
// gorputz-tenperatura lortu
tbdyf = get_body_tenperatura(tambf,tobjf); // gorputzaren tenperatura lortu
// uart-en erakutsi sprintf(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(buffer);
// OLED-ean erakutsi
float bals[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_ErakutsiKatea(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号