【深大电赛】-基于Arduino Nano的人体温度检测电路

简介:基于ATMEGA328P的人体温度自动检测电路,用计算机串口模拟传输传感器数据可,以实现识别人体并自动跟踪测温的功能 在第十二届深圳大学电子设计大赛中获得二等奖

开源协议: BSD

发布时间:2020-06-18 14:37:48
  • 2.2k
  • 1
  • 9
描述

2020年深圳大学电子设计大赛作品决赛报告

高/低年级组: 高年级组 题目名称: 基于ATMega328P的自动人体温度检测显示电路设计 队名: 红糖姜茶 队伍成员: 电子与信息工程学院 郭韬略 电子与信息工程学院 曾海霖 电子与信息工程学院 王浩丞

摘要

【摘要】本文提出一种一米以内无接触自动跟踪测量人体体温的方案。方案中采用HC-SR501距离传感器对两米以内进行人体靠近检测,AMG8833红外阵列传感器作为测温传感器,实现对60度视野角,一米以内进行头部检测跟踪并测量温度。AMG8833通过I2C将阵列温度信息传给ATmega328pb处理器,其中预先烧录的算法会对温度信息进行分析处理,并将结果输出给相应端口,如步进电机,蜂鸣器,温度显示电路等。市面上高精度的人体测温成像仪价格昂贵,并且在大规模人员流动的场合比较合适,对于常见的人流分散并狭小的通道入口,配置上述测温成像仪并不现实。本文使用的价格便宜,外观小巧的AMG8833的输出温度准确度在5m内为2.5度,随距离拉进,准确率会提高,并且我们在处理器内部使用算法对温度进行修正,预计最终对一米以内的人体头部进行温度测量的准确率能达到1度。

【关键词】头部跟踪;红外阵列传感器;非接触式体温测量

目 录

1.需求分析

  1. 方案选择与论证
  2. 系统架构及功能描述
  3. 理论分析与计算 5.电路图和PCB 6.调试与测试结果 结束语 参考文献

自动人体温度监测显示电路设计

电子与信息工程学院电子科学与技术专业 红糖姜茶队

1.需求分析

传统热传递式测温方式,如使用体温计,对耗时、人员的要求高,很不利于对大规模人群进行快速测温。疫情以来对快速测温的需求变得非常大,一种自动、快速的人体测温方案需要被提出,做到能高效地检测出有发热症状的疑似患者,起到控制疫情的效果。市面上的额温枪和耳温枪能实现对个人体温的快速测量,但由于其对检测距离的要求很高(一般要求在15cm以内,才能保证精度),无法实现机器自动测量,所以给测温人员带来了一定风险。并且,行走的被测人员需要停下来接受检测,这也带来不必要的时间损失。 为了实现全自动、远距离、对大规模被测人群实现快速测温,市面上已存在多种人体测温热成像仪 [1]。他们利用高分辨红外成像传感器、黑体、人脸跟踪算法等,能实现高精度(0.3°C)人体测温,但是缺点在于价格昂贵,难以做到大规模部署。而对于常见的狭长通道(如地铁站检票闸门)、人流并非十分密集的区域,部署此类热成像仪便过于浪费。 为此,我们设计出一款兼顾成本和精度的全自动式快速跟踪测温电路,其主要性能和特征遵循以下要求: 电路主要集成在一块pcb板上,体型小巧; 检测有人员通过,启动测温; 同步移动测温传感器,对被测人体头部进行跟踪; 连续测温一秒以上,整个检测过程用时尽量短; 被测人体温度高于37.8°C则启动报警。 此方案适用于人流相对轻松的通道,能够实现被测人员无停留通过测温通道,节约了时间,进一步减少了交叉感染的风险。相对于大型人体测温热成像仪来说,本方案采用的传感器价格低得多,整体电路和逻辑计算简单,功耗小,并且在检测范围内准确率上也能达到较为满意的结果。


2. 方案选择与论证

对测温传感器的选择: 主流的非接触式测温方案都使用热电堆作为测温传感器,其内的热电偶通过接收外界红外辐射的强弱,来检测被测物体的表面温度。通过此原理,我们可以设计两种测温方案,下面将介绍这两种方案并做出比较。

方案一: 传统简单热电堆传感器近距离测温

