潘 偉,周 龍
(1.中國人民解放軍信息工程大學(xué),河南鄭州450002;2.武漢工業(yè)學(xué)院電氣與電子工程學(xué)院,湖北武漢430023)
近幾年電容式觸摸感應(yīng)按鍵技術(shù)在電子行業(yè)內(nèi)得到進一步的推廣,已經(jīng)開始逐步代替?zhèn)鹘y(tǒng)的機械式按鍵開關(guān)界面。因為觸摸按鍵不需要機械動作,這就使得基于此的產(chǎn)品包裝上能夠完全密封,并且設(shè)計上更加小巧便攜,現(xiàn)代美觀,具有更好的市場潛力。由于觸摸按鍵的優(yōu)點多多,讓其除了在家用電器市場上占有一席之地外,也開始逐步在醫(yī)療,汽車等領(lǐng)域被廣泛采用。
作為全球半導(dǎo)體供應(yīng)商巨頭的法國ST公司,最近推出新的基于觸摸芯片的觸摸方案,這對于許多開發(fā)觸摸按鍵板的程序員來講是一個好消息。ST公司的觸摸方案,采用了兩種技術(shù)手段:自適應(yīng)原理和電容直接測控。
SJD160是一款基于自適應(yīng)原理的電容觸摸感應(yīng)專用芯片。內(nèi)部包含8位的MCU(Micro Control Unit)、8個輸入輸出口(I/O)的觸摸感應(yīng)集成電路。SJD160相比于以往的觸摸芯片,在抗干擾水平,芯片用戶手冊詳細度,自適應(yīng)周圍環(huán)境變化,相近按鍵互不影響等方面有了較大的提高。現(xiàn)在,以該芯片為主控的產(chǎn)品涉及消費類電子產(chǎn)品、手持式視頻播放器、家用電器、車載設(shè)備、大型醫(yī)療設(shè)備等。
SJD160電容觸摸按鍵類似于一個自適應(yīng)振蕩器,期間不斷進行充電和放電[1]。由圖1可知:它的頻率能夠被測量,并且自適應(yīng)振蕩器有不變的充放電周期。若用手指或者其他帶電容物質(zhì)接觸,由于手指本身存在電容,那么電容總和就會變大,相應(yīng)的介電常數(shù)ε將增大,導(dǎo)致周期變大,因為周期和頻率成反比,則頻率就降低。所以,通過頻率的變化就能夠捕捉到觸摸的動作[2]。
圖1 自適應(yīng)的原理
圖2所示的振蕩電路中,充電的上下限靠運放的正極來設(shè)定,1000 PF的電容的作用是濾波,使之有一穩(wěn)定的下限。電路內(nèi)部信號與運放C1的正輸入端相連,充電的下限由運放C2的正輸入端通過接收外信號來配置,而電壓V的負極在兩級間進行充放電,它被邏輯電平信號C2OUT驅(qū)動。
圖2 自適應(yīng)的振蕩電路
作為具有自我激勵功能的RC振蕩器,電路中感應(yīng)電壓的充電方向由圖中的具有鎖存功能的運放去改變。
由圖3可知,振蕩器進行一個充電+放電的周期過程是:先由運放的正輸入端配置充電的下上限,充電過程是從下限往上限充電,接著充滿后開始從上限往下限放電,完成這兩個過程所耗費的時間就是一個充放電的周期。
圖3 充放電的周期
在Cs電壓比下限低的時候,開始進行充電,當(dāng)V負極處于下上限之中,那么系統(tǒng)是處于前一狀態(tài)(充電或放電),當(dāng)V-充電后高于上限時,系統(tǒng)則開始進行放電[3]。
傳感器電極板(符號Cs)和反饋電阻R構(gòu)成了一個RCs回路,如圖4所示。圖4(a)為 RCs回路,用時間常數(shù)確定電容充放電的速度,即:τ=RCs。圖4(b)和圖4(c)表示未接觸時的時間常數(shù)。
圖4 RCs電路
當(dāng)人的手指接觸焊盤,因為手指附帶著電容,將使電容總和增多,進而使RCs時間常數(shù)產(chǎn)生變化。如圖5所示:圖(b)和圖(c)表示當(dāng)有手指接觸時,RCs時間常數(shù)變大,振蕩器的頻率降低,這頻率變化將會在單片機程序中被監(jiān)測到。
圖5 變化的RCs時間常數(shù)
如圖6所示,圖中SJD160有24個管腳,I/O口占據(jù)8個管腳,從KEY0到KEY7,分別連接TS_0到TS_7。外部模擬信號將通過此8個口進入芯片內(nèi)部經(jīng)過AD模塊轉(zhuǎn)為數(shù)字信號進行處理,通過此方法檢測有沒有存在觸摸源靠近或者接觸到這8個輸入口上。
圖6 SJD160硬件連接電路圖
利用上述原理就將KEY0到KEY7制作成按鍵,將信號傳入TS_0-TS_7管腳,通過感應(yīng)外部輸入模擬信號的變化來檢測有沒有手指觸摸。
SJD160共有24個管腳,具體管腳型號及功能,如表1所示。
表1 SJD160芯片管腳介紹
圖6所示是SJD160的硬件連接電路圖,TS0-TS7連接按鍵板上的觸摸按鍵,P00-P07連接LED指示燈,與TS0-TS7相對應(yīng),作用是當(dāng)手指觸摸到按鍵后,指示燈亮起,例如觸摸到TS0,則P00口將被置于低電平,則所連指示燈D1A亮起;當(dāng)手指離開觸摸板,電容值回復(fù)默認設(shè)定值,觸發(fā)POO端口回復(fù)高電平狀態(tài),此時指示燈重新熄滅,給用戶的感覺就是觸摸哪個按鍵,哪個按鍵就被點亮,如圖7所示。
圖7 指示燈連接圖
VC1不接,VC2接電容接地起濾波作用。而信號傳輸通過P20,P21口,如圖8所示。
圖8 P20,P21口外接線圖
因為電容的改變體現(xiàn)在碼值上,當(dāng)外設(shè)通過J2與板子相連后,觸摸板所檢測到的電容值改變的數(shù)據(jù)信息將通過P21,P20傳遞給外設(shè)(專門的讀碼值設(shè)備),方便程序員直觀的觀測。作為自帶微控制器的芯片,SJD160在被焊上觸摸板前,控制程序已經(jīng)通過燒錄器燒進SJD160中,焊上板子后內(nèi)部程序?qū)o法再被修改。如果調(diào)試觸摸板過程中發(fā)現(xiàn)bug,則需要重新修改控制程序后再燒進新的SJD160中,焊上后繼續(xù)調(diào)試。本文主要介紹觸摸板的工作原理,具體的SJD燒錄控制等內(nèi)容,這里不再詳述。
手指觸摸在按鍵板上的時候,電荷經(jīng)亞力克面板遷移至電容觸摸式按鍵上,而電容觸摸式按鍵又和芯片的管腳相通,因此,通過AD模塊的轉(zhuǎn)換,模擬電壓信號變成了數(shù)字電壓信號進入芯片內(nèi)部被捕捉到,內(nèi)部電路捕捉到波動的電壓,經(jīng)過計算,給出經(jīng)歷的時間值,再通過預(yù)先設(shè)置好的算法,判斷出是否有按鍵被按下。整個流程圖如圖9所示。
圖9 SJD160按鍵檢測掃描流程圖
設(shè)計電容式觸摸按鍵時,要先檢測按鍵的電平/電荷量,還包括關(guān)聯(lián)的轉(zhuǎn)換關(guān)系等,表示需要先校準(zhǔn)系統(tǒng);然后外界周圍環(huán)境的改變將影響到電平/電荷的變化,例如干燥環(huán)境下的靜電和高頻電磁的干擾都有可能導(dǎo)致非人為的誤操作,且環(huán)境溫度的改變也將對系統(tǒng)的校準(zhǔn)具有不利的影響,同時長時間在表面上的塵埃的富集也是潛在的不利因素,影響精確性和穩(wěn)定性。綜上所得,提高抗干擾水準(zhǔn)和自適應(yīng)是優(yōu)化觸摸按鍵技術(shù)的關(guān)鍵手段。
為了應(yīng)付外界多變的環(huán)境,觸摸按鍵的設(shè)計必須具有自適應(yīng)的能力。判斷是否有按鍵按下的方法是將兩次讀取的充電時間值相減,再和之前的標(biāo)準(zhǔn)值作比較而實現(xiàn)的,上電后無按鍵的充電時間值將被作為默認的充電時間值。所以當(dāng)有手指按下觸摸按鍵板,所測得的充電時間差值與默認值將會有很大不同,以此來判斷是否按鍵板被按下。
為優(yōu)化自適應(yīng)能力,給出此方案:無按鍵充電時間值隨著周邊環(huán)境的變化而變化。在一個連續(xù)的充放電系統(tǒng)里,將檢測到的無按鍵狀態(tài)下充電時間值一直無限逼近真正的無按鍵充電時間值,就可以實現(xiàn)按鍵的自適應(yīng)能力。時間值公式如下:
式中T:默認的無按鍵充電時間值;T0:上次讀取的無按鍵充電時間值;T1:新讀取的無按鍵充電時間值。
此方法存在一個缺陷:當(dāng)手指以非常緩慢的速率逐漸靠近按鍵板的時候,系統(tǒng)可能無法檢測出手指的靠近或接觸,因為系統(tǒng)適應(yīng)了這種緩慢的電容變化,那么就無法檢測到該觸摸方式。但是實際操作中沒有用戶會走這樣極端的操作路線,所以這一缺陷并不會影響系統(tǒng)整個自適應(yīng)能力。
優(yōu)化抗干擾水平可以從兩個方面入手:①軟件程序里增加防抖動代碼;②硬件設(shè)計上優(yōu)化PCB板得繪制,使抗干擾水平提高[4-7]。
2.2.1 硬件設(shè)計優(yōu)化抗干擾水平
在硬件電路上,由于充電時間較短,只有在硬件電路的繪制上進行改良,增強電容式觸摸面板的抗干擾水平。
(1)按鍵成叉形,第一個叉子接按鍵,第二個叉子接地線,他們之間互叉卻不互連。
(2)鍵與鍵中間的空隙要布滿地線,如圖10所示:這樣的好處是使干擾源幾乎不能對觸摸按鍵造成干擾。
圖10 按鍵與按鍵間的設(shè)計
(3)繪制PCB走線的時候盡量以直線為主。
(4)觸摸按鍵的大小近似于普通人的手指大小,保證足夠的觸摸面積。
2.2.2 軟件程序優(yōu)化抗干擾水平
加入防抖動代碼程序段到系統(tǒng)程序中,具體方法如下。
(1)只有兩次連續(xù)計數(shù)值都為按下值的時候,系統(tǒng)才認為此時按鍵被按下。
(2)當(dāng)計數(shù)值減小,如果不是按鍵按下,需判斷是否進行按鍵計數(shù)值的刷新,這樣做的目的是防止上文提到的速率較慢地接觸按鍵未被監(jiān)控到[8]。
SJD160雖然是一款專用于觸摸按鍵的芯片,內(nèi)部集成了處理觸摸的模塊,但依然需要在開發(fā)環(huán)境中編寫相應(yīng)程序代碼,通過設(shè)置合適的靈敏度等參數(shù),來實現(xiàn)SJD160觸摸模塊的優(yōu)化功能。
下面將通過程序流程圖的形式展示整個觸摸按鍵的工作過程,在此之前已經(jīng)通過自適應(yīng)法、防抖動法和軟硬件抗干擾法完善了整個系統(tǒng)的穩(wěn)定性。
由圖11可知,程序判定手指是否按下,通過以下過程:若芯片從KEY0到KEY7口所檢測到的輸入值,記為A;和上次的輸入值,記為B;相減結(jié)果的絕對值大于默認標(biāo)準(zhǔn)值,記為T;即A-B>T,則系統(tǒng)判定出現(xiàn)按鍵動作,那么接下來立刻進入防抖動程序模塊;若判定按鍵無手指按下的動作,則使用自適應(yīng)方案。
圖11 SJD160判定按下程序設(shè)計流程圖
觸摸式按鍵的感應(yīng)強度決定了默認值T的大小,默認值T與感應(yīng)強度成反比關(guān)系。并且T的選擇需要參考抗干擾和能鑒別按鍵動作:能鑒別按鍵動作是指T不能太大,以保證能夠捕捉到按鍵動作;而抗干擾是指標(biāo)準(zhǔn)值T也不能過小,目的是保證不會因為外界溫度,濕度,粉塵的影響而出現(xiàn)系統(tǒng)誤識別按鍵按下的情況。
上述思路也被用于判定松開的設(shè)計中。由圖10可知,假設(shè)松開按鍵的默認值是K,(K的選取規(guī)則和T相同)。如果A-B>K,表示系統(tǒng)判定有松開按鍵動作,最終重新刷新后再退出程序。
圖12 SJD160判定松開程序設(shè)計流程圖
本文對SJD160觸摸專用芯片進行了詳細的介紹,為了提高電容式觸摸按鍵系統(tǒng)的穩(wěn)定性,創(chuàng)造性地選用自適應(yīng)方法來刷新正常狀態(tài)下的無按鍵充電時間值,在程序設(shè)計上增添防抖動操作,硬件上加強抗干擾水平的PCB電路繪制,為實現(xiàn)觸摸按鍵系統(tǒng)提供了一個新的方法。
經(jīng)過實踐證明,上述方案優(yōu)化效果頗佳,切實有效地提高了電容式觸摸按鍵板的抗干擾和自適應(yīng)能力。
[1] TomPerme.Introduction To Capacitive Sensing[EB/OL].([2010-03-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[2] Burke Davison.Capacitive Touch Algorithm Simulation[EB/OL].(2010-04-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[3] Tom Perme.Software Handing for Capacitive Sensing[EB/OL].(2010-04-03).http://www. ST. com/en _ US/technology/m Touch Buttons/index.html.
[4] Marc Mc.Comb.Introductions to m Touch Capacitive Touch Sensing[EB/OL].(2010-03-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[5] Tom Perme.Layout and Physical Design Guidelines for Capacitive Sensing.[EB/OL].(2010-04-03).http://www.ST.com/en_US/technology/m Touch Buttons/index.html.
[6] 孫鑫,余安萍.vC++深入詳解[M].北京:電子工業(yè)出版社,2004.
[7] 石林.帶分析功能1對8編程器的開發(fā)[D].長春:吉林大學(xué),2007.
[8] Thomas Permer.電容觸摸傳感的理論框架[J].電子產(chǎn)品世界,2009(8):9-11,15.