Горячая линия обслуживания
Руководство пользователя для демонстрационной платы цифрового инфракрасного термоэлемента SL-W-TRS-5.5Dx
SLKOR является высокотехнологичным предприятием, интегрирующим проектирование, разработку, производство и продажу электронных продуктов. Предоставляет клиентам надежную продукцию и соответствующие технические услуги. Бренд "SLKOR«Со временем компания превратилась в международно известную компанию, предлагающую продукцию и решения более чем 10,000 XNUMX клиентам по всему миру.
Стремясь предоставить клиентам полный спектр дополнительных продуктов, SLKOR выпустила серию руководств пользователя для демонстрационных плат проектов бесконтактного измерения температуры на основе цифровых инфракрасных термобатарей.
1.1 Имя: Руководство пользователя для SLKOR Демонстрационная плата для проектирования бесконтактного измерения температуры на основе цифрового инфракрасного термоэлемента
Приложения 1.2: интеллектуальные носимые устройства, смартфоны, промышленный мониторинг температуры, бесконтактное измерение температуры поверхности человеческого тела, интеллектуальное измерение и контроль температуры и другие малогабаритные устройства для измерения температуры на коротких расстояниях.
1.3 Демонстрационная плата серии SL-W-TRS-5.5Dx:
Используется для оценки и тестирования различных типов датчиков. Результаты измерений будут отображаться на экране и могут быть распечатаны в последовательном порте отладочного программного обеспечения на ПК через USB-последовательный порт. Описание кнопок: левая кнопка предназначена для сброса, а правая кнопка может управлять запуском и паузой программы.
2. Аппаратная часть серии SL-W-TRS-5.5Dx
Контакты чипа включают питание и шину I2C, всего 4 контакта. Допустимый диапазон напряжения питания составляет 2.3 - 3.6 В. Сам датчик имеет очень низкое энергопотребление. Достаточно конденсатора 0.1 мкФ между заземлением источника питания. Если датчик находится относительно далеко от части источника питания, можно рассмотреть дополнительный конденсатор 10 мкФ для обеспечения стабильного питания и снижения шума.
3. Описание демонстрационной платы серии SL-W-TRS-5.5Dx
3.1 Демонстрационная плата питается от разъема Type-C, а напряжение питания демонстрационной платы составляет 5 В. При использовании подключите демонстрационную плату к ПК через Type-C, после чего вы сможете просматривать результаты на экране. Если вам необходимо отображать данные через последовательный порт, вам необходимо установить программу драйвера WCH CH340, а затем использовать программное обеспечение для отладки последовательного порта для работы. Настройки связи последовательного порта следующие: скорость передачи данных: 9600, биты данных: 8, стоповые биты: 1, и без проверки четности.
3.2 Отображение экрана демонстрационной платы сверху вниз выглядит следующим образом: температура окружающей среды (tamb), выходное напряжение датчика (vtp_cor), температура объекта (поверхности) (tobj) и температура тела человека (tbdy). Единица измерения вышеуказанных значений температуры — °C, а единица измерения напряжения — мкВ. Среди них первые три значения являются исходными выходами устройства. Значение температуры тела рассчитывается на основе исходных значений с использованием алгоритма нашей компании и носит исключительно справочный характер. Пользователи могут обрабатывать данные, используя собственные алгоритмы температуры тела в соответствии со своими потребностями.
Эффект отображения последовательного порта
2. Пример программы демонстрационной платы серии SL-W-TRS-5.5Dx
/////////////////////////////////////////////////// /////////////////////////////////////////////////// //
// main.c
//////
#определить ДЛЯ_КЛИЕНТА
#ifdef ДЛЯ_КЛИЕНТА
#включить "drv_uart.h"
#включить "drv_i2c.h"
#включить "drv_key.h"
#включить "oled/oled.h"
#включить "trs55d.h"
extern void SystemCoreClockupdate(void);
extern void delay_ms(int cnt);
int main (void)
{
ключ uint8_t;
uint8_t запуск = 0x01;
SystemCoreClockupdate();
если (SysTick_Config(SystemCoreClock / 1000))
в то время как (1);
uartInit();
drv_i2c_init();
drv_key_init();
OLED_Init();
OLED_Refresh();
OLED_Clear();
OLED_ShowString(8,0,"Тамб:",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 Демонстрационная программа ");
в то время как(1) {
ключ = drv_key_read();
пока(drv_key_read());
если (ключ) {
выполнить = (выполнить)?0:1;
}
если (запустить) {
TRS55D_read();
OLED_Refresh();
}
задержка_мс (20);
}
}
/////////////////////////////////////////////////// /////////////////////////////////////////////////// //
//trs55d.h
//////
#ifndef _TRS55D_H_
#определить _TRS55D_H_
#включают
#определить TRS55D_NORMAL_Tobj_MSB_R 0x10
#определить TRS55D_NORMAL_Tobj_CSB_R 0x11
#определить TRS55D_NORMAL_Tobj_LSB_R 0x12
#определить TRS55D_NORMAL_TEMP_MSB_R 0x16
#определить TRS55D_NORMAL_TEMP_CSB_R 0x17
#определить TRS55D_NORMAL_TEMP_LSB_R 0x18
#определить TRS55D_NORMAL_DATA1_MSB_R 0x19
#определить TRS55D_NORMAL_DATA1_CSB_R 0x1A
#определить TRS55D_NORMAL_DATA1_LSB_R 0x1B
#определить TRS55D_NORMAL_DATA2_MSB_R 0x1C
#определить TRS55D_NORMAL_DATA2_CSB_R 0x1D
#определить TRS55D_NORMAL_DATA2_LSB_R 0x1E
#определить TRS55D_RAW_DATA1_MSB_R 0x22
#определить TRS55D_RAW_DATA1_CSB_R 0x23
#определить TRS55D_RAW_DATA1_LSB_R 0x24
#определить TRS55D_RAW_DATA2_MSB_R 0x25
#определить TRS55D_RAW_DATA2_CSB_R 0x26
#определить TRS55D_RAW_DATA2_LSB_R 0x27
#определить TRS55D_RAW_TEMP_MSB_R 0x28
#определить TRS55D_RAW_TEMP_CSB_R 0x29
#определить TRS55D_RAW_TEMP_LSB_R 0x2A
#define ADDR_TRS55D 0xFE //(0x7F << 1)
#define _STATUS_DRDY_ 0x01 void TRS55D_read(void);
#endif
/////////////////////////////////////////////////// /////////////////////////////////////////////////// //
// trs55d.c
//////
#включают
#включить "drv_i2c.h"
#включить "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);
extern void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,
uint8_t размер2, 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 я = 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);
для (i = 0; i < count; i ++) { ackflag = (i < (count-1)) ? 1:0; buf[i]
= drv_i2c_readbyte(флаг подтверждения);
}
drv_i2c_stop();
возвратить обратно;
}
void TRS55D_IIC_Write(uint8_t addr_dev, uint8_t addr_reg, uint8_t *buf, uint16_t count)
{
uint16_t я = 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 union{
int16_t i16;
uint16_t u16;
структура {
uint8_t u8l;
uint8_t u8h;
}ООН;
}uu16_t;
typedef union{
int32_t i32;
структура {
uint8_t u8b0;
uint8_t u8b1;
uint8_t u8b2;
uint8_t u8b3;
}ООН;
}uu32_t;
статический буфер символов[264];
uu32_t tobj, tamb_cal;
uu32_t vtp_cor;
поплавок vtp_uv_f = 0.0;
плавающий vtp_cor_f = 0.0;
float tambf = 0.0; float tobjf = 0.0;
плавающий tbdyf = 0.0;
недействительный TRS55D_read(недействительный)
{
uint8_t rbuf[4];
uint8_t раддр,rdat;
uint8_t waddr = 0x0, wdat = 0x0;
int таймаут=0;
waddr = 0x30;
wdat = 0x09;
TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);
//начать преобразование delay_ms(100);
// ждем окончания преобразования
раддр = 0x03;
делать {
TRS55D_IIC_Read (ADDR_TRS55D, раддр, &rdat,1);
} while(((rdat == 0xFF) || (!(rdat & 0x30))) && timeout++ < 200);
раддр = 0x02;
делать {
TRS55D_IIC_Read (ADDR_TRS55D, раддр, &rdat,1);
} while(((rdat == 0xFF) || (!(rdat & 0x0B))) && timeout++ < 200);
// значение напряжения после калибровки
раддр = 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];
если (vtp_cor.un.u8b2 & 0x80) { vtp_cor.un.u8b3 = 0xFF;
}еще {
vtp_cor.un.u8b3 = 0x00;
// vtp после исправления
}
vtp_cor_f = (плавающее число)vtp_cor.i32/524288.0;
vtp_cor_f *= 1000;
// значение температуры окружающей среды после калибровки
раддр = 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; // температура окружающей среды
// температура объекта (поверхности) после калибровки
раддр = 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, значения [0], 4, 16, 1); // Тамб
OLED_ShowBNum (48, 16, значения[1], 6, 16, 1); // vtp
OLED_ShowString(112,16, "uv",16, 1);
OLED_ShowBNum (64, 32, значения[2], 4, 16, 1); // Tobj
OLED_ShowBNum (64, 48, значения[3], 4, 16, 1); // Tbdy
}




粤公网安备44030002007346号