此类型的传感器的热电堆的热电偶数量较少,一般只能测量少量被测点的温度。在近距离测温的情况下,由于视场角内无其他非目标物体的干扰,测量的精度一般比较高,能达到0.1°C。而在距离稍远时,视野内非目标物体的温度会对整个测量的准确度造成极大干扰,不适合用作远距离小物体的温度测量。热电堆传感器电路结构较简单,价格也相对便宜。其外观和视野如图一所示,它的四个引脚,分别可得到热电阻和热电堆两个电压值。 image.png 图一:简单热电堆传感器示意图

方案二: 红外阵列热电堆传感器测温

红外阵列传感器[2]利用n×n的像素点,每个像素点的视场角相对较小,都能独立实现对传感器整体视场角内的某一片区域进行温度测量,从而可以组成一幅n×n的热成像图。当近距离测温时,目标越靠近传感器,所测温度越高并且越准确 [3],每个像素点所测的温度都是目标物体的温度,可以计算出被测物体温度的平均值,测量的准确率较高。随着测温目标离传感器的距离变远,传感器视野变大,但一定范围内由于少数像素点仍然不受非被测物体的干扰,可以通过计算n×n范围内像素点温度的最大值来估计被测物体的温度,这样的误差也不至于太大。红外阵列热电堆传感器的价格比普通热电堆传感器贵上很多倍,但由于优秀的集成工艺,他们在体积上相差无几。其外观和视野如图二所示,它的外观跟传统的热电堆传感器很像,但每个电热堆检测的只是红外阵列中的一个像素点。其内部电路集成度很高,电压数据已经经过处理,引脚通过I2C通信可以直接得到温度。 image.pngimage.png 图二:红外阵列电热堆传感器示意图

本实验的要求是要求事先检测到有人员通过,然后再启动测温,而对于方案一,由于远距离测温的精度太低,我们无法实现对人员靠近的判断(比如一个人从旁边经过,也可能被误判,而启动测温),所以必须额外增加一个测距仪,用来判断是否有人正在靠近。当测温电路开启后,由于需要近距离测温才能保证精度,固定的传感器无法在段距离内达到持续测温时间的要求,所以必须采取识别头部并跟踪的办法。方案一无法识别被测人的头部,测温物体不确定并且无法跟踪,需要添加其他传感器(如摄像头)辅助识别,这样使得成本上升,还需要强大的处理器来对图像进行处理。方案二的传感器输出是一个n×n的热像图,不仅可以测温,还具备简单的图像特征,非常适合做对视野范围内的被测目标做识别与跟踪。 综上,红外阵列热电堆传感器虽然价格不低,但它的功能十分适合本实验的要求,所以我们选择它作为我们的测温传感器。 对跟踪方式的选择: 为了满足对连续测量时间的要求,我们需要设计跟踪电路,实现对目标物体的准确跟踪,即保证传感器移动的速度几乎等于物体移动的速度。

方案一:主动式距离跟踪

此方案通过测量传感器与目标物体的距离,并使他们之间的距离保持在一定范围内来实现跟踪的功能。具体方案是加装传感器测目标物体的距离,并加装电机,让传感器始终和被测物体保持相同的水平速度,直到一个物体测温完成转至测下一个物体的温度。 image.png 此方案的优点在于少量目标物体能够同时前后进入通道,传感器一一识别与近距离跟踪,依次实现对所有被测物体较为精准的体温测量。难点在于需要保持传感器与被测物体的距离近,而且要维持相同的速度一段时间,并且需要加装测距的模块,总体的算法较为复杂。而传感器是运动的,功耗也必定会很大。

方案二:半主动式角度跟踪

此方案中,测温传感器被固定在通道的尽头处,传感器正对着被测物体前进的方向。当被测物体逐渐靠近时,传感器测得的温度升高。当温度升高到达某个阈值时,开始正式测体温并记录。与此同时,启动跟踪电路,识别被测物体并转动传感器,使它始终对准被测物体,直到无法转动或者无法检测到被测物体为止。测温一旦完成,立即回归初始角度,开始第二次检测。 image.png 测温传感器在此方案中处于半主动状态,即要求被测物体必须进入到某个范围内,跟踪电路才会启动。 此方案的优点在于电路功耗低,算法相对简单,传感器的大视野也使得跟踪时具有较大的容错度,不一定要十分精准。但是,由于传感器与被测物体的距离一直在变化,测温的精度会下降,并且检测时长也不一定能控制得好。 权衡这两者方案的优缺点后,我们决定牺牲精度,选择算法相对简单、功耗低的方案二。因为要保证传感器和被测物体的速度比较困难,而且移动传感器所带来的故障风险也很大,难以保证连续测温的有效进行。 综上所述,我们选择红外阵列热电堆传感器作为整个测温电路的核心传感器,通过半主动式角度跟踪法来保证传感器对被测物体的持续体温测量。


