基于STM32 的水温播报控制系统设计
2021-11-26赵志强
赵志强
(201620 上海市 上海工程技术大学)
0 引言
水温检测与控制广泛存在于生活和生产中,例如自动加热浴缸的水温控制、锅炉中的水温检测与控制等。传统的水温检测通常以热电阻热电偶为检测元件[1],PLC 为控制器,系统较冗杂,成本较高。本文采用数字式温度传感器DS18B210 温度传感器作为检测元件,基于ARM 的STM32 芯片作为控制器,设计了一种高效准确的水温检测与控制系统。该系统调试简单,维护成本低且功能拓展性高,为温度检测与控制提供了参考。
1 系统设计
本系统包括以ARM Cortex-M4 为内核的STM32F429 控制板、电热合金丝加热棒、半导体制冷片、DS18B20 温度传感器、语音播报电路、继电器控制电路。
本系统采用的DS18B20 温度传感器具有较好的防水性能[2],因此可将温度传感器置于水箱中,直接采集水温并将水温显示到LED 数码管上。STMF429 微处理器将采集到的水温数据与设定的阈值温度进行比较。若水温低于阈值温度,则接通控制加热棒的继电器,启动加热棒,直到实际水温达到阈值温度,停止加热并播报语音提示;若水温比阈值温度高,则接通制冷片继电器,启动制冷片,待水温冷却到阈值温度时,停止制冷并播报提示语音。系统设计如图1 所示。
图1 系统控制原理图Fig.1 System control schematic diagram
2 硬件设计
硬件系统主要包括STM32F429 微处理器、水温检测模块、显示模块、语音播报模块、加热模块、制冷模块。
2.1 水温检测模块
DS18B20 温度传感器是由DALLAS 半导体公司推出的一种“一线总线”接口的温度传感器[3],它具有体积小、适用电压范围大、测温范围宽、连接简单等特点。本系统采用的是一种防水性较强的DS18B20 传感器,适用于本系统中直接采集水温。DS18B20 温度传感器与STM32F429 芯片的连接如图2 所示。
图2 温度传感器电路连接图Fig.2 Temperature sensor circuit connection diagram
2.2 显示模块
本系统采用两片74HC595 缓冲器驱动四位八段数码管显示,前三位用于显示温度的整数部分,最后一位用于显示温度的小数部分。驱动缓冲器的电路连接如图3 所示。
图3 数码管驱动器连接电路图Fig.3 Digital tube driver connection circuit diagram
本系统采用四位八段数码管,共阳极连接,通过动态扫描的方式显示温度传感器测得的温度。连接电路图如图4 所示。
图4 数码管电路连接图Fig.4 Digital tube circuit connection diagram
2.3 语音播报模块
语音播报模块采用WM8978 多媒体数字信号编译码器。WM8978 是欧胜(Wolfson)推出的一款全功能音频处理器,它带有一个HI-FI 级数字信号处理内核,支持增强3D 硬件环绕音效,以及5 频段的硬件均衡器,可以有效改善音质,并有一个可编程的陷波滤波器,用以去除屏幕开、切换等噪音[5]。WM8978 同样集成了对麦克风的支持,以及用于一个强悍的扬声器功放,可提供高达900 mW 的高质量音响效果扬声器功率。一个数字回放限制器可防止扬声器声音过载。WM8978 进一步提升耳机放大器输出功率,在推动16 Ω 耳机时,每声道最大输出功率高达40 mV。可以连接市面上绝大多数适合随身听的高端HI-FI耳机。
WM8988 的主要特性有:I2S 接口,支持最高192 K,24 bit 音频播放;DAC 信噪比98 dB;ADC 信噪比90 dB;支持无电容耳机驱动(提供40 mW@16 Ω 的输出能力);支持扬声器输出(提供0.9 W@8 Ω 的驱动能力);支持立体声差分输入/麦克风输入;支持左右声道音量独立调节;支持3D 效果,支持5 路EQ 调节[6]。
WM8978 的控制通过I2S 接口(即数字音频接口)同MCU 进行音频数据传输(支持音频接收和发送),通过二线(MODE=0,即IIC 接口)或三线(MODE=1)接口进行配置。WM8978 的I2S 接口,由4 个引脚组成:(1)ADCDAT:ADC 数据输出;(2)DACDAT:DAC 数据输入;(3)LRC:数据左/右对齐时钟;(4)BCLK:位时钟,用于同步本系统应用WM8978 的播放音频功能,并为日后升级系统的语音控制提供可能性。WM8978 的原理图如图5 所示,有SPK-和SPK+连接扬声器。
图5 WM8978 电路原理图Fig.5 WM8978 circuit schematic
3 软件设计
3.1 主程序
系统必须首先执行初始化过程,初始化I/O端口,设置定时器,并确定每个外设是否成功连接。配置DS18B20 温度传感器来收集水温,将收集的水温与预设温度进行比较。如果收集的温度低于设定温度,则加热继电器开始加热;如果收集的温度高于设定温度,则冷却继电器开始冷却。直到检测到的水温等于设定的水温,停止继电器动作,发送语音播报命令。主程序流程图如图6 所示。
图6 主程序流程图Fig.6 Main program flow chart
3.2 DS18B20 配置方法
DS18B20 共有6 种信号类型:复位脉冲、应答脉冲、写0、写1、读0 和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号[7],并且发送所有的命令和数据都是字节的低位在前。DS18B20 配置方法如下:
(1)单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480 us,以产生复位脉冲。接着主机释放总线,4.7 K 的上拉电阻将单总线拉高,延时15~60 μs,并进入接收模式(Rx)。
(2)DS18B20 拉低总线60~240 μs,以产生低电平应答脉冲。
(3)写时序包括写0 时序和写1 时序。所有写时序至少需要60 μs,且在二次独立的写时序之间至少需要1 μs 的恢复时间,两种写时序均起始于主机拉低总线。写1 时序:主机输出低电平,延时2 μs,然后释放总线,延时60 μs;写0 时序:主机输出低电平,延时60 μs,然后释放总线,延时2 μs。
(4)单总线器件仅在主机发出读时序时才向主机传输数据,所以在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60 μs,且在两次独立的读时序之间至少需要1 us 的恢复时间。每个读时序都由主机发起,至少拉低总线1 μs。主机在读时序期间必须释放总线,并且在时序起始后的15 μs之内采样总线状态。典型的读时序过程为:主机输出低电平延时2 μs,然后主机转入输入模式延时12 μs,然后读取单总线当前的电平,然后延时50 μs[8]。
4 实验及结果分析
4.1 系统实验
4.1.1 温度测试实验
通过本系统对一系列标准温度进行多次测量,测试本系统的测温准确性。针对5 个不同标准温度,分别采集5 次温度,并取5 次采集值的平均值,评估系统测温的准确性。测温实验数据如表1 所示(单位℃)。
表1 温度测量实验结果Tab.1 Experimental results of temperature measurement
由表1 可知,不同温度下的误差最大为1 ℃。综合5 次不同温度下的测量,总体最大误差为0.34 ℃。
4.1.2 温度控制实验
通过本系统,预设3 个不同的标准水温,再通过电子温度计测试实际水温,测试系统控温的准确性,实验数据如表2 所示(单位℃)。
表2 温度控制实验结果Tab.2 Temperature control experiment results
由以上数据可知,本系统本次实验中的控温最大误差1.2 ℃,平均最大误差为0.9 ℃。
4.2 结果分析
从实验数据可看出,本系统温度测量基本与实际温度相符,能较准确地实现对温度的控制,且扬声器可成功听到温度语音播报。但温度测量和温度控制均有一定误差。同一标准温度多次测量时,实际测量温度有下降趋势。此外,由于本系统所使用的的控温算法较为简单,因此对控温误差也有一定影响。经分析得到,由于水温与室温有温差,所以水温有随时间改变的趋势,水温将逐渐趋于室温。此外,水中温度不完全均衡,因此温度传感器摆放的位置也会影响温度测量和温度控制的准确性。
5 结论
本文设计了一种基于STM32 微处理器的电热水器控温系统,采用STM32F429 使得开发灵活性大,升级空间大;而采用防水性DS18B20温度传感器具有很好的防水性,而且所测得的水温较准确。软件上通过比较算法判断实际水温与系统预设水温的差值,从而实现对加热或制冷继电器的控制,最终实现对水温的较理想控制。在预设好系统标准温度后,可实现一键控温的效果。本文综合并有效利用了软硬件优势,设计了一套控制逻辑简洁直观、安装调试简单易操作、控温效果准确理想的电热水器水温控制系统,具有一定的实用价值。