APP下载

多路DS18B20温度监测系统设计

2022-07-14陈振宇唐海波

中国新技术新产品 2022年7期
关键词:温度传感器限值按键

陈振宇 唐海波 刘 琼

(湖南科技大学物理与电子科学学院,湖南 湘潭 411201)

0 引言

温度是一项十分重要的环境参数,然而在许多场景内,仅仅针对单点的温度进行测量是远远不够的。例如在智慧农业、工业生产、电力系统、智能家居等场景中,需要对多点的温度进行测量,以实现对温度的全面把控。为了满足此要求,很多时候采用对各检测点使用单独的温度检测系统的方法,最后再将数据进行综合处理。此方法尽管达到了多点测温这一目的,但无疑导致了成本与复杂度的提高,得不偿失。在当前,可利用单片机功能强大、抗干扰能力强、运行速度快等优势,实现对多点温度的监测。基于以上背景,该文设计了一种以AT89C51 单片机为主控的八点温度监测系统,其集八点温度检测与显示、数据上传、声光报警等功能于一体,达到了对环境中多点位温度监测的目的。

1 系统总体设计

该系统主体选用AT89C51 作为处理中心,单片机可通过一组I/O 口控制8 个DS18B20 温度传感器,并通过另外一组I/O 口将8 个温度传感器所测的温度数据在LCD 液晶显示器上依次展示出来,且所测温度数据可由RS232 通信接口传达至PC 端;与此同时,单片机将对8 个所测温度值进行判定:当任意一点的温度值不在预先设定好的正常区间范围内时,外接的蜂鸣器将会发出声音,红色LED 灯将会亮起。其中,温度区间范围的上下限值可通过按键进行修改,操作过程中将伴有按键音提示。

2 系统硬件设计

2.1 中心处理模块

该设计选用51 芯片系列中的AT89C51 单片机作为核心主控,采用5V 工作电压;选择手动复位方式,只需在RST引脚和工作电源之间安装一个弹性小按键即可,当按下按键时,就会赋给RST 引脚一个高电平,便能完成手动复位;时钟电路主要负责产生单片机内部的时钟信号,可以确保主控制器井然有序地执行各条指令。

2.2 八点温度数据采集模块

该系统中的温度采集模块的核心是八个DS18B20 温度传感器,不同于传统的热电偶、热敏电阻等感温元器件,它能直接读出测量点的温度值,集体积小、精度高、稳定性强等优点于一体,可充分满足此系统中对温度检测的要求。其具有3 个引脚:GND、DQ(双向数据传输通道)、VDD。VDD一般接5V电源,在与单片机的连接时需要在DQ数字信号线上挂一个4.7kΩ 的上拉电阻。该设计中将八个DS18B20温度传感器的DQ 引脚接在单片机的P1 系列端口上,每个端口单独控制一个传感器,即可完成对八个测量点的温度数据的采集。

2.3 液晶显示模块

此模块主要选择字符型LCD1602 液晶显示器显示传感器输送过来的温度数据以及温度区间的上下限阈值。可将其D0~D7 引脚与单片机的P0 系列引脚相连接,相连的八根数据传输线上需要挂接一个10 kΩ 的上拉排阻,才能正常驱动LCD1602 显示器;再将三个控制端口分别对接至单片机的P2.0~P2.2 引脚,VDD 接入最佳工作电压值5V,VSS 和VEE直接接地即可。

2.4 键盘模块

该设计中的键盘由四个小按键构成,单片机主要通过识别对应端口的状态来判断各按键的按下情况,可以在单片机的P3.2~P3.5 引脚与GND 之间跨接四个弹性小按键。当按下弹性小按键时,便可将低电平送至对应的端口处。最后,当有任一按键按下时,可将控制蜂鸣器的P2.5 引脚电平拉低100ms,即可实现按键音的效果。

2.5 串行通信模块