3. 系统架构及功能描述

我们选择AMG8833模块来作为我们的红外阵列热电堆传感器模块,该模块集成了松下家的一个8×8的红外阵列热电堆传感器Grid-Eye,视野角为60度,其内部采用松下的MEMS工艺,集成了完整的信号处理电路,使得每秒钟最快可输出10帧的热像图,输出端可通过I2C接口与微处理器进行通信。微处理器使用的是ATmega328,具有32KB可编程闪存,32×8bit通用寄存器,最大20MHz的时钟。

假设和设定
人体温度显著高于环境温度(室内环境下通常是这样),且额头部分的温度是人体温度最高的部分(正常人类通常是这样);
测温入口为长度大于三米、宽一米的通道,被测人员不会从其他位置突然出现在测温区间内。现实生活中很多单向,较长的通道,所以此假设符合实际;
测温通道只能单人通行,即被测人甲通过后,被测人乙才能进入通道。在后续的改进中,此假设可以放宽松;
被测人速度在正常的范围内(1~1.5m/s),移动速度过快的行人无法保证检测时间大于1s;
测温区间内无其他热源,如正在工作的微波炉,热水壶等。在后续的算法改进中,此假设可放宽松。

整个测温流程图

image.png 图三:测温流程图

打开电源之后,接入的人体传感器(此处使用的传感器型号为HC-SR501)检测其正对方向100度角的2m之内是否有红外热源(人体)移动,如果没有人体移动,则AMG8833不启动,节省功耗与算力。如果有人体移动,则启动AMG8833,检测温度。将检测出的温度进行数据处理之后得到的结果即为此人的额温,将得出的结果与设定好的阈值(37.8℃)相比较,超过阈值,蜂鸣器启动并报警。


4. 理论分析与计算

一、传感器部分原理

任何物体都会发出红外辐射,辐射功率随着物体表面温度的升高而增加。基于这种关系,热电堆可以通过测量接收到的红外辐射精确确定物体的温度。热电堆的核心是多个热电偶,他们的工作基于塞贝克效应。热电偶接收到红外辐射后,其中红外吸收膜的温度上升,与冷端形成温差,串联的多个电热偶可以输出与被测物体温度有关的热电动势。此热电势与用于测量环境温度的高精度热敏电阻(通常使用NTC 或者Nickel RTD)的电压进行比较,便可计算出目标物体的温度。 热电堆 热电堆输出小电压,其电压值VTP被以下因素决定: 由目标物体温度T¬obj 目标物体辐射率ε¬obj 传感器温度Tsen(传感器温度不等于空气或者PCB板温度) 仪器可靠性因子s 滤波修正因子δ 热电堆的输出电压与目标温度之间的关系[4]: image.png 热电阻 随着温度的变化,热敏电阻的阻值发生变化,用来检测传感器内部的温度。通常,我们可以把它当作环境温度。NTC热敏电阻是最常用的测温型热敏电阻,电阻阻值随温度按指数型变化(如图一)。它的非线性使得它在测量大范围的温度时准确率降低,最常用的测温区间是0-50。 热敏电阻的电阻与温度的表达式[5]为: image.png 其中Rth(T)是温度为T时热敏电阻的阻值,B是热敏电阻的敏感度,R25是温度为25°C的电阻值。 image.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 图五:“Grid-EYE”的内部功能图

二、自动测温的实现

当8×8的温度点阵输入到MCU中后,对应指令对所测温度进行处理,简单流程如图六所示。 image.png 图六:温度处理流程图 当探测到人体,AMG8833启动之后,会以每秒10帧的速度返回一个8x8的二维数组,这里先对每一列的数组进行一次大小比对,把每一列的最大值选出来,得到一个有8个元素的一维数组,接着对该一维数组进行大小比对,选出最大的数字所在的位置,这个点就是传感器的左端下一次应该对准的位置,启动步进电机,将传感器转动至相应的位置,开始下一次测温。重复10次(1秒)之后,将每次测温取到的最高温度取平均值,即为被测人的实际额温。 具体算法实现如图七、八所示,最后的j即为最高温所在的列数。 image.png 图七:第一次大小比对的代码 image.png 图八:第二次比对大小的代码


