2020年深圳大学电子设计大赛作品决赛报告
高/低年级组: 高年级组
题目名称: 基于ATMega328P的自动人体温度检测显示电路设计
队名: 红糖姜茶
队伍成员:
电子与信息工程学院 郭韬略
电子与信息工程学院 曾海霖
电子与信息工程学院 王浩丞
### 摘要
【摘要】本文提出一种一米以内无接触自动跟踪测量人体体温的方案。方案中采用HC-SR501距离传感器对两米以内进行人体靠近检测,AMG8833红外阵列传感器作为测温传感器,实现对60度视野角,一米以内进行头部检测跟踪并测量温度。AMG8833通过I2C将阵列温度信息传给ATmega328pb处理器,其中预先烧录的算法会对温度信息进行分析处理,并将结果输出给相应端口,如步进电机,蜂鸣器,温度显示电路等。市面上高精度的人体测温成像仪价格昂贵,并且在大规模人员流动的场合比较合适,对于常见的人流分散并狭小的通道入口,配置上述测温成像仪并不现实。本文使用的价格便宜,外观小巧的AMG8833的输出温度准确度在5m内为2.5度,随距离拉进,准确率会提高,并且我们在处理器内部使用算法对温度进行修正,预计最终对一米以内的人体头部进行温度测量的准确率能达到1度。
【关键词】头部跟踪;红外阵列传感器;非接触式体温测量
### 目 录
1.需求分析
2. 方案选择与论证
3. 系统架构及功能描述
4. 理论分析与计算
5.电路图和PCB
6.调试与测试结果
结束语
参考文献
## 自动人体温度监测显示电路设计
电子与信息工程学院电子科学与技术专业 红糖姜茶队
### 1.需求分析
传统热传递式测温方式,如使用体温计,对耗时、人员的要求高,很不利于对大规模人群进行快速测温。疫情以来对快速测温的需求变得非常大,一种自动、快速的人体测温方案需要被提出,做到能高效地检测出有发热症状的疑似患者,起到控制疫情的效果。市面上的额温枪和耳温枪能实现对个人体温的快速测量,但由于其对检测距离的要求很高(一般要求在15cm以内,才能保证精度),无法实现机器自动测量,所以给测温人员带来了一定风险。并且,行走的被测人员需要停下来接受检测,这也带来不必要的时间损失。
为了实现全自动、远距离、对大规模被测人群实现快速测温,市面上已存在多种人体测温热成像仪 [1]。他们利用高分辨红外成像传感器、黑体、人脸跟踪算法等,能实现高精度(0.3°C)人体测温,但是缺点在于价格昂贵,难以做到大规模部署。而对于常见的狭长通道(如地铁站检票闸门)、人流并非十分密集的区域,部署此类热成像仪便过于浪费。
为此,我们设计出一款兼顾成本和精度的全自动式快速跟踪测温电路,其主要性能和特征遵循以下要求:
电路主要集成在一块pcb板上,体型小巧;
检测有人员通过,启动测温;
同步移动测温传感器,对被测人体头部进行跟踪;
连续测温一秒以上,整个检测过程用时尽量短;
被测人体温度高于37.8°C则启动报警。
此方案适用于人流相对轻松的通道,能够实现被测人员无停留通过测温通道,节约了时间,进一步减少了交叉感染的风险。相对于大型人体测温热成像仪来说,本方案采用的传感器价格低得多,整体电路和逻辑计算简单,功耗小,并且在检测范围内准确率上也能达到较为满意的结果。
-----
### 2. 方案选择与论证
对测温传感器的选择:
主流的非接触式测温方案都使用热电堆作为测温传感器,其内的热电偶通过接收外界红外辐射的强弱,来检测被测物体的表面温度。通过此原理,我们可以设计两种测温方案,下面将介绍这两种方案并做出比较。
#### 方案一: 传统简单热电堆传感器近距离测温
此类型的传感器的热电堆的热电偶数量较少,一般只能测量少量被测点的温度。在近距离测温的情况下,由于视场角内无其他非目标物体的干扰,测量的精度一般比较高,能达到0.1°C。而在距离稍远时,视野内非目标物体的温度会对整个测量的准确度造成极大干扰,不适合用作远距离小物体的温度测量。热电堆传感器电路结构较简单,价格也相对便宜。其外观和视野如图一所示,它的四个引脚,分别可得到热电阻和热电堆两个电压值。
![image.png](//image.lceda.cn/pullimage/DMn4e97F4hmzGbSmlw42zC5p7onKSGxXDwxsWujU.png)
图一:简单热电堆传感器示意图
#### 方案二: 红外阵列热电堆传感器测温
红外阵列传感器[2]利用n×n的像素点,每个像素点的视场角相对较小,都能独立实现对传感器整体视场角内的某一片区域进行温度测量,从而可以组成一幅n×n的热成像图。当近距离测温时,目标越靠近传感器,所测温度越高并且越准确 [3],每个像素点所测的温度都是目标物体的温度,可以计算出被测物体温度的平均值,测量的准确率较高。随着测温目标离传感器的距离变远,传感器视野变大,但一定范围内由于少数像素点仍然不受非被测物体的干扰,可以通过计算n×n范围内像素点温度的最大值来估计被测物体的温度,这样的误差也不至于太大。红外阵列热电堆传感器的价格比普通热电堆传感器贵上很多倍,但由于优秀的集成工艺,他们在体积上相差无几。其外观和视野如图二所示,它的外观跟传统的热电堆传感器很像,但每个电热堆检测的只是红外阵列中的一个像素点。其内部电路集成度很高,电压数据已经经过处理,引脚通过I2C通信可以直接得到温度。
![image.png](//image.lceda.cn/pullimage/dWVBCw6J3UFNUZgXAxEnxpMiV6O1TbO6HSs5vkF2.png)
![image.png](//image.lceda.cn/pullimage/ry4NlIoqplr4sUaG1HTppAQoJs5CAxx87CLtWvaw.png)
图二:红外阵列电热堆传感器示意图
本实验的要求是要求事先检测到有人员通过,然后再启动测温,而对于方案一,由于远距离测温的精度太低,我们无法实现对人员靠近的判断(比如一个人从旁边经过,也可能被误判,而启动测温),所以必须额外增加一个测距仪,用来判断是否有人正在靠近。当测温电路开启后,由于需要近距离测温才能保证精度,固定的传感器无法在段距离内达到持续测温时间的要求,所以必须采取识别头部并跟踪的办法。方案一无法识别被测人的头部,测温物体不确定并且无法跟踪,需要添加其他传感器(如摄像头)辅助识别,这样使得成本上升,还需要强大的处理器来对图像进行处理。方案二的传感器输出是一个n×n的热像图,不仅可以测温,还具备简单的图像特征,非常适合做对视野范围内的被测目标做识别与跟踪。
综上,红外阵列热电堆传感器虽然价格不低,但它的功能十分适合本实验的要求,所以我们选择它作为我们的测温传感器。
对跟踪方式的选择:
为了满足对连续测量时间的要求,我们需要设计跟踪电路,实现对目标物体的准确跟踪,即保证传感器移动的速度几乎等于物体移动的速度。
##### 方案一:主动式距离跟踪
此方案通过测量传感器与目标物体的距离,并使他们之间的距离保持在一定范围内来实现跟踪的功能。具体方案是加装传感器测目标物体的距离,并加装电机,让传感器始终和被测物体保持相同的水平速度,直到一个物体测温完成转至测下一个物体的温度。
![image.png](//image.lceda.cn/pullimage/yyneflUuEjqVLwQutbA8yJsAUErfOsrn7h6Uckut.png)
此方案的优点在于少量目标物体能够同时前后进入通道,传感器一一识别与近距离跟踪,依次实现对所有被测物体较为精准的体温测量。难点在于需要保持传感器与被测物体的距离近,而且要维持相同的速度一段时间,并且需要加装测距的模块,总体的算法较为复杂。而传感器是运动的,功耗也必定会很大。
##### 方案二:半主动式角度跟踪
此方案中,测温传感器被固定在通道的尽头处,传感器正对着被测物体前进的方向。当被测物体逐渐靠近时,传感器测得的温度升高。当温度升高到达某个阈值时,开始正式测体温并记录。与此同时,启动跟踪电路,识别被测物体并转动传感器,使它始终对准被测物体,直到无法转动或者无法检测到被测物体为止。测温一旦完成,立即回归初始角度,开始第二次检测。
![image.png](//image.lceda.cn/pullimage/48YjRpypKCL4Lv1nkxO0wHcf1595rV9hgVrlpnlX.png)
测温传感器在此方案中处于半主动状态,即要求被测物体必须进入到某个范围内,跟踪电路才会启动。 此方案的优点在于电路功耗低,算法相对简单,传感器的大视野也使得跟踪时具有较大的容错度,不一定要十分精准。但是,由于传感器与被测物体的距离一直在变化,测温的精度会下降,并且检测时长也不一定能控制得好。
权衡这两者方案的优缺点后,我们决定牺牲精度,选择算法相对简单、功耗低的方案二。因为要保证传感器和被测物体的速度比较困难,而且移动传感器所带来的故障风险也很大,难以保证连续测温的有效进行。
综上所述,我们选择红外阵列热电堆传感器作为整个测温电路的核心传感器,通过半主动式角度跟踪法来保证传感器对被测物体的持续体温测量。
-----
### 3. 系统架构及功能描述
我们选择AMG8833模块来作为我们的红外阵列热电堆传感器模块,该模块集成了松下家的一个8×8的红外阵列热电堆传感器Grid-Eye,视野角为60度,其内部采用松下的MEMS工艺,集成了完整的信号处理电路,使得每秒钟最快可输出10帧的热像图,输出端可通过I2C接口与微处理器进行通信。微处理器使用的是ATmega328,具有32KB可编程闪存,32×8bit通用寄存器,最大20MHz的时钟。
##### 假设和设定
人体温度显著高于环境温度(室内环境下通常是这样),且额头部分的温度是人体温度最高的部分(正常人类通常是这样);
测温入口为长度大于三米、宽一米的通道,被测人员不会从其他位置突然出现在测温区间内。现实生活中很多单向,较长的通道,所以此假设符合实际;
测温通道只能单人通行,即被测人甲通过后,被测人乙才能进入通道。在后续的改进中,此假设可以放宽松;
被测人速度在正常的范围内(1~1.5m/s),移动速度过快的行人无法保证检测时间大于1s;
测温区间内无其他热源,如正在工作的微波炉,热水壶等。在后续的算法改进中,此假设可放宽松。
#### 整个测温流程图
![image.png](//image.lceda.cn/pullimage/mMRhM7dSnmmMQZMMW2aUbQjhUIObfuLuTzV3dBo5.png)
图三:测温流程图
打开电源之后,接入的人体传感器(此处使用的传感器型号为HC-SR501)检测其正对方向100度角的2m之内是否有红外热源(人体)移动,如果没有人体移动,则AMG8833不启动,节省功耗与算力。如果有人体移动,则启动AMG8833,检测温度。将检测出的温度进行数据处理之后得到的结果即为此人的额温,将得出的结果与设定好的阈值(37.8℃)相比较,超过阈值,蜂鸣器启动并报警。
-----
### 4. 理论分析与计算
#### 一、传感器部分原理
任何物体都会发出红外辐射,辐射功率随着物体表面温度的升高而增加。基于这种关系,热电堆可以通过测量接收到的红外辐射精确确定物体的温度。热电堆的核心是多个热电偶,他们的工作基于塞贝克效应。热电偶接收到红外辐射后,其中红外吸收膜的温度上升,与冷端形成温差,串联的多个电热偶可以输出与被测物体温度有关的热电动势。此热电势与用于测量环境温度的高精度热敏电阻(通常使用NTC 或者Nickel RTD)的电压进行比较,便可计算出目标物体的温度。
热电堆
热电堆输出小电压,其电压值VTP被以下因素决定:
由目标物体温度T¬obj
目标物体辐射率ε¬obj
传感器温度Tsen(传感器温度不等于空气或者PCB板温度)
仪器可靠性因子s
滤波修正因子δ
热电堆的输出电压与目标温度之间的关系[4]:
![image.png](//image.lceda.cn/pullimage/By9pEUsVWgcUOxlKPj3C0x9ObQISL4HL0W0YyCTH.png)
热电阻
随着温度的变化,热敏电阻的阻值发生变化,用来检测传感器内部的温度。通常,我们可以把它当作环境温度。NTC热敏电阻是最常用的测温型热敏电阻,电阻阻值随温度按指数型变化(如图一)。它的非线性使得它在测量大范围的温度时准确率降低,最常用的测温区间是0-50。
热敏电阻的电阻与温度的表达式[5]为:
![image.png](//image.lceda.cn/pullimage/vBG737saLLGd4rm1azRPYhKSCkVBGoEvpgmi6r8J.png)
其中Rth(T)是温度为T时热敏电阻的阻值,B是热敏电阻的敏感度,R25是温度为25°C的电阻值。
![image.png](//image.lceda.cn/pullimage/5RdtTJ3N0yAgq8oMrIh066t4TEWwc1ArbQmMJfkN.png)
图四:NTC热阻的R-T曲线
测温传感器的校准
测温时,首先计算出热敏电阻的阻值,再查R-T表得到此时的环境温度Ta,在V-T表中查找到Ta环境温度下VTP电压对应的温度值Tobj即为目标物体的温度。但是由于传感器的响应电压、NTC的阻值等都会有偏差,利用以上测温方法必定会导致实际的测量值不准确,存在某个特定的偏差,所以需要对传感器进行校准以消除这种偏差。
校准的简单方法[5]如下:
将传感器放入25°C恒温水槽中静置20分钟,使得传感器本身达到25°C。注意传感器要与水隔离。
读取NTC电阻的阻值,将其与25°C下对应的参考阻值进行比较,产生修正系数α,通过热敏电阻的校准消除热敏电阻的偏差。
用传感器对准37°C的黑体目标进行温度测量,得到热电堆由于温差导致的热电动势,对比V-T表,产生修正系数β,通过对热电堆的校准消除热电堆的偏差。
引入修正系数后,可直接通过R-T表和V-T表得到被测物体的实际温度。
由于我们使用的是AMG8833集成板,内部功能模块图如图二所示,其热电堆传感器、外部放大电路,ADC等都被集成在Grid-EYE上,校准与修正工作都已经完成。
![image.png](//image.lceda.cn/pullimage/XMHfjI6UTHItdiZEzkQIyfNN8klSSSjX0YnFiStT.png)
图五:“Grid-EYE”的内部功能图
#### 二、自动测温的实现
当8×8的温度点阵输入到MCU中后,对应指令对所测温度进行处理,简单流程如图六所示。
![image.png](//image.lceda.cn/pullimage/tv36L1tgLWjitLVR9a4U8Xj5gS69WLnAQA0vvatI.png)
图六:温度处理流程图
当探测到人体,AMG8833启动之后,会以每秒10帧的速度返回一个8x8的二维数组,这里先对每一列的数组进行一次大小比对,把每一列的最大值选出来,得到一个有8个元素的一维数组,接着对该一维数组进行大小比对,选出最大的数字所在的位置,这个点就是传感器的左端下一次应该对准的位置,启动步进电机,将传感器转动至相应的位置,开始下一次测温。重复10次(1秒)之后,将每次测温取到的最高温度取平均值,即为被测人的实际额温。
具体算法实现如图七、八所示,最后的j即为最高温所在的列数。
![image.png](//image.lceda.cn/pullimage/VX5dJtqmPYqyuip8TANkLmKredIgS3jVFWO03nVz.png)
图七:第一次大小比对的代码
![image.png](//image.lceda.cn/pullimage/Ph62PcbkfhJN5FeJqQo8fDVDclfExWtnpIx2b8iA.png)
图八:第二次比对大小的代码
-----
### 5.电路图和PCB
主电路的原理图如图九所示,每个模块对应相应的功能都已经在原理图上标出。主电路的PCB板如图十所示。
![image.png](//image.lceda.cn/pullimage/nZaoRN0tMzOakytxwuaqdmkz4ZSt65Bnpp2A89eW.png)
图九:主电路原理图
![image.png](//image.lceda.cn/pullimage/8jMlCfxMmgJLQ8LxGTwUjGMjRwx4d765wQLitXJZ.png)
图十:主电路PCB
测温模块的原理图和PCB如图十一、十二所示。
![image.png](//image.lceda.cn/pullimage/e31l2GMXyYym8jAG5IctdyWxoNI8hgoC45zEL5s0.png)
图十一:测温传感器原理图
![image.png](//image.lceda.cn/pullimage/98to5ChKAmNcZx6VuYWPDGSv7kOW6aVvhoejUcaP.png)
图十二:测温电路PCB
>在本次测试使用的程序中,为了避免调用步进电机而造成的进程阻塞,将控制步进电机的程序交给下位机(Arduino Nano)处理,输出引脚为板上的SDA、SCL
>下位机的输入引脚为:SDA>>PD4,SCL>>PD5
-----
### 6.调试与测试结果
由于测温组件缺货原因,我借用了朋友的MLX90640,由因为该传感器的通信波特率太高,无法适配,于是决定用电脑模拟输出串口数据,根据资料书:
![image.png](//image.lceda.cn/pullimage/qopxzHyTK3GYuY5Rq4aYRmwOqXvtCn6gnJKS7lcO.png)
由于数据量过于庞大,手工输入太过麻烦,这里将串口信号减少到8x8的网格,每帧共136字节。
![image.png](//image.lceda.cn/pullimage/zktwzsjbE2cyv8vqsJL3Sloba6IMA0Xce4dUB1qD.png)
这是模拟串口输出的数据表,为了方便调试,将背景噪声变为30℃。
调试过程:首先通过串口发送帧头与数据量,模块返回Ready,表明识别到帧头,开启一次温度识别扫描。
![image.png](//image.lceda.cn/pullimage/RxluhINLjwtMYGZDVucxgbRjiyqhllH10TqdTDEh.png)
发送八次数据之后,计算出最高温度值:34.30度
![image.png](//image.lceda.cn/pullimage/2nbn2lpd1B8AwX2HKcYRconXvQxw4TfOxLjowGIv.png)
如果测量出的温度小于设定的环境温度,则不会显示温度
![image.png](//image.lceda.cn/pullimage/f572O6vo6Gc14upAIjKyIhW2wcJTro3iC5KYNXVv.png)
当人体在传感器视野内走动时,传感器会跟随人体进行移动
![image.png](//image.lceda.cn/pullimage/1tuvjVZYnG5NpZ6irNaAnOwz59U16Rhx2MuaBRpN.png)
![image.png](//image.lceda.cn/pullimage/bDwYayxdnngJPbyH0Rp3wThHS1ttQmtnL4qsc7U6.png)
当人体走出传感器范围后,传感器自动归位
![image.png](//image.lceda.cn/pullimage/ergCNHvzMRygbvShOnUtsSSMoCIfyrOvIqQ9VLzj.png)
当数据内的温度出现超过37.8度时,通过串口输出报警信号,同时对应的蜂鸣器进行报警。
![image.png](//image.lceda.cn/pullimage/UZDJvxS4UKPqUSOtRDbxd4hXy4XEXogsU5yFGJ3N.png)
-----
### 结束语
本次比赛为线上形式,尽管队员之间的配合存在很大的问题,我们尽力克服种种困难,细致分工,最终能在截止前完成比赛的基本任务。我们的选题:自动测温系统,比较新颖,收到的要求比较严格,在与市面上已经存在的红外人体测温成像仪加黑体相比,我们做出来的小型系统在性能上几乎无法与之相比。为了保证任务能顺利完成,我们最终选择牺牲测温精度,采用AMG8833这个小巧廉价的热成像仪对2m以内的人体进行测温再通过修正算法,尽力将误差降低。
【参考文献】
[1]艾睿电子全自动红外人体测温系统. http://www.iraytek.com/products/tk/Xmini/
[2]M. Kimata, Trends in small-format infrared array sensors, Sensors IEEE (2013) 1–4
[3]A. Hayashida, V. Moshnyaga and K. Hashimoto, "The use of thermal ir array sensor for indoor fall detection," 2017 IEEE International Conference on Systems, Man, and Cybernetics (SMC), Banff, AB, 2017, pp. 594-599, doi: 10.1109/SMC.2017.8122671.
[4] THERMOPILE SENSOR FOR CONTACTLESS TEMPERATURE . TE connectivity. https://www.te.com/content/dam/te-com/documents/sensors/global/analog-digital-thermopile-application-note.pdf.
[5] HY16F3981 紅外線測溫應用說明書. 紘康科技.http://www.hycontek.com/hy_mcu/APD-HY16F025_TC.pdf
9
20
收藏到专辑