艾凱旋 ,劉云婷 ,劉 洋
(1.中國(guó)工程物理研究院 計(jì)量測(cè)試中心,四川 綿陽 621999;2.電子科技大學(xué) 電子科學(xué)與工程學(xué)院,四川 成都 610054)
隨著移動(dòng)設(shè)備和5G 時(shí)代的到來,大到機(jī)械設(shè)備操作界面,小到人們?nèi)粘J褂玫囊苿?dòng)電子設(shè)備,觸摸屏都因其方便快捷的操作方式而被廣泛使用。
觸摸屏作為人機(jī)交互的媒介之一,具有十分重要的研究?jī)r(jià)值。隨著人們對(duì)觸摸屏功能需求提高,可折疊和柔性觸摸屏的設(shè)計(jì)制備是觸摸屏研發(fā)的主要方向之一[1-5]。同樣,伴隨觸摸屏功能屬性的豐富,基于觸摸屏的應(yīng)用擴(kuò)展也是重要方向之一,例如電子皮膚和可穿戴設(shè)備等[6-11]。但在研究過程中,觸摸屏往往需要外部觸摸檢測(cè)電路對(duì)觸摸屏的功能進(jìn)行驗(yàn)證。Sarwar等人提出了一種基于AD7146 的觸摸檢測(cè)電路[12],可實(shí)現(xiàn)16 個(gè)觸摸點(diǎn)工作狀態(tài)的檢測(cè),但只能檢測(cè)互電容觸摸屏。而針對(duì)自電容觸摸屏的檢測(cè),Liu 等人和Ye 等人分別以AD7147 和MPR121 為核心設(shè)計(jì)了一種觸摸檢測(cè)電路[13-14],但限于芯片本身的電容通道數(shù)目約束,Liu 等人設(shè)計(jì)的觸摸檢測(cè)電路只能檢測(cè)12 個(gè)電容通道的自電容觸摸屏,而Ye 等人設(shè)計(jì)的觸摸檢測(cè)電路只能檢測(cè)最多13 個(gè)電容通道的自電容觸摸屏,均無法應(yīng)對(duì)超過13 個(gè)電容通道檢測(cè)數(shù)量的自電容觸摸屏功能驗(yàn)證。
對(duì)此,本文提出了一種數(shù)據(jù)采集系統(tǒng),硬件部分為由Arduino 控制的觸摸檢測(cè)電路,其電路核心為MPR121,采用MPR121 地址位切換的原則,實(shí)現(xiàn)可檢測(cè)最多24 個(gè)電容通道數(shù)目的自電容觸摸屏的功能。同時(shí),為了便于實(shí)時(shí)觀察觸摸屏中觸摸點(diǎn)的工作狀態(tài),設(shè)計(jì)了一種基于Python 的圖形化界面。最后,通過實(shí)驗(yàn)對(duì)數(shù)據(jù)采集系統(tǒng)進(jìn)行了功能驗(yàn)證。
一個(gè)MPR121 只能檢測(cè)12 個(gè)電容通道的觸摸屏,為了讓觸摸檢測(cè)電路可以同時(shí)最多檢測(cè)24 個(gè)電容通道數(shù)目的自電容觸摸屏,觸摸檢測(cè)電路設(shè)計(jì)過程中選擇了兩個(gè)MPR121 以及一個(gè)CD74HC21E 為核心設(shè)計(jì),其電路原理圖如圖1 所示。
圖1 觸摸檢測(cè)電路原理圖
該電路可以同時(shí)檢測(cè)具有24 個(gè)電容通道的自電容觸摸屏。其中,VDD 為觸摸檢測(cè)電路的電源輸入端,需要提供3.3 V 的電壓,觸摸檢測(cè)電路才能正常工作,而VREG 為MPR121 內(nèi)部電源電壓和內(nèi)部穩(wěn)壓器的輸出端,為了保證VDD 端與VREG 端電壓的穩(wěn)定性,均在其與接地端之間并聯(lián)一個(gè)0.1 μF 的去耦電容。
MPR121 作為具有12 個(gè)電容通道的芯片,其需要通過I2C 接口與微處理控制器通信才可以將觸摸屏中觸摸點(diǎn)的工作狀態(tài)傳輸?shù)接?jì)算機(jī)中,數(shù)據(jù)采集系統(tǒng)選擇由Arduino 控制,Arduino 通過I2C 接口讀取從機(jī)地址從而獲得MPR121 芯片采集到的觸摸點(diǎn)的數(shù)據(jù),MPR121 芯片對(duì)應(yīng)的從機(jī)地址可以為0x5A、0x5B、0x5C 和0x5D,本文中觸摸檢測(cè)電路可以提供任意兩個(gè)從機(jī)地址供Arduino讀取,且在觸摸檢測(cè)電路的SCL、SDA 以及端需加10 kΩ 的上拉電阻。
觸摸檢測(cè)電路在檢測(cè)觸摸點(diǎn)工作狀態(tài)過程中,需要提前為Q1~Q24 的電容通道依次進(jìn)行充電,然后定期將電容通道中的電量通過觸摸點(diǎn)釋放到接地端,其電容通道的整個(gè)充放電過程如圖2 所示。
圖2 電容通道充放電過程圖
觸摸檢測(cè)電路中MPR121 電容通道的默認(rèn)充電時(shí)間為0.5 μs,峰值電壓為2.34 V,隨著觸摸檢測(cè)電路不斷檢測(cè)電容通道中的電壓變化,就可以檢測(cè)到觸摸屏中觸摸點(diǎn)的自電容大小,從而判斷觸摸屏中觸摸點(diǎn)的工作狀態(tài),其檢測(cè)原理表達(dá)式如下:
其中,Q 為電容通道中的總電量,V 為電容通道中的峰值電壓,I 和T 分別為電容通道的充電電流和充電時(shí)間,MPR121 的默認(rèn)充電電流為16 μA,其電源電壓VDD為3.3 V,其最高峰值電壓Vmax和最低峰值電壓Vmin表達(dá)式如下:
其可測(cè)量電容范圍計(jì)算如下:
式中Clow和Chigh分別是觸摸檢測(cè)電路可以檢測(cè)的最小電容值和最大電容值,當(dāng)觸摸檢測(cè)電路檢測(cè)到在3.08 pF~4.73 pF 之間的電容值時(shí),觸摸屏中觸摸點(diǎn)顯示被觸摸狀態(tài)。
為了便于觸摸檢測(cè)電路檢測(cè)電容通道的拓展,觸摸檢測(cè)電路中采用CD74HC21E 器件作為兩個(gè)MPR121 的的連接端,CD74HC21E 器件具有4 輸入與門功能,可同時(shí)供4 個(gè)MPR121 共同連接使用,最終實(shí)現(xiàn)48 個(gè)電容通道數(shù)目檢測(cè)??紤]到觸摸檢測(cè)電路只用到了兩個(gè)MPR121,CD74HC21E 的另外兩個(gè)閑置輸入端口均接入高電平。觸摸檢測(cè)電路的硬件電路版圖如圖3 所示,可通過MPR121 的ADDR 端口自由設(shè)置從機(jī)地址。
圖3 觸摸檢測(cè)電路硬件版圖
觸摸檢測(cè)電路設(shè)計(jì)完成后,需要對(duì)其進(jìn)行驅(qū)動(dòng)程序的設(shè)計(jì),包括觸摸檢測(cè)電路中寄存器地址的設(shè)置、電容通道的初始化設(shè)置以及從機(jī)數(shù)據(jù)的讀取設(shè)置等,因其采用Arduino 開發(fā)板,驅(qū)動(dòng)程序的設(shè)計(jì)在Arduino IDE 開發(fā)環(huán)境中進(jìn)行,圖4 所示為驅(qū)動(dòng)程序模塊圖。
圖4 驅(qū)動(dòng)程序模塊圖
觸摸檢測(cè)電路驅(qū)動(dòng)程序主要包含“setup”模塊和“l(fā)oop”模塊兩部分,“setup”模塊的主要功能是對(duì)MPR121 芯片的工作模式和電容傳感通道進(jìn)行基本設(shè)置,包括I2C 通信命令的設(shè)置,同時(shí)將引腳的初始工作電平設(shè)置為高電平。電容傳感通道設(shè)置模塊內(nèi)部包含的寄存器地址定義模塊主要用于對(duì)MPR121 芯片中的寄存器地址進(jìn)行命名和歸類,而寄存器設(shè)置模塊用于對(duì)寄存器地址定義模塊定義的地址進(jìn)行MPR121 芯片的原始設(shè)置。
“l(fā)oop”模塊的主要功能是對(duì)觸摸檢測(cè)電路中需要重復(fù)進(jìn)行的操作進(jìn)行一系列設(shè)置,其中主要是對(duì)透明觸摸屏上觸摸點(diǎn)觸摸狀態(tài)的讀取。觸摸狀態(tài)讀取模塊的主要功能就是讀取透明觸摸屏中觸摸點(diǎn)的工作狀態(tài),其通過內(nèi)部的中斷檢測(cè)模塊檢測(cè)觸摸檢測(cè)電路是否工作在正常狀態(tài),當(dāng)其工作在正常狀態(tài)時(shí),則通過其內(nèi)部的雙字節(jié)數(shù)據(jù)讀取模塊,依次遍歷兩個(gè)不同從機(jī)地址MPR121芯片的12 個(gè)觸摸點(diǎn)數(shù)據(jù),最后按順序?qū)⑵鋭澐值?4 個(gè)觸摸點(diǎn)中,用于確定對(duì)應(yīng)觸摸點(diǎn)的觸摸狀態(tài)。當(dāng)觸摸點(diǎn)被觸摸時(shí),Arduino IDE 開發(fā)環(huán)境的串口檢測(cè)界面中對(duì)應(yīng)觸摸點(diǎn)的數(shù)據(jù)會(huì)顯示“1”,相反,顯示“0”。
Arduino 控制兩個(gè)MPR121 進(jìn)行電容通道的檢測(cè)采用遍歷的方式,依次選定MPR121 的從地址為0x5A 和0x5B,通過一個(gè)循環(huán)語句依次遍歷兩個(gè)MPR121 的電容通道檢測(cè)結(jié)果,當(dāng)觸摸多個(gè)按鍵時(shí),Arduino 會(huì)以16 ms 采集一個(gè)電容通道電容變化的速度依次遍歷兩個(gè)zMPR121的電容通道,每秒可以遍歷共60 個(gè)電容通道以上的電容變化情況,因此當(dāng)人的手指觸摸多個(gè)按鍵時(shí),不會(huì)發(fā)生數(shù)據(jù)沖突的現(xiàn)象。
觸摸檢測(cè)電路在實(shí)時(shí)采集觸摸點(diǎn)數(shù)據(jù)過程中,會(huì)產(chǎn)生大量觸摸點(diǎn)數(shù)據(jù),通過Arduino IDE 自帶的串口監(jiān)視界面無法直觀獲得觸摸屏中各觸摸點(diǎn)工作狀態(tài),因此設(shè)計(jì)了一種基于Python 的圖形化界面,其工作流程圖如圖5所示。
圖5 圖形化界面流程圖
圖形化界面采用Python 的PyQt4 單元庫(kù)為核心[15],并調(diào)用了sys 庫(kù)、time 庫(kù)以及serial 庫(kù)。圖形化界面主要由三個(gè)功能模塊組成,分別為觸摸點(diǎn)數(shù)據(jù)中轉(zhuǎn)模塊、多線程數(shù)據(jù)接收模塊以及顯示界面設(shè)置模塊。多線程數(shù)據(jù)接收模塊用于接收并更新觸摸檢測(cè)電路采集到的觸摸點(diǎn)數(shù)據(jù),觸摸點(diǎn)數(shù)據(jù)中轉(zhuǎn)模塊用于將多線程數(shù)據(jù)接收模塊接收到的觸摸點(diǎn)數(shù)據(jù)傳輸?shù)斤@示界面設(shè)置模塊,顯示界面設(shè)置模塊用于設(shè)置圖形化界面的外觀、形狀等,并將接收到的觸摸點(diǎn)數(shù)據(jù)實(shí)時(shí)刷新到圖形化界面中。圖形化界面的觸摸點(diǎn)數(shù)據(jù)刷新率為10 μs 一次,其完成后的圖形化界面如圖6 所示,為一個(gè)5×5 矩陣式分布的觸摸板樣式。
圖6 圖形化界面顯示圖
圖形化界面會(huì)按照觸摸屏上觸摸點(diǎn)的工作狀態(tài)實(shí)時(shí)變化,當(dāng)觸摸點(diǎn)被觸摸時(shí),對(duì)應(yīng)位置的圖形化界面會(huì)顯示紅色,且隨著觸摸點(diǎn)數(shù)量的增多以及布局的改變,圖形化界面也可以進(jìn)行相應(yīng)的程序調(diào)整。
為了驗(yàn)證觸摸屏數(shù)據(jù)采集系統(tǒng)的有效性,觸摸檢測(cè)電路最終以印刷電路板的形式搭建完成,其工作電壓可由Arduino 開發(fā)板提供,實(shí)驗(yàn)中采用Arduino Uno R3 開發(fā)板。
觸摸檢測(cè)電路在工作過程中需將其SCL 和SDA 端口分別與Arduino Uno R3 開發(fā)板對(duì)應(yīng)的I2C 端口相連,且觸摸檢測(cè)電路的VDD 與Arduino Uno R3 開發(fā)板的3.3 V 電壓端口相連,VSS 端與Arduino Uno R3 開發(fā)板的GND 端相連,端與Arduino Uno R3 開發(fā)板的任一數(shù)字引腳端口相連,且設(shè)置該數(shù)字引腳端口為輸入端口,起始電平為高電平。圖7 所示為數(shù)據(jù)采集系統(tǒng)的測(cè)試圖。
圖7 數(shù)據(jù)采集系統(tǒng)測(cè)試圖
數(shù)據(jù)采集系統(tǒng)在驗(yàn)證過程中,選擇了一個(gè)5×5 簡(jiǎn)易式觸摸板作為測(cè)試對(duì)象,并將其觸摸點(diǎn)連接端與觸摸檢測(cè)電路的對(duì)應(yīng)電容通道端口相連,其測(cè)試過程中因?yàn)橛|摸檢測(cè)電路只能測(cè)試24 個(gè)電容通道,故觸摸板只有24個(gè)觸摸點(diǎn)的狀態(tài)可以被檢測(cè)到,圖8 所示為數(shù)據(jù)采集系統(tǒng)驗(yàn)證結(jié)果圖。
圖8 數(shù)據(jù)采集系統(tǒng)結(jié)果圖
數(shù)據(jù)采集系統(tǒng)中的觸摸檢測(cè)電路在檢測(cè)到簡(jiǎn)易觸摸板上的觸摸點(diǎn)被接觸時(shí),其對(duì)應(yīng)位置的觸摸點(diǎn)數(shù)據(jù)會(huì)同步更新到圖形化界面中實(shí)時(shí)顯示出來,且在觸摸檢測(cè)電路檢測(cè)過程中沒有誤檢測(cè)的觸摸點(diǎn)產(chǎn)生,證明了觸摸檢測(cè)電路的有效性。
觸摸屏數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)完成,不僅使觸摸檢測(cè)電路的電容通道數(shù)量增加到24 個(gè),可以用于更多觸摸點(diǎn)的觸摸屏檢測(cè),且通過以Python 中的PyQt4 單元庫(kù)為核心的圖形化界面更直觀地觀測(cè)觸摸點(diǎn)變化情況,為觸摸屏數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)提供了新的思路。