概述
文章目录
- 1 简介
- 2 主要器件
- 3 实现效果
- 4 设计原理
- MLX90614 红外温度传感器
- 5 部分实现代码
- 6 最后
1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目
基于STM32的人体红外测温枪温度采集系统
大家可用于 课程设计 或 毕业设计
2 主要器件
-
STM32
-
GY-906 温度传感器
-
OLED 显示器
-
红外热释电传感器
-
TP4056 充电器模块
-
18650 电池
-
18650 电池座
-
5 V DC-DC 升压转换器
-
翘板开关 -15 × 21 毫米
-
5 毫米绿色 LED
-
5 毫米红色 LED
工具清单:
-
烙铁
-
线切割机
-
剥线钳
3 实现效果
4 设计原理
工作原理很简单,红外测温传感器MLX90614在额头与传感器之间的距离(由红外传感器测量)匹配设定值时读取人体温度。传感器读数发送到 Arduino 进行处理,处理后的值显示在 0.96" OLED 显示屏上。
除了 OLED 显示屏外,还使用了两个 LED 和一个蜂鸣器来指示输出。
-
当体温正常时,绿色LED(LED1)亮,蜂鸣器鸣叫。
-
当体温高于 104 华氏度时,红色 LED ( LED2 ) 会亮起,蜂鸣器会发出较长时间的哔哔声。
MLX90614 红外温度传感器
MLX90614 是一款用于非接触式温度测量的红外测温仪,能够测量 -70 至 380°C 之间的温度。该传感器采用红外敏感热电堆探测器芯片和信号调节ASIC集成在一个芯片中。它基于 Stefan-Boltzmann 定律工作,该定律指出所有物体都会发射 IR 能量,并且该能量的强度将与该物体的温度成正比。传感器中的传感单元测量目标物体发射了多少红外能量,计算单元使用 17 位内置 ADC 将其转换为温度值,并通过 I2C 通信协议输出数据。
传感器测量物体温度和环境温度以校准物体温度值。MLX 90614 传感器可以读取 -40 到 125 ˚C(-40 到 257 °F)范围内的环境温度和 -70 到 380 ˚C(-94 到 716 °F)范围内的物体温度。
红外测温仪与 Arduino 的连接非常简单,因为它像许多其他组件一样使用 I2C 通信接口。
MLX90614 温度计有 4 个引脚:VIN、GND、SCL 和 SDA。
连接应如下所示:
stm32–> MLX 90614
5V —> VIN
地 --> 地
gpio2 ----> SCL
gpio3 ----> SDA
其他器件就不展示了
最后接线如下:
5 部分实现代码
读取温度代码
u16 SMBus_ReadMemory(u8 slaveAddress, u8 command)
{
u16 data;
u8 Pec;
u8 DataL=0;
u8 DataH=0;
u8 arr[6];
u8 PecReg;
u8 ErrorCounter;
ErrorCounter=0x00;// Initialising of ErrorCounter
slaveAddress <<= 1; //2-7位表示从机地址 从机地址左移一位,把读写位空出来
do
{
repeat:
SMBus_StopBit();
--ErrorCounter;
if(!ErrorCounter) //ErrorCounter=0?
{
break; //如果为0就跳出do-while{}循环
}
SMBus_StartBit();
if(SMBus_SendByte(slaveAddress))//发送从机地址最低位Wr=0表示接下来写命令
{
goto repeat;
}
if(SMBus_SendByte(command))//发送命令
{
goto repeat;
}
SMBus_StartBit();
if(SMBus_SendByte(slaveAddress+1)) //发送从机地址+1最低位Rd=1表示接下来读数据
{
goto repeat;
}
DataL = SMBus_ReceiveByte(ACK); //读低位数据保存到DataL
DataH = SMBus_ReceiveByte(ACK); //读高位数据保存到DataH
Pec = SMBus_ReceiveByte(NACK); //读校验数据保存到Pec
SMBus_StopBit();
arr[5] = slaveAddress;
arr[4] = command;
arr[3] = slaveAddress+1;
arr[2] = DataL;
arr[1] = DataH;
arr[0] = 0;
PecReg=PEC_Calculation(arr);//Calculate CRC 数据校验
}
while(PecReg != Pec);
data = (DataH<<8) | DataL;
return data;
}
6 最后
最后
以上就是听话凉面为你收集整理的【毕业设计】 基于STM32的人体红外测温枪温度采集系统1 简介2 主要器件3 实现效果4 设计原理5 部分实现代码6 最后的全部内容,希望文章能够帮你解决【毕业设计】 基于STM32的人体红外测温枪温度采集系统1 简介2 主要器件3 实现效果4 设计原理5 部分实现代码6 最后所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复