该设计选择稳定性较强的RS232 通信接口来完成串行通信任务。单片机引脚中的P3.0 与P3.1 的第二功能就是负责单片机的串行口通信功能,利用此引脚以及RS232 模块即可设计好接口电路。此外,RS232 接口与单片机串口的通信信号并不是完全一致的,需要使用MAX232 作为信号转换中介,只有此芯片把RS232 电平与TTL 电平进行转换以后,才能确保两机之间通信顺利。

2.6 声光报警模块

声音报警模块的实现需要在单片机的P2.5 引脚上利用蜂鸣器、PNP 型三极管、电阻设计好电路,若系统判定八个测量点的温度值有任意一个不在事先设定好的阈值内,则将P2.5 引脚的电平拉低,蜂鸣器将发出声音。灯光报警部分可在P2.3 与P2.4 引脚上分别用红色与绿色LED 灯与电阻串联至电源,通过引脚电平高低来调控红、绿灯光的亮灭。

3 系统软件设计

3.1 温度检测部分

该部分的核心器件是DS18B20 温度传感器。其对操作步骤要求十分严格,只有在其初始化完成以后,才能进行指令字的写入与读出。大致可按照下面的步骤进行:1)对DS18B20 进行初始化;2)复位成功后对其发送一条跳过读序列号ROM 指令0xCC(本设计中是由单片机的八个端口各自控制一个DS18B20 传感器,没有采用一个端口控制八个传感器的方式,所以不需要读取传感器的序列号);3)再发送两条RAM 指令(0x44 为启动温度转换指令;0xBE 为读取内部RAM);4)最后读取内部RAM 的前两个字节,即为DS18B20 所测的温度值的二进制补码,后续只需简单进行进制转换即可。

同时,要想顺利驱动DS18B20 完成各条指令,必须遵循时序图中的要求,编排好各指令的时序。根据DS18B20温度传感器时序原理,可大致对时序进行如下安排:1)首先DS18B20 初始化时需将数据总线拉高480us,再等待传感器应答,如有低电平传送过来,则代表传感器初始化成功;2)DS18B20 写命令字周期一般要求60us ≤T ≤120us,也就是对总线写“0”或“1”须将总线拉低/高60us 以上,且每两位之间需要有1us 的间隔时间;3)DS18B20 读命令字周期也一般为60us 以上,且在读操作开始前应当把总线先拉低1us,DS18B20 才开始将数据读出。

3.2 液晶显示部分

液晶显示部分大致可按如下步骤进行:1)初始化LCD1602。依次写入0x38 命令字、0x0C 命令字、0x06 命令字、0x01 命令字,便能设置好显示器模式、光标性质等基本要素;2)取得各点温度数据。此处获取的是温度传感器输送过来的二进制温度值;3)换算成十进制温度数据;4)设置各点横纵坐标。此步骤需要调用写命令字函数,再输入对应位置的数据指针即可实现坐标点定位;5)显示各点温度数据。调用写数据函数将八个温度数据依次写入即可。

3.3 键盘部分

键盘部分主要由四个独立弹性按键配合LCD1602 与蜂鸣器进行可视化的人机交互,K1 按键负责对串口发送功能进行控制,K2~K4 按键主要负责调控温度区间上下限值,按键模块子函数主要根据各按键的按下情况和按下次数来进行判断与操作。其中温度区间设置程序逻辑大致如下:1)K2第一次按下,此时自定义标志字flag=0,不进行任何操作;2)K2 按下两次,此时flag+1=1,系统选中温度上限值。再判断K3、K4 是否按下,若按下则温度上限值加/减1;3)K2 按下三次,此时flag+1=2,系统选中温度下限值。同理再判断K3、K4 是否按下,若按下则温度下限值加/减1;4)K2 按下四次,此时flag+1=3,再令flag=0,即可返回第一步。

3.4 串行通信部分

串行通信功能主要由单片机控制串行口和相关寄存器,再配合内部定时器及中断来完成。此部分主要由两个功能函数构成:①串口初始化函数。T1 定时器的工作方式选择方式2(命令字为0x20),波特率设置为9600bps(令TH1/TL1=0xfd),启动T1 定时器(令TR1=1),串行口工作方式选择方式1(命令字为0x50),控制相关中断(令EA、ES=1);②输出数据子函数。将数据写入SBUF 寄存器,全部写入后请求中断TI 将会置零,表示传输已完成。