5.电路图和PCB

主电路的原理图如图九所示,每个模块对应相应的功能都已经在原理图上标出。主电路的PCB板如图十所示。 image.png 图九:主电路原理图 image.png 图十:主电路PCB 测温模块的原理图和PCB如图十一、十二所示。 image.png 图十一:测温传感器原理图 image.png 图十二:测温电路PCB

在本次测试使用的程序中,为了避免调用步进电机而造成的进程阻塞,将控制步进电机的程序交给下位机(Arduino Nano)处理,输出引脚为板上的SDA、SCL 下位机的输入引脚为:SDA>>PD4,SCL>>PD5


6.调试与测试结果

由于测温组件缺货原因,我借用了朋友的MLX90640,由因为该传感器的通信波特率太高,无法适配,于是决定用电脑模拟输出串口数据,根据资料书: image.png 由于数据量过于庞大,手工输入太过麻烦,这里将串口信号减少到8x8的网格,每帧共136字节。 image.png 这是模拟串口输出的数据表,为了方便调试,将背景噪声变为30℃。 调试过程:首先通过串口发送帧头与数据量<5A5A-8800>,模块返回Ready,表明识别到帧头,开启一次温度识别扫描。 image.png 发送八次数据之后,计算出最高温度值:34.30度 image.png 如果测量出的温度小于设定的环境温度,则不会显示温度 image.png 当人体在传感器视野内走动时,传感器会跟随人体进行移动 image.pngimage.png 当人体走出传感器范围后,传感器自动归位 image.png 当数据内的温度出现超过37.8度时,通过串口输出报警信号,同时对应的蜂鸣器进行报警。 image.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

设计图

ATMega328P-MainBoard

在编辑器中打开

ATMega328P_MainBoard_PCB

在编辑器中打开
ID Name Designator Footprint Quantity BOM_Supplier BOM_Supplier Part
1 L1SS355T1G D1 SOD-323_L1.8-W1.3-LS2.5-RD 1 LCSC C12737
2 300 R1,R3 R0603 2 LCSC C332113
3 10uH L1 IND-SMD_L4.0-W4.0 1 LCSC C354590
4 XKB8080-Z SW1 SW-TH_6P-L8.0-W8.0-P2.50 1 LCSC C318860
5 ULN2003 Q2 SOP-16_L10.0-W3.9-P1.27-LS6.0-BL 1 LCSC C411052
6 1K R2 R0603 1 LCSC C73797
7 复位开关 SW2 KEY-SMD_4P-L6.0-W6.0-P4.50 1 LCSC C255812
8 MM74HC595MX U2,U4 SOIC-16_L9.9-W3.9-P1.27-LS6.0-BL 2 LCSC C128369
9 CH340C U1 SOP-16_L10.0-W3.9-P1.27-LS6.0-BL 1 LCSC C84681
10 HDR-M-2.54_2x3 J3 HDR-M-2.54_2X3 1 LCSC C65114
11 27pF C8,C9 C0805 2 LCSC C237200
12 SR420561N LED1 LED-SEG-TH_12P-L50.3-W19.0-P2.54-S15.24-BL 1 LCSC C109200
13 U-F-M5DD-W-2 USB1 MICRO-USB-SMD_MICRO-USB-A17 1 LCSC C145793
14 FMB1265-05 BUZZER1 BUZ-TH_BD12.0-P7.60-D0.6-FD 1 LCSC C482355
15 16MHz X1 OSC-SMD_4P-L2.5-W2.0-BL 1 LCSC C431149
16 10uF C6 CAP-SMD_L3.2-W1.6-R-RD 1 LCSC C7171
17 HDR-M-2.54_1x2 J4 HDR-M-2.54_1X2 1 LCSC C124375
18 100nF C3,C7,C2,C4,C5,C1 C0805 6 LCSC C482473
19 BCX56,115 Q1 SOT-89-3_L4.5-W2.5-P1.50-LS4.1-TL-CW 1 LCSC C135819
20 XH2.54-5AB CN1 CONN-SMD_5P-P2.54_XH2.54-5AB 1 LCSC C146128
21 LED绿色 LED2 LED0603_GREEN 1 LCSC C72043

展开

服务时间

周一至周五 9:00~18:00
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 立创EDA微信号

    easyeda

  • QQ交流群

    664186054

  • 开源平台公众号

    oshwhub