电热开水器控制人机界面的设计与开发
2018-11-05包嘉铭
包嘉铭
摘要: 开水器是在当前饮用水条件下,为满足人们日常生活实际需求而设计的一类能够及时生产健康饮用沸水的设备。目前在开水器水位检测、生沸水的隔离以及“千沸水”的避免上仍然能存在诸多不足。本文设计出了一种新型的多水箱多温开水器结构,并以单片机为核心控制器,拟定了该开水器的触摸屏人机交互控制界面设计方案,实现了能够分别同时供应高温沸水,沸后温水和低于10℃冷水的功能。
【关键词】开水器 XPT2046 STM32F103RCT6人机界面
1 总体设计方案
日常生活中人们对电热开水器的功能需求,主要为:水量随时充盈,即开即饮、自动保温、生沸水分离,同时分别供应高温沸水、沸后温水和低于10℃冷水,具有绿色环保、节能卫生、适用性强、性能稳定等特点。
针对电热开水器的功能要求,我们倾向于设计出一种能够实现提供多温开水、冷饮水功能的三水箱分离式电热开水器结构。其主要构件有:产水箱、开水箱、温水箱、开关、水位信号传感器、温度信号传感器、单片机MCU、水阀等。由单片机实时对水位信号,温度信号进行采集,再根据程序控制相应的输出引脚产生电平变化,完成制冷、加热、加水等过程,触摸屏作为整个控制系统的输入输出设备来完成显示和触控交互的功能。
基于单片机MCU对整个开水器控制系统进行模块划分,本文主要针对触摸屏及接口模块进行设计分析。触摸屏既可以作为显示屏又可以作为给系统发出指令的输入设备,主要功能是显示人机交互界面和能够手动控制三个水箱的温度上下限,为此,我们选用在智能移动设备、医疗器械、工业控制、办公助理等领域都占有一席之地的四线电阻式触控屏。
根据电热开水器控制系统的运行环境以及触控屏的工作原理,采用合理的中央处理芯片对实现电热开水器的人机交互功能至关重要。本文采用STM32F103开发板作为核心开发板,此开发板的主芯片为STM32F103RCT6。
2 触摸屏控制电路设计
人工智能时代随着自动化技术和图像处理技术的不断创新已经来临,作为重要输入手段的平面显示技术将会随着科技潮流在生活生产中扮演愈加重要的角色,而液晶显示LCD( Liquid Crystal Display)器件保持其轻巧的外形同时可以提供高质量的显示画面并且能耗小、价格低廉。我们现在所说的触控屏大多都是触控屏与显示屏配合好的一体屏,作为人机交互手段的一个传感器,需要粘贴在显示器的上表面一起使用,显示器上编程好的图形或按键被触摸时,触摸反馈系统识别接触位置的坐标和运动走向,计算机再执行对应命令。
2.1 显示屏与其控制原理
TFT-LCD是有源矩阵液晶显示器的一种,实际上就是嵌入了TFT的一个平行板电容器。TFT作为开关管的一个三端器件,源极和漏极分别与一个制作在玻璃基板上的半导体层两端相连。电压是施加于栅极上从而起到控制源、漏两电极间电流的作用,并通过绝缘膜对应半导体。TFT-LCD屏上的每个像素结构都可以近似为一个点阵单元格。此单元格中的液晶材料包夹于公用电极和像素电极中间且每个点阵单元格中有3个TFT驱动单元,通过这三种基本颜色组合成真彩色,分别为R、G、B驱动单元。这些结构一起组成了对液晶点阵的驱动矩阵电路。
本文显示屏采用的是2 8寸液晶屏,模块尺寸51mmx82.6mm,分辨率为240x320,拥有720x320个TFT驱动液晶单元。显示驱动模块采用的是ILI9341芯片,这是一款262,144色单芯片SOC驱动器,其内置的源极驱动器和栅极驱动器分别是720通道和320通道,还有用于图形显示数据的172,800字节GRAM和电源电路。
2.2 触摸屏坐标计算
四線电阻式触摸屏的典型结构包括两层均匀导电的IT0导体层和中间的透明绝缘点。触控屏的上下导体层构成电阻网络,当控制器施加驱动电压给顶层电极(x+,X-),会在电阻网络上形成电压梯度。在压力作用下使得两导体层在触点位置相触碰,则由下层导体层中的探针可以测得接触点X方向的电压值,经计算能得到接触点的X坐标。同理控制器给底层电极(Y+,Y_)施加驱动电压,在顶层可测得接触点的Y坐标,X,Y代表接触点在TFT-LCD屏上的像素点坐标,x、y代表压力信号经A/D转换得到的数字量电压值。Xmin,ymin代表触控屏上最小坐标点在电压梯度场中的电压值,Xmax,Ymax则代表最大坐标点的电压值。W和H为TFT-LCD显示屏在x和y方向上的像素点数,本文采用2 8寸显示屏W=240,H=320。选用的控制芯片为XPT2046.
2.3 XPT2046功能介绍
XPT2046是一款4线触摸屏驱动芯片,包含一个分辨率为125KHz的12位逐步A/D转换器,它的低电压I/O接口支持1.5V至5.25V电压。芯片内部封装了温度传感器,工作温度范围是-400 C至+ 850。XPT2046采用小型封装:TSSOP-16(本文采用),QFN-16和VFBGA-48,XPT2046还可以检测触摸屏上的压力值并通过执行两次A/D转换来计算触点坐标。
XPT2046包含采样/保持,模数转换和串行数据输出等功能,可以采用2.7V至5.5V电源电压的单电源供电。在片内控制寄存器中选择后,X,Y,Z,VBAT,Temp和AUX模拟信号进入A/D转换器。A/D转换器的工作模式分为单端和差分模式。
本文倾向于选用差分模式。这主要是因为Vcc产生波动时单端模式下的参考电压也会波动,从而导致测量误差较大。而在差分模式下以Y轴坐标测量为例,x+电压为触点电压,Y+和Y_引脚之间的电压为参考电压。Vcc波动时它们之间的比值保持不变,Y轴坐标的测量结果就不会发生改变,大大提高测量的准确性。
2.4 觸摸屏显示屏控制模块
触摸屏显示屏控制模块包括多路电源电路:TFT-LCD及其显示驱动电路、触摸屏控制芯片XPT2046控制电路、FPC接口电路、SD卡座电路,将以上模块制作在一块PCB板上,并设置单排直插2*SIP-20模块接口电路,方便其与多种主控MCU进行连接,以本文中我们选用的STM32F103RCT6为例:
2.4.1 XPT2046控制电路
XPT2046与主控MCU通过SPI接口连接,其中TP DCLK、TP_CS、TP DIN、TPDOUT四根引脚负责SPI接口控制,分别控制时钟信号,片选使能信号,串行数据输入和串行数据输出。TP BUSY为忙时信号线,TP CS被选中为高电平时其处于高电阻状态。TP PEN负责中断请求信号,需要外接上拉电阻。当触控屏检测到被触摸时,XPT2046通过该引脚输出一个低电平信号,这是向单片机STM32F103RCT6发出坐标检测的中断请求。X+、X-、Y+、Y_四根引脚提供检测X与Y方向坐标时的驱动电压,其中X+、Y+还作为压力信号经A/D转换的输入引脚。
2.4.2 SD卡控制电路
闪存卡(SD卡)的优点有:体积轻巧、容量较大、使用能耗低和具有非易失性,通常作为大量数据的存储介质。本文TFT-LCD显示屏分辨率为320x240,显示屏上一幅图片的大小为320x240x3=230400字节,需要225K存储空间。添加SD卡存储资源是为了节省STM32F103RCT6的ROM资源。
SD卡可以采SPI总线或SD总线访问,我们选用的主控芯片STM32F103RCT6有SPI总线模块,因此基于这一特点设计通过SPI总线访问SD卡的硬件接口电路。
由上文可知SD卡模块与XPT2046芯片一样是通过SPI通信与主控MCU连接。CS、DO、DI、SCLK四根引脚负责SPI接口控制,分别控制使能信号、串行数据输出、串行数据输入和时序信号。为实现数据保护和SD卡的热插拔,可连接数据写保护引脚WRPROTECT和插卡监控引脚PLUGIN TEST。
2.4.3 FPC接口电路
触控显示屏模块由XPT2046、四线电阻式触控屏、TFT-LCD和PCB铜板四个部分组成,并通过焊接、粘贴工艺等组合在一起。将XPT2046芯片上x+、X-、Y+、Y-四根引脚和LCD控制芯片ILI9341的接口引脚通过柔性电路板FPC排线连接到PCB铜板上。
FPC排线接口引脚共39脚,除了x+、X-、Y+、Y_为四线电阻式触摸屏的4根引脚电极,其余控制LCD驱动芯片ILI9341。ILI9341与主控MCU是通过8080并口通信,8080接口有五条基本的控制引脚分别CS、RS、WR、RD、REST。为了节约IO接口,本文选用了74HC573这款八路输出的透明锁存器。ILI93 41控制芯片的DB[10: 17]与74HC573的D[O:7]相连,同时连接主控MCU的8个IO口。74HC573的输出Q[O:7]与ILI9341控制芯片的DB[O:7]相连。LED[1: 4]+与LED-这五根引脚都用来控制液晶屏的背光板光源。
2.4.4 MCU接口电路
触摸显示屏模块与主控MCU的接口电路采用Header20x2接口电路,其中左边奇数引脚的1-39是TFT-LCD与STM32F103RCT6的接口电路,第7-31脚与STM32F103RCT6间增加了lOOOQ限流电阻,可以起到保护TFT的作用。如果主控MCU工作电压为5V而TFT-LCD模块的工作电压只有3.3V,TFT容易被损坏。573 LEIO引脚连接74HC573扩展锁存器。第2-8脚与SD卡座电路的SPI通信接口连接,第30-40脚与触控屏控制芯片XPT2046的SPI通信接口连接。此接口电路使用双排插针与STM32开发板相连接。
3 控制程序设计
一个智能的触摸屏控制系统需要有良好运行的硬件电路来实现信息的流通,其真正的智能只能通过一系列的程序逻辑来实现。
3.1 触摸屏驱动及校准程序设计
我们要顺利实现触摸屏的人机交互功能首先要保证触摸屏控制芯片XPT2046可以精准将测得的接触电压转换为坐标的AD值也就是数字信号,这就是所谓的触摸屏驱动程序。完成触摸屏控制芯片的驱动后还需要进行校准和调试,这样后续的触摸操作才可以在预先设计的坐标位置进行完成。
3.1.1 驱动程序
第一步往XPT2046中输入一个字节(通过模拟SPI时序)再从XPT2046中读取AD转换结果。可以设定一个函数:READTIMES(多次转换)加入到读取程序中,然后去掉一个最高值去掉一个最低值留中间,最后取平均值,这样得到的AD转换结果就比较精确。
我们通过程序发现一个点的AD转换值必须要X方向调用一次函数后再于Y方向运行一次才有结果。于是将此程序进行升级设计,将X和Y方向的函数调用封装在一起操作,把读取到的X方向AD转换平均值和Y方向AD转换平均值分别赋值到存xtemp和ytemp中,然后用if语句判断他们与100的大小。若是AD值大于或等于100即正常的触摸范围。
调用u8 TP___ Read_ XY (u16*x,u16*y)程序,通过返回值是1还是0就可知道读取到的AD值是否有效。但是光这样的计算会出现较大误差,必须再用其他程序来提高读取精度。如图l所示本文设计调用两次这个程序,把得到的两组X、Y方向AD值进行误差分析考量,如果考量结果不在误差接受范围内则返回重新读取AD值。
3.1.2 触摸屏校准程序
在引入校准之前要把读到的AD值通过计算转化为实际坐标。因为TFT屏的原点在实际操作中没办法确定,本文在操作中为了方便计算取TFT屏四个角上的点。然后用手指或笔触摸这4个点,分别记录下这四个点的AD值,将他们记为(Mx1,My1),(Mx2,My2),(Mx3,My3),(Mx4,My4)。
此時触摸TFT屏上的任意一点,得到的AD值读取结果为(Mx,My),那么实际坐标的计算公式如下:
在主函数中包含有一个按键检测程序,当按下开发板上的key0时就会开始调用触摸屏校准程序。下而是整个校准过程的程序流程:开始一读取四点AD值一计算校准参数d1、d2、d3、d4一计算出facl、fac2一0.95 3.2 TFT-LCD驱动及显示控制程序 LCD显示包括在LCD上显示线条、图形、填充、字符、字符串等等。而这些显示程序都基于LCD画点程序进行扩展。几乎所有上层函数都需要调用画点函数来完成,这说明了画点程序在整个LCD显示程序中的重要性。我们首先完成光标位置的设定,再将数据写入GRAM,最后我们定义一个用来存放画笔颜色的全局变量POINTCOLOR,写入LCD模块这就实现了一次画点操作。 有了画点程序为基础,我们可以将其扩展为显示线条、图形、填充、字符、字符串等程序,这里我们以显示字符程序为例。在LCD屏上显示字符就是控制指定区域内像素点的亮暗来显示的,在本文的程序中会用到1206字体,1608字体,2412字体这三个字符集点阵数据组。1608表示显示字符的区域空问,也就是高度16位*宽度8位,高度16位拆分为2字节,所以16字节控制一个字符显示,体现在程序中就是16个16进制数据组成的数据序列。 3.3 实际应用程序 由于实验条件的限制,本文将用一个RGB灯来模拟水箱的加热电路。 首先开机显示电热开水器的初始界而,当按下屏幕上的设置键时进入开水箱、温水箱、冷水箱三个水箱标志的选择界而。点击任意水箱都会进入与其对应的温度调节界而,在温度调节界而中有三个温度分别是上限温度、下限温度和实时温度。手动按动屏幕上的加减号设置好上、下限温度后,当实时温度超过下限温度,RGB灯亮,且其亮度随着实时温度升高而变亮,当实时温度超过上限温度时RGB灯熄灭。这个过程实际模拟的是加热电路,当温度传感器检测到水温超过下限温度时,加热管工作且水温升高,当温度传感器检测到水温超过上限温度时,停止加热。 4 结论 针对目前常见的开水器所存在的缺点,本文采用了以STM32F103RCT6单片机为核心MCU的开发板来设计开水器触摸屏控制的各模块电路,并对人机交互界而进行开发,在触摸屏控制电路,人机交互界而软件开发进行了一些基本的研究。主要成果如下:一是构建出了新型多温多水箱开水器结构,能够实现生沸水的分离,从而满足对饮用水健康环保的要求二是根据电开水器可能需要适应的工作环境选用了四线电阻式触摸屏;三是选用XPT2046为触摸屏控制芯片,对压力信号进行采集与转换,输出数字信号传递给单片机,从而分析计算出所需要的触摸坐标位置;四是选用ILI9341来驱动TFT-LCD,并设计电路将LCD驱动芯片ILI9341的接口引脚和XPT2046芯片上的4个电极引脚和通过柔性印刷电路FPC排线连接到控制PCB板上;五是通过触摸屏控制信号与动作电路的逻辑关系画出了程序的流程图,完成了程序的设计;六是通过触摸屏控制信号与动作电路的逻辑关系画出了程序的流程图,完成了人机交互功能的程序逻辑设计。七是优化触摸屏驱动及校准程序,LCD驱动及显示程序,完成了人机交互界而的设计。将其与控制逻辑相结合,最终实现了人机交互的整个功能。 参考文献 [1]余锡存,曹国华.单片机原理及接口技术[M].西安电子科技大学出版社,2014. [2]余永权,单片机与家用电器智能化技术[M].电子工业出版社,1995. [3]孙林军,贺锋涛,基于ARM的TFT-LCD液晶显示图像控制系统研究[J].黄冈师范学院学报,2012,32 (03): 41-45. [4]张恒.基于AT89S52和FAT16的SD卡读写系统设计[J].单片机与嵌入式系统应用,2009 (08):5 3-55. [5]翟霄翔,郝久玉,郑军.电阻式触摸屏在嵌入式系统中的应用[J].电子测量技术,2012,29 (02): 36-38. [6]王晖,马明锦,基于触摸屏控制器ADS7846的触点坐标与压力的测量计算[J],电子实际应用,2003 (09): 78-80. [7]陈启安,软件人机界面设计[M].高等教育出版社,2004.