900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 毕业设计 STM32人体红外测温枪温度采集系统 - 单片机

毕业设计 STM32人体红外测温枪温度采集系统 - 单片机

时间:2018-11-03 18:11:04

相关推荐

毕业设计 STM32人体红外测温枪温度采集系统 - 单片机

文章目录

1 前言2 主要器件3 实现效果4 设计原理MLX90614 红外温度传感器5 部分实现代码6 最后

1 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩STM32单片机人体红外测温枪温度采集系统

🥇学长这里给一个题目综合评分(每项满分5分)

难度系数:4分工作量:4分创新点:3分

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 ErrorCounterslaveAddress <<= 1;//2-7位表示从机地址 从机地址左移一位,把读写位空出来do{repeat:SMBus_StopBit();--ErrorCounter;if(!ErrorCounter) //ErrorCounter=0?{break;//如果为0就跳出do-while{}循环}SMBus_StartBit();if(SMBus_SendByte(slaveAddress))//发送从机地址最低位Wr=0表示接下来写命令{gotorepeat; }if(SMBus_SendByte(command))//发送命令{gotorepeat;}SMBus_StartBit();if(SMBus_SendByte(slaveAddress+1))//发送从机地址+1最低位Rd=1表示接下来读数据{gotorepeat; }DataL = SMBus_ReceiveByte(ACK);//读低位数据保存到DataL DataH = SMBus_ReceiveByte(ACK); //读高位数据保存到DataHPec = 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 最后

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。