金冬子,霍修坤
(安徽大学 电子信息工程学院,安徽 合肥 230601)
基于STM32的智能淋浴系统设计与实现
金冬子,霍修坤*
(安徽大学 电子信息工程学院,安徽 合肥 230601)
提出一种基于STM32的智能淋浴系统的设计方案,该方案通过DS18B20实时监控水温,并采用FSMC驱动TFTLCD进行显示。同时,个体可以根据自身的需要,通过按键对水温进行调节。另外,该系统采用梯度计费,在屏幕上显示变化的费用可以督促用户节约用水。本系统在低成本的基础上实现了智能控制和节约资源的目的。
STM32;温度;反馈调节;节水
我国很多地区的浴室或澡堂,还存在大量传统的淋浴设备,这些设备不能自动灵活地调节水温,使用起来多有不便;这些设备也没有梯度计费功能,不少用户总是拖延淋浴时间,白白浪费了不少水资源。鉴于此,我们设计了一个基于STM32的智能淋浴系统。该系统的优点是在低成本的情况下实现对水温较为精确的监测和较为灵活的调节,而且在芯片写入梯度计费算法,通过LCD屏幕上的提示,可以督促用户节约用水。
整体方案如图1所示。本系统通过传感器检测水温,数据由MCU处理传送到显示模块。如果实际温度偏离设定的温度值,MCU通过调用PID算法控制自带DAC输出电压控制继电器,从而控制电热丝的加热时间,以实现对温度的调节。温度的设定值是可以改变的,它由用户根据需求通过按键来改变。
2.1主控介绍
STM32F407ZGT6是 ST公司推出的基于ARM Cortex-M4构架的芯片[1]。该芯片的最高时钟频率可高达168 MHz,并且具有3个分辨率可调(12/10/8/6位)的AD转换器,2个可调(12/8位)的DA转换器,12个16位定时器和2个32位定时器,1个RTC时钟,3个高速SPI,3个IIC,6个串口,自带USB和CAN接口,具有1 M Flash和192 KB SRAM。该芯片具有较高的性价比,使用STM32作为主控芯片完全可以胜任本系统要求。
图1 整体方案流程
2.2水温检测及反馈调节模块
水温检测及反馈调节模块基于DS18B20温度传感器设计而成[2],而数据采集、数据处理、数据显示及调节则是以 STM32为动作的起点。DS18B20的感温范围为-55~125℃,可以满足本场景的使用。DS18B20温度传感器的选用可简化采样/保持电路、运放、数/模转换电路和长途传输的串/并转换电路,系统工作时间被大大缩减,且硬件成本较低。除此之外,DS18B20支持多点组网测温[3],多个传感器的组网可以提高系统测量的精确性和系统的稳定性。
图2 DS18B20温度采集电路图
温度采集电路如图2所示。DS18B20温度传感器将采集的温度参数发送至STM32中,由STM32进行数据处理。而水温控制这一功能则是在系统中设定一个初始温度值(一般根据大多数客户所要求的水温设定),如果采集温度参数超过或低于设定温度值,系统自动根据设定的温度调用PID算法进行调节。除了系统自动对水温调节之外,淋浴器上还设有两个按键,通过STM32对按键的输入捕获,实现对系统预先设定温度值的改变,以满足不同个体对水温的个性化需求。
2.3显示模块
显示部分是本系统人机交互中的重要组成部分。主要用于测量数据的实时显示。本系统利用2.8寸TFTLCD作为显示模块。
本系统对TFTLCD(Thin film transistor-liquid crystal display)的控制原理[4]:通过FMSC(灵活的静态存储控制器)来驱动 TFTLCD,在这里TFTLCD相当于一个有两个地址的SRAM。其中,一个地址是命令地址,另外一个是数据地址。TFTLCD的RS信号决定传送的是数据还是命令,FSMC的A6引脚与TFTLCD的RS引脚相连,实现了命令和数据的区分。连接如图3所示。
图3 LCD接口图
3.1梯度计费算法
梯度计费在本质上就是一个分段函数,在不同的时间段内以不同的价格进行计费,最后对所有的费用进行求和,显示在TFTLCD上。当t≤t1时,f(t)=N1*t;当t>t1时f(t)=N2*(t-t1).
注:其中f(t)为某一段时间的费用;t为当前时间;t1为一个设定的时间点;N1、N2为不同时间范围内的计费参数,其中N1<N2。因此当时间超过t1之后,计费的增加速度会比之前更快,这样设计的意图是通过梯度计费的办法,达到督促用户节约用水的目的。当然,t1、N1和N2都可以根据实际情况进行修改。
3.2显示模块算法
显示模块算法如图4所示。芯片I/O初始化是设置STM32与TFTLCD相连接的I/O端口状态。这里使用到的I/O端口将被复用为GPIO_AF_FSMC功能(实现FSMC控制TFTLCD显示的目的)。TFTLCD我们采用的型号为ILI9341,直接调用厂家提供的初始化代码即可完成TFTLCD的初始化。
图4 显示算法框图
字符显示函数是以画点函数为基础,对画点函数进行反复调用。而画点函数的原理是先确定需要显示的点在TFTLCD上的横纵坐标,再根据需要显示点的颜色设置颜色值,从而实现对TFTLCD上任意一个点的显示控制。
3.3水温检测及反馈调节模块算法
3.3.1水温检测
程序向DS18B20发送命令使其初始化,然后将STM32通过ADC通道收集到的10次采样值求算数平均,得到较为精确的温度,再将得到的温度数据通过显示模块进行显示。同时在程序中设定了相应的温度阈值。如果温度超过或低于阈值,STM32将会通过控制继电器的通断,从而控制电热丝的通断时间。最终调节水温至预先设定的温度值。
同时,本系统还有两个按键可以改变之前程序中设定的温度阈值,以适应不同用户的个性化需求。如果用户按键改变了阈值,系统触发中断进入温度采集环节。特别要注意的是,使用DS18B20要清楚总线的读写时序[5]。水温检测及反馈调节模块流程图如图5所示。
3.3.2反馈调节模块
PID控制算法在具体实现上有模拟和数字两种[6,7]。对于数字PID控制算法又可以分为位置式PID算法和增量式PID算法。本系统采用位置式数字PID,其控制框图如图6所示。其中,控制器为STM32自带的DAC,通过设定的温度值和测得的实际温度之差来调节DAC的输出值。电热丝作为控制环节中的被控对象,DS18B20测得的实际温度值作为控制环节的反馈信号。通断时间长度由DAC输出电压通过控制继电器来控制。
由于计算机系统只能识别数字量,因此需要用数字系统的差分方程代替模拟系统的微分方程,用求和代替积分。其中式(1)和式(2)分别为模拟系统的微分方程和数字系统的差分方程。
式中,u(t)是t时刻调节器的输出,即本系统中的DAC输出;e(t)为偏差值,即DS18B20测得的实际温度值与设定温度值之间的差值。KP为比例系数,TI为积分时间常数,TD为微分时间常数。
图5 水温检测及反馈调节模块流程图
图6 PID控制框图
本系统中,为了不使调节过慢,加上一个初始值U0,得到式(3)。
本系统中数字PID算法流程如图7所示。
图7 数字PID算法流程图
实验检测表明本系统达到了最初的设计目的,实现了对温度的精确调控和督促用户节约用水的目的。我们在25℃的室温情况下用上述系统对一个装有2 L自来水的水箱进行模拟实验。加热器功率为1 500 W,根据应用场景的要求进行了20~55℃温度控制实验,实验数据如表1所示。
可以看出,最大误差为±0.3℃,达到了预期效果,满足应用场景的需求。
表1 测试数据
本系统基于STM32可以实现对水温的实时监控,同时用户还可以根据自己的需求进行温度的控制,实现了洗浴设备的智能化。另外,本系统采用了梯度计费,在屏幕上显示变化了的费用可以督促用户节约用水。在低成本的基础上,实现了智能控制和节约资源的目的。
[1] STMicroelectronics.RM0090referencemanual-STM32F405,STM32F407xx.STM32F415xxand STM32F417 advanced ARM-based-bit MCUs[EB/ OL][2016-04-05].http://www.st.com.
[2] 张英梅,傅仕杰.STM32的智能温室控制系统[J].软件,2010,31(12):14-18.
[3] 孙少伟,戴义保,章高琴.基于DS18B20组网测温的研究[J].自动化仪表,2006,27(10):42-45.
[4] 汤莉莉,黄伟.基于STM32的FSMC接口驱动TFT彩屏设计[J].现代电子技术,2013(20):139-141,144.
[5] 余瑾,姚燕.基于DS18B20测温的单片机温度控制系统[J].微计算机信息,2009,25(8):105-106,112.
[6] 贾诚安,叶林,葛俊锋,等.一种基于STM32和ADS1248的数字PID温度控制系统[J].传感器与微系统,2015,34(11):103-105.
[7] 郭智源,韩建,张西鹏,等.基于STM32的PID和PWM温度控制系统研究[J].科学技术与工程,2011,11(16):3805-3807.
Design and implementation of an intelligent shower system based on STM32
JIN Dong-zi,HUO Xiu-kun*
(School of Electronic Information Engineering,Anhui University,Hefei Anhui 230601,China)
The proposed scheme is about a kind of intelligent shower system based on STM32.The water temperature is monitored timely by the sensor DS18B20.By using FSMC to drive the TFTLCD,our scheme achieved the display of temperature,cost and some other information.Besides,a gradient based algorithm to charge the cost was introduced which will urged the user to save water.
STM32;temperature;feedback regulation;water saving
TP23
A
1004-4329(2016)02-080-04
10.14096/j.cnki.cn34-1069/n/1004-4329(2016)02-080-04
2016-02-19
国家级大学生创新创业训练计划项目(201510357052)资助。
霍修坤(1970-),男,博士,副教授,研究方向:通信、信号处理。Email:xkhuo@ahu.edu.cn。