3.5 主程序部分

主程序可按以下步骤进行操作:1)完成各部件初始化;2)八点温度传感器轮寻读取所有温度数据;3)在LCD1602上显示出八个测量点的温度值以及温度区间上下限值;4)扫描键盘模块引脚电平,判断是否有按键按下,若有则根据按键对应的功能进行操作,实现人机互动;5)判断各点温度值是否在设定区间之内,若不在则将进行声光报警;6)重新轮寻各点的温度值,跳转至3)。

4 仿真分析

将该系统在Proteus 8 Professional 软件中进行仿真模拟,仿真情况如图1 所示。运行过程如下:首先LM016L 液晶显示器开始亮起(Proteus 中无直接的LCD1602 液晶显示器,可用LM016L 代替),LM016L 将显示开机画面;待系统的各元器件初始化完成以后,八个传感器开始采集温度数据,并按时序传送至单片机内,然后显示器上依次展示出8 个点的温度值与温度区间的上下限值(此处U 代表温度上限值,D代表温度下限值,系统初始设置上限值为40℃,下限值为10℃)。可明显看到当前八点温度值均在设定范围以内,故绿色LED 灯将会亮起。

此外,在Proteus 仿真过程中可以随时修改DS18B20 组件上的温度值,可以用于测试液晶显示以及声光报警功能。不妨将任一DS18B20 温度传感器的温度值调高或者调低,使其不在设定好的温度范围内,等待单片机再次扫描更新数据以后,系统判定有温度不在设定范围内,于是可以明显听到蜂鸣器BUZZER 发出声音,红色LED 亮起;当把温度值重新调回至正常区间内后,待系统再次扫描更新,声光警报随即停止,绿色LED 再次亮起。

四个弹性小按键BUTTON 组成了键盘模块,K1 可以控制系统与上机位之间的信息传递,K2~K4 可以调节温度区间上下限值,当通过K2 选中区间的某一最值时,该值的个位数光标将会闪动,且在按下时伴随有短暂的按键音,可对使用者进行提醒。再按下K3 或者K4,便能对选中值进行加1或者减1。

串口通信部分使用的是仿真软件中的虚拟串口COMPIM组件,其包含RS232 接口与电平转换功能,因此不需要另外添加MAX232 芯片。当按下K1 发送按钮时,系统将会把数据通过串口传输至上机位,在仿真中可通过串口调试助手或者Proteus 自带的虚拟终端Virtual Terminal 进行数据观察。如使用虚拟终端接收,则要在组件属性中设置好波特率,然后在弹窗中观察端口数据。通过监视端口信息,可以看到八个点的温度值依次发送到上机位终端中。经过以上仿真分析,该系统完成了八个点位的温度测量、显示、上传,以及不正常温度的声光报警,整体达到设计要求。

图1 系统整体仿真电路图

5 结语

该设计基于八路DS18B20 温度传感器,选用AT89C51单片机作为中心处理器,实现了8 个点位的温度测量,八点温度值可在LCD1602 液晶显示器中依次显示,并通过RS232接口传至上机位PC 端;若温度值不在设定范围以内,系统将进行报警提醒,其中温度区间范围可通过按键进行设置。该系统成本较低、线路简明、稳定性强,是一套十分实用与完整的多点温度监测方案。

猜你喜欢

温度传感器限值按键
基于有限状态机的按键检测程序设计
温度传感器DS18B20在温度计设计中的应用
一种高性能CMOS温度传感器
关于废水排放特别限值的思考
XTR105电流变送器在温度传感器中的应用
辽宁省辽河流域石油炼制排放限值的制定
一种多方向导光按键结构设计
蓄电池SOC限值下的微电网协调控制策略研究
温度传感器在笔记本电脑散热系统中的应用
环境保护部解读新发布的大气污染物特别排放限值