Đường dây nóng Dịch vụ
Hướng dẫn sử dụng cho bảng demo nhiệt điện hồng ngoại kỹ thuật số SL-W-TRS-5.5Dx
SLKOR là một doanh nghiệp công nghệ cao tích hợp thiết kế, phát triển, sản xuất và bán các sản phẩm điện tử. Cung cấp cho khách hàng các sản phẩm đáng tin cậy và các dịch vụ kỹ thuật tương ứng. Thương hiệu "SLKOR" đã dần phát triển thành một công ty nổi tiếng quốc tế, cung cấp sản phẩm và giải pháp cho hơn 10,000 khách hàng trên toàn thế giới.
Trong nỗ lực phấn đấu cung cấp cho khách hàng đầy đủ các sản phẩm bổ sung, SLKOR đã ra mắt một loạt hướng dẫn sử dụng cho bảng demo thiết kế ứng dụng đo nhiệt độ không tiếp xúc bằng nhiệt điện hồng ngoại kỹ thuật số.
1.1 Tên: Hướng dẫn sử dụng cho SLKOR Bảng thiết kế ứng dụng đo nhiệt độ không tiếp xúc bằng nhiệt điện hồng ngoại kỹ thuật số
1.2 Ứng dụng: Thiết bị đeo thông minh, điện thoại thông minh, giám sát nhiệt độ công nghiệp, đo nhiệt độ bề mặt cơ thể người không tiếp xúc, cảm biến và điều khiển nhiệt độ thông minh và các thiết bị nhỏ khác để đo nhiệt độ tầm ngắn.
1.3 Bo mạch trình diễn dòng SL-W-TRS-5.5Dx:
Được sử dụng để đánh giá và thử nghiệm các loại cảm biến khác nhau. Kết quả đo lường sẽ được hiển thị trên màn hình và có thể được in ra phần mềm gỡ lỗi cổng nối tiếp trên PC thông qua cổng USB đến cổng nối tiếp. Mô tả nút: Nút bên trái dùng để đặt lại và nút bên phải có thể điều khiển bắt đầu và tạm dừng chương trình.
2. Thiết kế phần cứng của dòng SL-W-TRS-5.5Dx
Các chân chip bao gồm nguồn điện và bus I2C, tổng cộng có 4 chân. Phạm vi điện áp cung cấp cho phép là 2.3 - 3.6V. Bản thân cảm biến có mức tiêu thụ điện năng rất thấp. Một tụ điện 0.1uF giữa đất nguồn điện là đủ. Nếu cảm biến tương đối xa bộ phận nguồn điện, có thể cân nhắc thêm một tụ điện 10uF để đảm bảo nguồn điện ổn định và giảm nhiễu.
3. Mô tả về bo mạch demo dòng SL-W-TRS-5.5Dx
3.1 Bảng demo được cấp nguồn bằng ổ cắm Type-C và điện áp cung cấp cho bảng demo là 5V. Khi sử dụng, hãy kết nối bảng demo với PC qua Type-C, sau đó bạn có thể xem kết quả trên màn hình. Nếu bạn cần hiển thị dữ liệu qua cổng nối tiếp, bạn cần cài đặt chương trình điều khiển WCH CH340 và sau đó sử dụng phần mềm gỡ lỗi cổng nối tiếp để vận hành. Cài đặt giao tiếp cổng nối tiếp như sau: Tốc độ truyền: 9600, Bit dữ liệu: 8, Bit dừng: 1 và không kiểm tra chẵn lẻ.
3.2 Màn hình hiển thị của bảng demo từ trên xuống dưới như sau: nhiệt độ môi trường (tamb), điện áp đầu ra của cảm biến (vtp_cor), nhiệt độ vật thể (bề mặt) (tobj) và nhiệt độ cơ thể người (tbdy). Đơn vị của các giá trị nhiệt độ trên là °C và đơn vị của điện áp là μV. Trong số đó, ba giá trị đầu tiên là đầu ra gốc của thiết bị. Giá trị nhiệt độ cơ thể được tính toán dựa trên các giá trị gốc bằng thuật toán của công ty chúng tôi và chỉ mang tính chất tham khảo. Người dùng có thể xử lý dữ liệu bằng thuật toán nhiệt độ cơ thể của riêng họ theo nhu cầu của họ.
Hiệu ứng hiển thị cổng nối tiếp
2. Ví dụ về chương trình bảng demo của dòng SL-W-TRS-5.5Dx
///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// //
// chính.c
//////
#define CHO KHÁCH HÀNG
#ifdef DÀNH CHO KHÁCH HÀNG
#include "drv_uart.h"
#include "drv_i2c.h"
#include "drv_key.h"
#include "oled/oled.h"
#include "trs55d.h"
extern void SystemCoreClockupdate(void);
bên ngoài void delay_ms(int cnt);
int chính (void)
{
phím uint8_t;
uint8_t chạy = 0x01;
SystemCoreClockupdate();
nếu (SysTick_Config(SystemCoreClock / 1000))
trong khi(1);
uartInit();
drv_i2c_init();
drv_key_init();
Khởi tạo OLED();
Làm mới OLED();
Xóa OLED();
OLED_ShowString(8,0,"Trình bày:",16,1);
OLED_ShowString(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);
Làm mới OLED();
uartGửiChuỗi("SL-W-Chương trình demo TRS-5.5Dx ");
trong khi(1) {
phím = drv_key_read();
trong khi(drv_key_read());
nếu (khóa) {
chạy = (chạy)?0:1;
}
nếu (chạy) {
TRS55D_đọc();
Làm mới OLED();
}
độ trễ_ms(20);
}
}
///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// //
//trs55d.h
//////
#ifndef _TRS55D_H_
#định nghĩa _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"
bên ngoài uint8_t uartSendString(const char* buf);
bên ngoài void OLED_ShowString(uint8_t x,uint8_t y, const char *chr,uint8_t size1,uint8_t chế độ);
extern void OLED_ShowBNum(uint8_t x,uint8_t y,float num,uint8_t len,
uint8_t kích thước 2, chế độ uint8_t); uint8_t TRS55D_IIC_Read(uint8_t addr_dev, uint8_t addr_reg,
uint8_t *buf, uint16_t đếm)
{
uint8_t ret;
cờ xác nhận uint8_t;
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);
đối với (i = 0; i < đếm; i ++) { cờ xác nhận = (i < (đếm-1)) ? 1:0; buf[i]
= drv_i2c_readbyte(cờ xác nhận);
}
drv_i2c_stop();
trả về ret;
}
void 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);
đối với (i = 0; i < đếm; i ++)
{ drv_i2c_writebyte(buf[i]);
}
drv_i2c_stop();
}
typedef hợp nhất {
int16_t i16;
uint16_t u16;
cấu trúc {
uint8_t u8l;
uint8_t u8h;
}không;
}uu16_t;
typedef hợp nhất {
int32_t i32;
cấu trúc {
uint8_t u8b0;
uint8_t u8b1;
uint8_t u8b2;
uint8_t u8b3;
}không;
}uu32_t;
bộ đệm ký tự tĩnh[264];
uu32_t tobj, tamb_cal;
uu32_t vtp_cor;
số thực vtp_uv_f = 0.0;
phao vtp_cor_f = 0.0;
số thực tambf = 0.0; số thực tobjf = 0.0;
số thực tbdyf = 0.0;
trống TRS55D_read(trống)
{
uint8_t rbuf[4];
uint8_t raddr,rdat;
uint8_t waddr = 0x0, wdat = 0x0;
int thời gian chờ = 0;
waddr = 0x30;
wdat = 0x09;
TRS55D_IIC_Write(ADDR_TRS55D, waddr, &wdat,1);
//bắt đầu chuyển đổi delay_ms(100);
// chờ chuyển đổi qua
raddr = 0x03;
làm {
TRS55D_IIC_Đọc (ADDR_TRS55D, raddr, &rdat,1);
} while(((rdat == 0xFF) || (!(rdat & 0x30))) && timeout++ < 200);
raddr = 0x02;
làm {
TRS55D_IIC_Đọc (ADDR_TRS55D, raddr, &rdat,1);
} trong khi(((rdat == 0xFF) || (!(rdat & 0x0B))) && thời gian chờ++ < 200);
// giá trị điện áp sau khi hiệu chuẩn
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];
nếu (vtp_cor.un.u8b2 & 0x80) { vtp_cor.un.u8b3 = 0xFF;
} khác {
vtp_cor.un.u8b3 = 0x00;
// vtp sau khi sửa
}
vtp_cor_f = (float)vtp_cor.i32/524288.0;
vtp_cor_f *= 1000;
// giá trị nhiệt độ môi trường sau khi hiệu chuẩn
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; // nhiệt độ môi trường xung quanh
// nhiệt độ vật thể(bề mặt) sau khi hiệu chuẩn
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;
// nhiệt độ của vật thể(bề mặt)
// lấy bodytemp
tbdyf = get_body_temp(tambf,tobjf); // lấy bodytemp
// hiển thị trên uart sprintf(buffer, "tamb = %.2f, vtp_cor = %.2f, tobj = %.2f, tbdy = %.2f ", tambf, vtp_cor_f, tobjf, tbdyf); uartSendString(buffer);
// hiển thị trên oled
giá trị float[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号