摘 要
温度作为身体健康的一项重要参数,一直以来被人们长期关注。在疫情时代,温度检测对于疫情防控也是必不可少的环节。传统的测温计有反应缓慢、测量精度差、测量时间长、测温过程繁琐等缺点,因而基于单片机的人体测温系统设计与实现,在后疫情的背景下具有重要意义。
本设计在主芯片和主要元器件的选型与规格上遵从功能优先、性价比高的原则。系统选用STM32F103的最小系统板,测温传感器选取DS18B20,液晶显示部分则选用LCD1602液晶屏。系统可实现的功能包括测量精度达到±0.1℃的人体测温、预设人体正常温度区间值、检测温度值比较及蜂鸣器告警等功能。
本设计可以实现对人体的温度检测与显示,具有使用便捷,携带方便,检测快速等特点,检测人体温度仅需5秒钟,误差大小仅在±0.5℃。在后疫情时代,此次设计的温度枪具有一定的实用价值,对于疫情防控与人体健康检测有着重要意义。
关键词
STM32F103;DS18B20;温度;LCD1602
目 录
第1章 绪论
1.1 研究背景及意义
温度,是描述物体冷热程度的一个基本物理量。在人们的日常生产生活中,温度是一个重要的参数,温度的变化可以向人们传递着极其重要的信息,对温度的测量及监控就十分有意义了。某些行业对温度的要求较高,温度稍有变化就会产生不可弥补的后果。如食品行业的食品存储,必须保证食品保存在适宜的温湿度中;档案的管理中,纸制品对于温湿度极为敏感,在不适宜的温度中保存会严重降低档案保存年限;另外在医疗行业中,患者的身体情况也会通过温度表现出来,尤其是去年爆发疫情之后,温度的检测有更大的意义。
传统的水银测温往往所需时间久,且读取不是很方便。本文设计了一个基于STM32的人体测温系统,可以实时显示人体温度并判断是否温度异常。
1.2 国内外现状分析
中国是一个人口大国,对于温度计的需求是十分巨大的。传统的水银式测温计在疫情之前的使用量还是很多的,在中国大约有4.3亿的使用量,基本上是一家一个。但水银测温计具有易碎,读数不便捷的缺点,且水银这种重金属对人体的健康是有害的。所以人体测温度计的改革及创新具有重要的社会意义。在2020年初,新冠疫情的爆发,让医生和人们对测温计的创新要求更加迫不及待了,侧面推动了智能人体测温枪的产生和使用。目前,我国已经研发出一种体积小,成本较低,又不受外界环境温度干扰的人体红外测温仪。
国际上也有多家科技公司在智能红外测温枪领域有所研究,且可以进行一定规模的量产,著名的生产商有Keyence、Texas、Maxim等多家公司。
智能人体测温枪的原理是利用传感器获取人体温度,通过芯片和显示屏显示出人体温度。目前常用的传感器有两类,一类是红外测温传感器,另一种是数字式温度传感器。在疫情期间,我国研发的智能人体测温系统所用的传感器基本上采用的是非接触式红外测温传感器。
总体而言,我国的红外检测技术的发展起步比较晚,在2003年非典之前近乎于一片空白,在非典之后我国迅速成立了一支处理紧急情况的医疗器械队伍。在经过数年的不懈努力后,我国已经在该领域取得了一定的成果。
1.3 主要研究内容
本系统是由温度检测模式和测温区间调整模式组成,设计需要研究的内容如下:
(1)实现本系统测温的基本功能。
(2)通过液晶显示屏显示温度数据。
(3)做出一个按键,实现模式转换功能。
(4)通过两个按键实现设置温度区间。
(5)所测温度超过区间,蜂鸣器报警。
2.1 系统总体设计
本设计是基于STM32微控制器而设计的人体温度测量系统,通过温度芯片DS18B20测量人体温度,STM32芯片驱动液晶模块显示当前测得温度,并判断所显示温度是否在安全温度区间,判断蜂鸣器是否需要报警。
整个系统分为四个模块:主芯片模块、DS18B20温度测量模块、液晶显示、蜂鸣器模块。此次系统的MCU是STM32主芯片的最小板,可以满足本项目的需求。DS18B20是温度测量部分,液晶是控制显示部分,蜂鸣器模块是报警提示温度异常模块。
图 2.1 系统流程图
2.2 硬件简介
2.2.1 STM32芯片
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。此次设计采用的是增强型的STM32F103芯片。时钟频率可达到72MHz,是同类产品中性能最好的一款。内置了32K到128K的闪存,执行代码时,STM32功耗是36mA。
STM32的高性能Cortex-M3内核为1.25DMips/MHz;含有一流的外设:1us的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHZ的I/O翻转速度;在72MHz时消耗36mA,待机时下降的2uA。
内核:ARM64位Cortex-M3 CPU,最高工作频率72MHz,32位单周期乘法,硬件除法,采用哈佛处理器结构,在加载/存储数据的同时能够执行指令取指。
存储器:13个通用的32位寄存器,内置有高达512K字节的内置闪存存储器,用于存放程序和数据。
电源管理:2.0-3.6V的电源供电和I/O接口的驱动源。
时钟与启动:在启动的时候进行系统时钟的选择,复位时默认的CPU时钟为内部8MHz的RC振荡器;之后可以选择具失效监控功能的4-16MHz时钟作为外部时钟,外部时钟失效后,会有相应的中断产生,且在需要是对PLL时钟采取完全的中断管理。
低功耗模式:分3种模式,睡眠、停机、待机模式,在进入停机或待机模式时,RTC、IWDG和对应的时钟不会被停止。
调试模式:串行调试(SWD)和JTAG接口。
DMA:12路通用DMA(DMA1上有7个通道,DMA2上有5个通道)管理设备与存储器之间的数据传输,2个DMA控制器提供环形缓冲区管理,避免了传输数据过程中出现中断,每个通道都有对应的DMA请求逻辑,可通过软件设置传输数据长度,传输源地址和传输目的地址。DAC、I2S、SDIO和ADC是DMA常用的外部设备。
通用同步/异步收发器(USART):内置3个通用同步/异步收发器,2个异步收发器,可提供异步通信、多处理器通信模式、单线半双工通信模式和LIN主从功能。USART1的通信速率可达4.5兆位/秒,其余的串口通信速率则为2.25兆位/秒。
串行单线JTAG调试口(SWJ-DP):内嵌的SWJ-DP接口,可以实现串行单线接口调试和JTAG接口的连接,且TMS脚上的特殊信号序列可实现JTAG和SWJ-DP的转换功能。
依据设计要求和成本预算,低功耗、低成本的STM32F103系列芯片是一个优先选择项,因而本次设计选择的CPU是STM32F103C8T6。
2.2.2 LCD1602
在现今生活中,液晶显示器的使用已经十分普遍,如十分普及的液晶电视,智能计算器的液晶屏,还有智能设备的液晶显示屏等,主要被用于显示数字,字母及其他内容。利用液晶的物理特性,对其有效区域通过电压进行控制,有电压时显示,就可以显示出相应的内容。
液晶显示有很多种的分类方法,按照显示方式可以分为段式、字符式、点阵式等。除掉黑白显示外,液晶显示器还有多灰度有彩色显示等。如若依据驱动方式来分,则可以分为静态驱动(Static)、主动矩阵驱动(Active Matrix)以及单纯矩阵驱动(Simple Matrix)三种。用液晶显示器来显示内容,具有以下四个优点:①显示质量高;②数字式接口;③体积小、质量轻;④低功耗。
本设计选用的显示器是LCD1602字符型显示器,该显示模块是一种专门用于显示字母、符号、数字等点阵式LCD模块,目前常用规格有16×1,16×2,20×2和40×2行等。1602的芯片工作电压是4.5-5.5V,显示容量为16×2个字符,工作电流为2.0mA(5.0V)。此次设计只需显示温度值和测温区间即可,LCD1602显示器是符合需求的较好选择。
2.2.3 DS18B20
DS18B20是由DALLAS(达拉斯)半导体公司生产的一款具有体积小、低功耗、抗干扰能力强及精度高等特点的“一线总线”接口的数字化温度传感器,DS18B20的温度检测与数字数据输出全集成于一个芯片之上,因而其抗干扰力较于其他传感器更强。DS18B20的存储器资源有三种形态,分别是ROM只读存储器、RAM数据暂存器和EEPROM的镜像。
ROM只读存储器是用来存放DS18B20ID编码的,前8位是单线系列编码(DS18B20的编码是19H),后面的48位是该芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。在出厂是数据已被设定好,不被用户更改。DS18B20共有64位ROM。
RAM数据暂存器,是用于内部计算和数据存取的,DS18B20共9个字节RAM,每个字节为8位。是显示温度转换后的数据值信息的是第1、2个字节,第3、4个字节则是用户EEPROM(常用于温度报警值储存)的镜像。上电复位时其值将被刷新。第5个字节是用户使用的。
EEPROM的镜像,第6、7、8个字节为计数寄存器,为了使用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM不是易失性记忆体,可以用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共有3位EEPROM,并在RAM上都保存在镜像,方便用户的操作。
用户对DS18B20的操控步骤如下文所述,首先要对其进行复位,复位就是通过控制器(单片机)给DS18B20单总线至少480uS的低电平信号。确定存在脉冲,在复位电平结束之后,控制器会把数据单总线电平拉高,方便在15~60uS后接收存在脉冲,存在脉冲是一个60~240uS的低电平信号。到这一步,通信双方就已经达成了基本的协议,接下来就是控制器与DS18B20之间的数据通信。之后的操作是控制器发送ROM指令:双方打完了招呼之后要将进行交流了,ROM的指令有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、跳跃ROM、指定匹配芯片、芯片搜索、报警芯片搜索。接着控制器发送存储器操作指令;在ROM指令发送给DS18B20之后,接着(不间断的)就是发送存储器操作指令了。到最后是执行或者数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要根据存储器的操作指令来判断。
综合DS18B20的性能和其优点,且符合项目的需求,故温度传感器采用了DS18B20。
2.3 单片机最小系统
此单片机最小系统包含有电源电路和晶振电路。
电源电路,使用普通的USB接口电路,3.3V电源输出
图 2.3 电源电路模块
晶振电路,顾名思义,就是晶体振荡器,有为单片机提供时钟脉冲的功能,这个脉冲的大小取决于单片机的工作速度的大小。晶振在电气上可以等为一个电容和一个电阻并联再串联一个电容的二端网络。晶振电路中选择两个电容时有两点需注意:一是在许可范围内选择更低的C1,C2的电容值;二是C2值应大于C1值,这样在上电时可以加快晶振起振。
2.4 液晶显示
本设计采用的是LCD1602,具有显示质量高、体积小,重量轻、低功耗等优点,既可显示数字,也可以显示英文字符和中文字符。
图 2.4 液晶显示模块
2.5 调控按键及独立按键
此次设计有两个调控按键及一个独立按键,可以实现复位,最高温度设置,最低温度设置等功能。
图 2.5 调控按键模块
2.6 温度传感器模块
本设计采用的是DS18B20数字式温度传感器,是一款温度检测与数字数据输出集中在一起,有着良好的抗干扰能力的温度传感器。
图 2.6 温度传感器模块
2.7 蜂鸣器模块
蜂鸣器模块是起告警作用,当所测温度高于所设定的最高温度,或低于预设的最低温度时,系统会给蜂鸣器一个高电平信号,从而产生告警声音。当检测的人体温度高于38℃时,(人体健康温度预设最高温度38℃)就会告警,从而判断测试者是否有发烧症状。
图 2.7 蜂鸣器模块
2.8 电源电路
电源电路是为整个系统提高3.3V恒定电压,由DC供电接口和按键开关组成。
图 2.8 电源模块
第3章 软件设计
3.1 整体程序处理
图 3.1 软件程序流程图
程序流程图见图3.1,从图中可以清晰的了解到系统工作的流程。供上恒压源,按下开关之后,测温系统开始工作,显示屏显示默认的温度区间,此时通过按键,可以调整测温区间,确定人体正常体温区间;之后用传感器采集所测人体温度,当所采集的数据不在该区间内,就会触发蜂鸣器告警,从而知道实验对象温度异常,实现人体的温度检测及告警。
3.2 液晶显示
系统开始工作时,LCD屏显示默认温度区间数值字母等字样,并显示通过传感器的测得的周围环境温度,当获得DS18B20温度传感器所测的人体温度时,LCD屏显示适时所测温度。
图 3.2 液晶显示流程图
3.3 按键显示
矩阵按键流程图如图3.3所示,按键功能识别当前系统模式,通过按键来调整温度区间的值,并显示在LCD液晶屏上。
图 3.3 按键程序流程图
3.4 温度采集
温度采集流程是本项目中最关键的一部分,采用了功能稳定的DS18B20温度传感器,初始化串口之后,使能端会发送数据等待温度传感器响应,得到响应的系统在LCD1602上写入数值,并进行温度转换。
图 3.4 温度采集程序流程图
第4章 硬件调试
系统上电之后,温度正常显示,LCD显示内容如图4.1所示,
图 4.1 系统温度显示图
第一行显示当前室内温度为27.7℃,第二行显示的是温度区间,最高温度为:H,38.0℃,最低温度为:L,10.0℃。
设置合适温度区间,人体正常温度范围为36.0-37.3℃,可以调整默认温度区间,方便快速测量及温度告警,调整过程见图4.2。
(a)温度上限调节图 (b) 温度下限调节图
图 4.2 温度调节图
超过温度区间,系统会给蜂鸣器一个高电平信号,蜂鸣器告警,且呼吸灯闪烁,具体情况如图4.3所示。
图 4.3 告警显示图
第5章 总结
自从2020年春季新冠疫情爆发,人体的温度是对新冠疫情监测的一个重要参数。而如何做到准确地、快速地完成测温及温度显示,则需要一个新型的测温工具来代替传统的测温工具。在此背景下,本设计的研究有着重要意义。
本设计采用的是STM32F103C8T6开发板,是STM32系列里的增强型开发板,具有低功耗,性价比高的优势,是此次项目的最佳选择。温度传感器是DS18B20温度传感器,具有抗干扰能力强,功耗低等优势。在设计过程中,硬件部分的选型及搭配是一个值得商榷的问题,元器件的不同类型对设计结果有不同的影响。对各种硬件的电气特性进行查阅与了解,明白其工作原理,工作环境,以及在组装,焊接元器件过程中,需要注意一些引脚连接,虚焊漏焊等问题,只有确保硬件部分没有差错,软件部分才能正常使用。硬件部分制作完毕后,软件部分的设计是本项目中的重中之重。本项目使用的软件编写工具是KEIL5,在软件部分,将本设计主要分为四大模块,分别是主函数调用模块、系统整合模块、按键控制模块、液晶屏显示模块。分别对各个模块进行功能编写,并在设计最后阶段,进行模块整合。经过多次试验数据分析,本设计的测温精度课达到±0.1℃,测温误差达到±0.5℃,每次测温时间不超过5秒,并可实现超温告警功能,基本实现了设计所需的全部功能。
在设计实现的过程中,软硬件部分的设计都有着不足之处,如硬件部分的温度检测模块是温度逐渐上升,而不是直接显示所检测到的温度值,软件部分则是没有将功能细化整合。之后会通过进一步的学习,解决设计中存在的问题,将设计进行更好的完善。
附录:
硬件整体电路图