包嘉銘
摘要: 開水器是在當(dāng)前飲用水條件下,為滿足人們?nèi)粘I顚?shí)際需求而設(shè)計(jì)的一類能夠及時生產(chǎn)健康飲用沸水的設(shè)備。目前在開水器水位檢測、生沸水的隔離以及“千沸水”的避免上仍然能存在諸多不足。本文設(shè)計(jì)出了一種新型的多水箱多溫開水器結(jié)構(gòu),并以單片機(jī)為核心控制器,擬定了該開水器的觸摸屏人機(jī)交互控制界面設(shè)計(jì)方案,實(shí)現(xiàn)了能夠分別同時供應(yīng)高溫沸水,沸后溫水和低于10℃冷水的功能。
【關(guān)鍵詞】開水器 XPT2046 STM32F103RCT6人機(jī)界面
1 總體設(shè)計(jì)方案
日常生活中人們對電熱開水器的功能需求,主要為:水量隨時充盈,即開即飲、自動保溫、生沸水分離,同時分別供應(yīng)高溫沸水、沸后溫水和低于10℃冷水,具有綠色環(huán)保、節(jié)能衛(wèi)生、適用性強(qiáng)、性能穩(wěn)定等特點(diǎn)。
針對電熱開水器的功能要求,我們傾向于設(shè)計(jì)出一種能夠?qū)崿F(xiàn)提供多溫開水、冷飲水功能的三水箱分離式電熱開水器結(jié)構(gòu)。其主要構(gòu)件有:產(chǎn)水箱、開水箱、溫水箱、開關(guān)、水位信號傳感器、溫度信號傳感器、單片機(jī)MCU、水閥等。由單片機(jī)實(shí)時對水位信號,溫度信號進(jìn)行采集,再根據(jù)程序控制相應(yīng)的輸出引腳產(chǎn)生電平變化,完成制冷、加熱、加水等過程,觸摸屏作為整個控制系統(tǒng)的輸入輸出設(shè)備來完成顯示和觸控交互的功能。
基于單片機(jī)MCU對整個開水器控制系統(tǒng)進(jìn)行模塊劃分,本文主要針對觸摸屏及接口模塊進(jìn)行設(shè)計(jì)分析。觸摸屏既可以作為顯示屏又可以作為給系統(tǒng)發(fā)出指令的輸入設(shè)備,主要功能是顯示人機(jī)交互界面和能夠手動控制三個水箱的溫度上下限,為此,我們選用在智能移動設(shè)備、醫(yī)療器械、工業(yè)控制、辦公助理等領(lǐng)域都占有一席之地的四線電阻式觸控屏。
根據(jù)電熱開水器控制系統(tǒng)的運(yùn)行環(huán)境以及觸控屏的工作原理,采用合理的中央處理芯片對實(shí)現(xiàn)電熱開水器的人機(jī)交互功能至關(guān)重要。本文采用STM32F103開發(fā)板作為核心開發(fā)板,此開發(fā)板的主芯片為STM32F103RCT6。
2 觸摸屏控制電路設(shè)計(jì)
人工智能時代隨著自動化技術(shù)和圖像處理技術(shù)的不斷創(chuàng)新已經(jīng)來臨,作為重要輸入手段的平面顯示技術(shù)將會隨著科技潮流在生活生產(chǎn)中扮演愈加重要的角色,而液晶顯示LCD( Liquid Crystal Display)器件保持其輕巧的外形同時可以提供高質(zhì)量的顯示畫面并且能耗小、價(jià)格低廉。我們現(xiàn)在所說的觸控屏大多都是觸控屏與顯示屏配合好的一體屏,作為人機(jī)交互手段的一個傳感器,需要粘貼在顯示器的上表面一起使用,顯示器上編程好的圖形或按鍵被觸摸時,觸摸反饋系統(tǒng)識別接觸位置的坐標(biāo)和運(yùn)動走向,計(jì)算機(jī)再執(zhí)行對應(yīng)命令。
2.1 顯示屏與其控制原理
TFT-LCD是有源矩陣液晶顯示器的一種,實(shí)際上就是嵌入了TFT的一個平行板電容器。TFT作為開關(guān)管的一個三端器件,源極和漏極分別與一個制作在玻璃基板上的半導(dǎo)體層兩端相連。電壓是施加于柵極上從而起到控制源、漏兩電極間電流的作用,并通過絕緣膜對應(yīng)半導(dǎo)體。TFT-LCD屏上的每個像素結(jié)構(gòu)都可以近似為一個點(diǎn)陣單元格。此單元格中的液晶材料包夾于公用電極和像素電極中間且每個點(diǎn)陣單元格中有3個TFT驅(qū)動單元,通過這三種基本顏色組合成真彩色,分別為R、G、B驅(qū)動單元。這些結(jié)構(gòu)一起組成了對液晶點(diǎn)陣的驅(qū)動矩陣電路。
本文顯示屏采用的是2 8寸液晶屏,模塊尺寸51mmx82.6mm,分辨率為240x320,擁有720x320個TFT驅(qū)動液晶單元。顯示驅(qū)動模塊采用的是ILI9341芯片,這是一款262,144色單芯片SOC驅(qū)動器,其內(nèi)置的源極驅(qū)動器和柵極驅(qū)動器分別是720通道和320通道,還有用于圖形顯示數(shù)據(jù)的172,800字節(jié)GRAM和電源電路。
2.2 觸摸屏坐標(biāo)計(jì)算
四線電阻式觸摸屏的典型結(jié)構(gòu)包括兩層均勻?qū)щ姷腎T0導(dǎo)體層和中間的透明絕緣點(diǎn)。觸控屏的上下導(dǎo)體層構(gòu)成電阻網(wǎng)絡(luò),當(dāng)控制器施加驅(qū)動電壓給頂層電極(x+,X-),會在電阻網(wǎng)絡(luò)上形成電壓梯度。在壓力作用下使得兩導(dǎo)體層在觸點(diǎn)位置相觸碰,則由下層導(dǎo)體層中的探針可以測得接觸點(diǎn)X方向的電壓值,經(jīng)計(jì)算能得到接觸點(diǎn)的X坐標(biāo)。同理控制器給底層電極(Y+,Y_)施加驅(qū)動電壓,在頂層可測得接觸點(diǎn)的Y坐標(biāo),X,Y代表接觸點(diǎn)在TFT-LCD屏上的像素點(diǎn)坐標(biāo),x、y代表壓力信號經(jīng)A/D轉(zhuǎn)換得到的數(shù)字量電壓值。Xmin,ymin代表觸控屏上最小坐標(biāo)點(diǎn)在電壓梯度場中的電壓值,Xmax,Ymax則代表最大坐標(biāo)點(diǎn)的電壓值。W和H為TFT-LCD顯示屏在x和y方向上的像素點(diǎn)數(shù),本文采用2 8寸顯示屏W=240,H=320。選用的控制芯片為XPT2046.
2.3 XPT2046功能介紹
XPT2046是一款4線觸摸屏驅(qū)動芯片,包含一個分辨率為125KHz的12位逐步A/D轉(zhuǎn)換器,它的低電壓I/O接口支持1.5V至5.25V電壓。芯片內(nèi)部封裝了溫度傳感器,工作溫度范圍是-400 C至+ 850。XPT2046采用小型封裝:TSSOP-16(本文采用),QFN-16和VFBGA-48,XPT2046還可以檢測觸摸屏上的壓力值并通過執(zhí)行兩次A/D轉(zhuǎn)換來計(jì)算觸點(diǎn)坐標(biāo)。
XPT2046包含采樣/保持,模數(shù)轉(zhuǎn)換和串行數(shù)據(jù)輸出等功能,可以采用2.7V至5.5V電源電壓的單電源供電。在片內(nèi)控制寄存器中選擇后,X,Y,Z,VBAT,Temp和AUX模擬信號進(jìn)入A/D轉(zhuǎn)換器。A/D轉(zhuǎn)換器的工作模式分為單端和差分模式。
本文傾向于選用差分模式。這主要是因?yàn)閂cc產(chǎn)生波動時單端模式下的參考電壓也會波動,從而導(dǎo)致測量誤差較大。而在差分模式下以Y軸坐標(biāo)測量為例,x+電壓為觸點(diǎn)電壓,Y+和Y_引腳之間的電壓為參考電壓。Vcc波動時它們之間的比值保持不變,Y軸坐標(biāo)的測量結(jié)果就不會發(fā)生改變,大大提高測量的準(zhǔn)確性。
2.4 觸摸屏顯示屏控制模塊
觸摸屏顯示屏控制模塊包括多路電源電路:TFT-LCD及其顯示驅(qū)動電路、觸摸屏控制芯片XPT2046控制電路、FPC接口電路、SD卡座電路,將以上模塊制作在一塊PCB板上,并設(shè)置單排直插2*SIP-20模塊接口電路,方便其與多種主控MCU進(jìn)行連接,以本文中我們選用的STM32F103RCT6為例:
2.4.1 XPT2046控制電路
XPT2046與主控MCU通過SPI接口連接,其中TP DCLK、TP_CS、TP DIN、TPDOUT四根引腳負(fù)責(zé)SPI接口控制,分別控制時鐘信號,片選使能信號,串行數(shù)據(jù)輸入和串行數(shù)據(jù)輸出。TP BUSY為忙時信號線,TP CS被選中為高電平時其處于高電阻狀態(tài)。TP PEN負(fù)責(zé)中斷請求信號,需要外接上拉電阻。當(dāng)觸控屏檢測到被觸摸時,XPT2046通過該引腳輸出一個低電平信號,這是向單片機(jī)STM32F103RCT6發(fā)出坐標(biāo)檢測的中斷請求。X+、X-、Y+、Y_四根引腳提供檢測X與Y方向坐標(biāo)時的驅(qū)動電壓,其中X+、Y+還作為壓力信號經(jīng)A/D轉(zhuǎn)換的輸入引腳。
2.4.2 SD卡控制電路
閃存卡(SD卡)的優(yōu)點(diǎn)有:體積輕巧、容量較大、使用能耗低和具有非易失性,通常作為大量數(shù)據(jù)的存儲介質(zhì)。本文TFT-LCD顯示屏分辨率為320x240,顯示屏上一幅圖片的大小為320x240x3=230400字節(jié),需要225K存儲空間。添加SD卡存儲資源是為了節(jié)省STM32F103RCT6的ROM資源。
SD卡可以采SPI總線或SD總線訪問,我們選用的主控芯片STM32F103RCT6有SPI總線模塊,因此基于這一特點(diǎn)設(shè)計(jì)通過SPI總線訪問SD卡的硬件接口電路。
由上文可知SD卡模塊與XPT2046芯片一樣是通過SPI通信與主控MCU連接。CS、DO、DI、SCLK四根引腳負(fù)責(zé)SPI接口控制,分別控制使能信號、串行數(shù)據(jù)輸出、串行數(shù)據(jù)輸入和時序信號。為實(shí)現(xiàn)數(shù)據(jù)保護(hù)和SD卡的熱插拔,可連接數(shù)據(jù)寫保護(hù)引腳WRPROTECT和插卡監(jiān)控引腳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驅(qū)動芯片ILI9341。ILI9341與主控MCU是通過8080并口通信,8080接口有五條基本的控制引腳分別CS、RS、WR、RD、REST。為了節(jié)約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接口電路,其中左邊奇數(shù)引腳的1-39是TFT-LCD與STM32F103RCT6的接口電路,第7-31腳與STM32F103RCT6間增加了lOOOQ限流電阻,可以起到保護(hù)TFT的作用。如果主控MCU工作電壓為5V而TFT-LCD模塊的工作電壓只有3.3V,TFT容易被損壞。573 LEIO引腳連接74HC573擴(kuò)展鎖存器。第2-8腳與SD卡座電路的SPI通信接口連接,第30-40腳與觸控屏控制芯片XPT2046的SPI通信接口連接。此接口電路使用雙排插針與STM32開發(fā)板相連接。
3 控制程序設(shè)計(jì)
一個智能的觸摸屏控制系統(tǒng)需要有良好運(yùn)行的硬件電路來實(shí)現(xiàn)信息的流通,其真正的智能只能通過一系列的程序邏輯來實(shí)現(xiàn)。
3.1 觸摸屏驅(qū)動及校準(zhǔn)程序設(shè)計(jì)
我們要順利實(shí)現(xiàn)觸摸屏的人機(jī)交互功能首先要保證觸摸屏控制芯片XPT2046可以精準(zhǔn)將測得的接觸電壓轉(zhuǎn)換為坐標(biāo)的AD值也就是數(shù)字信號,這就是所謂的觸摸屏驅(qū)動程序。完成觸摸屏控制芯片的驅(qū)動后還需要進(jìn)行校準(zhǔn)和調(diào)試,這樣后續(xù)的觸摸操作才可以在預(yù)先設(shè)計(jì)的坐標(biāo)位置進(jìn)行完成。
3.1.1 驅(qū)動程序
第一步往XPT2046中輸入一個字節(jié)(通過模擬SPI時序)再從XPT2046中讀取AD轉(zhuǎn)換結(jié)果??梢栽O(shè)定一個函數(shù):READTIMES(多次轉(zhuǎn)換)加入到讀取程序中,然后去掉一個最高值去掉一個最低值留中間,最后取平均值,這樣得到的AD轉(zhuǎn)換結(jié)果就比較精確。
我們通過程序發(fā)現(xiàn)一個點(diǎn)的AD轉(zhuǎn)換值必須要X方向調(diào)用一次函數(shù)后再于Y方向運(yùn)行一次才有結(jié)果。于是將此程序進(jìn)行升級設(shè)計(jì),將X和Y方向的函數(shù)調(diào)用封裝在一起操作,把讀取到的X方向AD轉(zhuǎn)換平均值和Y方向AD轉(zhuǎn)換平均值分別賦值到存xtemp和ytemp中,然后用if語句判斷他們與100的大小。若是AD值大于或等于100即正常的觸摸范圍。
調(diào)用u8 TP___ Read_ XY (u16*x,u16*y)程序,通過返回值是1還是0就可知道讀取到的AD值是否有效。但是光這樣的計(jì)算會出現(xiàn)較大誤差,必須再用其他程序來提高讀取精度。如圖l所示本文設(shè)計(jì)調(diào)用兩次這個程序,把得到的兩組X、Y方向AD值進(jìn)行誤差分析考量,如果考量結(jié)果不在誤差接受范圍內(nèi)則返回重新讀取AD值。
3.1.2 觸摸屏校準(zhǔn)程序
在引入校準(zhǔn)之前要把讀到的AD值通過計(jì)算轉(zhuǎn)化為實(shí)際坐標(biāo)。因?yàn)門FT屏的原點(diǎn)在實(shí)際操作中沒辦法確定,本文在操作中為了方便計(jì)算取TFT屏四個角上的點(diǎn)。然后用手指或筆觸摸這4個點(diǎn),分別記錄下這四個點(diǎn)的AD值,將他們記為(Mx1,My1),(Mx2,My2),(Mx3,My3),(Mx4,My4)。
此時觸摸TFT屏上的任意一點(diǎn),得到的AD值讀取結(jié)果為(Mx,My),那么實(shí)際坐標(biāo)的計(jì)算公式如下:
在主函數(shù)中包含有一個按鍵檢測程序,當(dāng)按下開發(fā)板上的key0時就會開始調(diào)用觸摸屏校準(zhǔn)程序。下而是整個校準(zhǔn)過程的程序流程:開始一讀取四點(diǎn)AD值一計(jì)算校準(zhǔn)參數(shù)d1、d2、d3、d4一計(jì)算出facl、fac2一0.95 3.2 TFT-LCD驅(qū)動及顯示控制程序 LCD顯示包括在LCD上顯示線條、圖形、填充、字符、字符串等等。而這些顯示程序都基于LCD畫點(diǎn)程序進(jìn)行擴(kuò)展。幾乎所有上層函數(shù)都需要調(diào)用畫點(diǎn)函數(shù)來完成,這說明了畫點(diǎn)程序在整個LCD顯示程序中的重要性。我們首先完成光標(biāo)位置的設(shè)定,再將數(shù)據(jù)寫入GRAM,最后我們定義一個用來存放畫筆顏色的全局變量POINTCOLOR,寫入LCD模塊這就實(shí)現(xiàn)了一次畫點(diǎn)操作。 有了畫點(diǎn)程序?yàn)榛A(chǔ),我們可以將其擴(kuò)展為顯示線條、圖形、填充、字符、字符串等程序,這里我們以顯示字符程序?yàn)槔?。在LCD屏上顯示字符就是控制指定區(qū)域內(nèi)像素點(diǎn)的亮暗來顯示的,在本文的程序中會用到1206字體,1608字體,2412字體這三個字符集點(diǎn)陣數(shù)據(jù)組。1608表示顯示字符的區(qū)域空問,也就是高度16位*寬度8位,高度16位拆分為2字節(jié),所以16字節(jié)控制一個字符顯示,體現(xiàn)在程序中就是16個16進(jìn)制數(shù)據(jù)組成的數(shù)據(jù)序列。 3.3 實(shí)際應(yīng)用程序 由于實(shí)驗(yàn)條件的限制,本文將用一個RGB燈來模擬水箱的加熱電路。 首先開機(jī)顯示電熱開水器的初始界而,當(dāng)按下屏幕上的設(shè)置鍵時進(jìn)入開水箱、溫水箱、冷水箱三個水箱標(biāo)志的選擇界而。點(diǎn)擊任意水箱都會進(jìn)入與其對應(yīng)的溫度調(diào)節(jié)界而,在溫度調(diào)節(jié)界而中有三個溫度分別是上限溫度、下限溫度和實(shí)時溫度。手動按動屏幕上的加減號設(shè)置好上、下限溫度后,當(dāng)實(shí)時溫度超過下限溫度,RGB燈亮,且其亮度隨著實(shí)時溫度升高而變亮,當(dāng)實(shí)時溫度超過上限溫度時RGB燈熄滅。這個過程實(shí)際模擬的是加熱電路,當(dāng)溫度傳感器檢測到水溫超過下限溫度時,加熱管工作且水溫升高,當(dāng)溫度傳感器檢測到水溫超過上限溫度時,停止加熱。 4 結(jié)論 針對目前常見的開水器所存在的缺點(diǎn),本文采用了以STM32F103RCT6單片機(jī)為核心MCU的開發(fā)板來設(shè)計(jì)開水器觸摸屏控制的各模塊電路,并對人機(jī)交互界而進(jìn)行開發(fā),在觸摸屏控制電路,人機(jī)交互界而軟件開發(fā)進(jìn)行了一些基本的研究。主要成果如下:一是構(gòu)建出了新型多溫多水箱開水器結(jié)構(gòu),能夠?qū)崿F(xiàn)生沸水的分離,從而滿足對飲用水健康環(huán)保的要求二是根據(jù)電開水器可能需要適應(yīng)的工作環(huán)境選用了四線電阻式觸摸屏;三是選用XPT2046為觸摸屏控制芯片,對壓力信號進(jìn)行采集與轉(zhuǎn)換,輸出數(shù)字信號傳遞給單片機(jī),從而分析計(jì)算出所需要的觸摸坐標(biāo)位置;四是選用ILI9341來驅(qū)動TFT-LCD,并設(shè)計(jì)電路將LCD驅(qū)動芯片ILI9341的接口引腳和XPT2046芯片上的4個電極引腳和通過柔性印刷電路FPC排線連接到控制PCB板上;五是通過觸摸屏控制信號與動作電路的邏輯關(guān)系畫出了程序的流程圖,完成了程序的設(shè)計(jì);六是通過觸摸屏控制信號與動作電路的邏輯關(guān)系畫出了程序的流程圖,完成了人機(jī)交互功能的程序邏輯設(shè)計(jì)。七是優(yōu)化觸摸屏驅(qū)動及校準(zhǔn)程序,LCD驅(qū)動及顯示程序,完成了人機(jī)交互界而的設(shè)計(jì)。將其與控制邏輯相結(jié)合,最終實(shí)現(xiàn)了人機(jī)交互的整個功能。 參考文獻(xiàn) [1]余錫存,曹國華.單片機(jī)原理及接口技術(shù)[M].西安電子科技大學(xué)出版社,2014. [2]余永權(quán),單片機(jī)與家用電器智能化技術(shù)[M].電子工業(yè)出版社,1995. [3]孫林軍,賀鋒濤,基于ARM的TFT-LCD液晶顯示圖像控制系統(tǒng)研究[J].黃岡師范學(xué)院學(xué)報(bào),2012,32 (03): 41-45. [4]張恒.基于AT89S52和FAT16的SD卡讀寫系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009 (08):5 3-55. [5]翟霄翔,郝久玉,鄭軍.電阻式觸摸屏在嵌入式系統(tǒng)中的應(yīng)用[J].電子測量技術(shù),2012,29 (02): 36-38. [6]王暉,馬明錦,基于觸摸屏控制器ADS7846的觸點(diǎn)坐標(biāo)與壓力的測量計(jì)算[J],電子實(shí)際應(yīng)用,2003 (09): 78-80. [7]陳啟安,軟件人機(jī)界面設(shè)計(jì)[M].高等教育出版社,2004.