潘 偉,周 龍
(1.中國人民解放軍信息工程大學,河南鄭州450002;2.武漢工業學院電氣與電子工程學院,湖北武漢430023)
近幾年電容式觸摸感應按鍵技術在電子行業內得到進一步的推廣,已經開始逐步代替傳統的機械式按鍵開關界面。因為觸摸按鍵不需要機械動作,這就使得基于此的產品包裝上能夠完全密封,并且設計上更加小巧便攜,現代美觀,具有更好的市場潛力。由于觸摸按鍵的優點多多,讓其除了在家用電器市場上占有一席之地外,也開始逐步在醫療,汽車等領域被廣泛采用。
作為全球半導體供應商巨頭的法國ST公司,最近推出新的基于觸摸芯片的觸摸方案,這對于許多開發觸摸按鍵板的程序員來講是一個好消息。ST公司的觸摸方案,采用了兩種技術手段:自適應原理和電容直接測控。
SJD160是一款基于自適應原理的電容觸摸感應專用芯片。內部包含8位的MCU(Micro Control Unit)、8個輸入輸出口(I/O)的觸摸感應集成電路。SJD160相比于以往的觸摸芯片,在抗干擾水平,芯片用戶手冊詳細度,自適應周圍環境變化,相近按鍵互不影響等方面有了較大的提高。現在,以該芯片為主控的產品涉及消費類電子產品、手持式視頻播放器、家用電器、車載設備、大型醫療設備等。
SJD160電容觸摸按鍵類似于一個自適應振蕩器,期間不斷進行充電和放電[1]。由圖1可知:它的頻率能夠被測量,并且自適應振蕩器有不變的充放電周期。若用手指或者其他帶電容物質接觸,由于手指本身存在電容,那么電容總和就會變大,相應的介電常數ε將增大,導致周期變大,因為周期和頻率成反比,則頻率就降低。所以,通過頻率的變化就能夠捕捉到觸摸的動作[2]。

圖1 自適應的原理
圖2所示的振蕩電路中,充電的上下限靠運放的正極來設定,1000 PF的電容的作用是濾波,使之有一穩定的下限。電路內部信號與運放C1的正輸入端相連,充電的下限由運放C2的正輸入端通過接收外信號來配置,而電壓V的負極在兩級間進行充放電,它被邏輯電平信號C2OUT驅動。

圖2 自適應的振蕩電路
作為具有自我激勵功能的RC振蕩器,電路中感應電壓的充電方向由圖中的具有鎖存功能的運放去改變。
由圖3可知,振蕩器進行一個充電+放電的周期過程是:先由運放的正輸入端配置充電的下上限,充電過程是從下限往上限充電,接著充滿后開始從上限往下限放電,完成這兩個過程所耗費的時間就是一個充放電的周期。

圖3 充放電的周期
在Cs電壓比下限低的時候,開始進行充電,當V負極處于下上限之中,那么系統是處于前一狀態(充電或放電),當V-充電后高于上限時,系統則開始進行放電[3]。
傳感器電極板(符號Cs)和反饋電阻R構成了一個RCs回路,如圖4所示。圖4(a)為 RCs回路,用時間常數確定電容充放電的速度,即:τ=RCs。圖4(b)和圖4(c)表示未接觸時的時間常數。

圖4 RCs電路
當人的手指接觸焊盤,因為手指附帶著電容,將使電容總和增多,進而使RCs時間常數產生變化。如圖5所示:圖(b)和圖(c)表示當有手指接觸時,RCs時間常數變大,振蕩器的頻率降低,這頻率變化將會在單片機程序中被監測到。

圖5 變化的RCs時間常數
如圖6所示,圖中SJD160有24個管腳,I/O口占據8個管腳,從KEY0到KEY7,分別連接TS_0到TS_7。外部模擬信號將通過此8個口進入芯片內部經過AD模塊轉為數字信號進行處理,通過此方法檢測有沒有存在觸摸源靠近或者接觸到這8個輸入口上。

圖6 SJD160硬件連接電路圖
利用上述原理就將KEY0到KEY7制作成按鍵,將信號傳入TS_0-TS_7管腳,通過感應外部輸入模擬信號的變化來檢測有沒有手指觸摸。
SJD160共有24個管腳,具體管腳型號及功能,如表1所示。

表1 SJD160芯片管腳介紹
圖6所示是SJD160的硬件連接電路圖,TS0-TS7連接按鍵板上的觸摸按鍵,P00-P07連接LED指示燈,與TS0-TS7相對應,作用是當手指觸摸到按鍵后,指示燈亮起,例如觸摸到TS0,則P00口將被置于低電平,則所連指示燈D1A亮起;當手指離開觸摸板,電容值回復默認設定值,觸發POO端口回復高電平狀態,此時指示燈重新熄滅,給用戶的感覺就是觸摸哪個按鍵,哪個按鍵就被點亮,如圖7所示。

圖7 指示燈連接圖
VC1不接,VC2接電容接地起濾波作用。而信號傳輸通過P20,P21口,如圖8所示。

圖8 P20,P21口外接線圖
因為電容的改變體現在碼值上,當外設通過J2與板子相連后,觸摸板所檢測到的電容值改變的數據信息將通過P21,P20傳遞給外設(專門的讀碼值設備),方便程序員直觀的觀測。作為自帶微控制器的芯片,SJD160在被焊上觸摸板前,控制程序已經通過燒錄器燒進SJD160中,焊上板子后內部程序將無法再被修改。如果調試觸摸板過程中發現bug,則需要重新修改控制程序后再燒進新的SJD160中,焊上后繼續調試。本文主要介紹觸摸板的工作原理,具體的SJD燒錄控制等內容,這里不再詳述。
手指觸摸在按鍵板上的時候,電荷經亞力克面板遷移至電容觸摸式按鍵上,而電容觸摸式按鍵又和芯片的管腳相通,因此,通過AD模塊的轉換,模擬電壓信號變成了數字電壓信號進入芯片內部被捕捉到,內部電路捕捉到波動的電壓,經過計算,給出經歷的時間值,再通過預先設置好的算法,判斷出是否有按鍵被按下。整個流程圖如圖9所示。

圖9 SJD160按鍵檢測掃描流程圖
設計電容式觸摸按鍵時,要先檢測按鍵的電平/電荷量,還包括關聯的轉換關系等,表示需要先校準系統;然后外界周圍環境的改變將影響到電平/電荷的變化,例如干燥環境下的靜電和高頻電磁的干擾都有可能導致非人為的誤操作,且環境溫度的改變也將對系統的校準具有不利的影響,同時長時間在表面上的塵埃的富集也是潛在的不利因素,影響精確性和穩定性。綜上所得,提高抗干擾水準和自適應是優化觸摸按鍵技術的關鍵手段。
為了應付外界多變的環境,觸摸按鍵的設計必須具有自適應的能力。判斷是否有按鍵按下的方法是將兩次讀取的充電時間值相減,再和之前的標準值作比較而實現的,上電后無按鍵的充電時間值將被作為默認的充電時間值。所以當有手指按下觸摸按鍵板,所測得的充電時間差值與默認值將會有很大不同,以此來判斷是否按鍵板被按下。
為優化自適應能力,給出此方案:無按鍵充電時間值隨著周邊環境的變化而變化。在一個連續的充放電系統里,將檢測到的無按鍵狀態下充電時間值一直無限逼近真正的無按鍵充電時間值,就可以實現按鍵的自適應能力。時間值公式如下:

式中T:默認的無按鍵充電時間值;T0:上次讀取的無按鍵充電時間值;T1:新讀取的無按鍵充電時間值。
此方法存在一個缺陷:當手指以非常緩慢的速率逐漸靠近按鍵板的時候,系統可能無法檢測出手指的靠近或接觸,因為系統適應了這種緩慢的電容變化,那么就無法檢測到該觸摸方式。但是實際操作中沒有用戶會走這樣極端的操作路線,所以這一缺陷并不會影響系統整個自適應能力。
優化抗干擾水平可以從兩個方面入手:①軟件程序里增加防抖動代碼;②硬件設計上優化PCB板得繪制,使抗干擾水平提高[4-7]。
2.2.1 硬件設計優化抗干擾水平
在硬件電路上,由于充電時間較短,只有在硬件電路的繪制上進行改良,增強電容式觸摸面板的抗干擾水平。
(1)按鍵成叉形,第一個叉子接按鍵,第二個叉子接地線,他們之間互叉卻不互連。
(2)鍵與鍵中間的空隙要布滿地線,如圖10所示:這樣的好處是使干擾源幾乎不能對觸摸按鍵造成干擾。

圖10 按鍵與按鍵間的設計
(3)繪制PCB走線的時候盡量以直線為主。
(4)觸摸按鍵的大小近似于普通人的手指大小,保證足夠的觸摸面積。
2.2.2 軟件程序優化抗干擾水平
加入防抖動代碼程序段到系統程序中,具體方法如下。
(1)只有兩次連續計數值都為按下值的時候,系統才認為此時按鍵被按下。
(2)當計數值減小,如果不是按鍵按下,需判斷是否進行按鍵計數值的刷新,這樣做的目的是防止上文提到的速率較慢地接觸按鍵未被監控到[8]。
SJD160雖然是一款專用于觸摸按鍵的芯片,內部集成了處理觸摸的模塊,但依然需要在開發環境中編寫相應程序代碼,通過設置合適的靈敏度等參數,來實現SJD160觸摸模塊的優化功能。
下面將通過程序流程圖的形式展示整個觸摸按鍵的工作過程,在此之前已經通過自適應法、防抖動法和軟硬件抗干擾法完善了整個系統的穩定性。
由圖11可知,程序判定手指是否按下,通過以下過程:若芯片從KEY0到KEY7口所檢測到的輸入值,記為A;和上次的輸入值,記為B;相減結果的絕對值大于默認標準值,記為T;即A-B>T,則系統判定出現按鍵動作,那么接下來立刻進入防抖動程序模塊;若判定按鍵無手指按下的動作,則使用自適應方案。

圖11 SJD160判定按下程序設計流程圖
觸摸式按鍵的感應強度決定了默認值T的大小,默認值T與感應強度成反比關系。并且T的選擇需要參考抗干擾和能鑒別按鍵動作:能鑒別按鍵動作是指T不能太大,以保證能夠捕捉到按鍵動作;而抗干擾是指標準值T也不能過小,目的是保證不會因為外界溫度,濕度,粉塵的影響而出現系統誤識別按鍵按下的情況。
上述思路也被用于判定松開的設計中。由圖10可知,假設松開按鍵的默認值是K,(K的選取規則和T相同)。如果A-B>K,表示系統判定有松開按鍵動作,最終重新刷新后再退出程序。

圖12 SJD160判定松開程序設計流程圖
本文對SJD160觸摸專用芯片進行了詳細的介紹,為了提高電容式觸摸按鍵系統的穩定性,創造性地選用自適應方法來刷新正常狀態下的無按鍵充電時間值,在程序設計上增添防抖動操作,硬件上加強抗干擾水平的PCB電路繪制,為實現觸摸按鍵系統提供了一個新的方法。
經過實踐證明,上述方案優化效果頗佳,切實有效地提高了電容式觸摸按鍵板的抗干擾和自適應能力。
[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].北京:電子工業出版社,2004.
[7] 石林.帶分析功能1對8編程器的開發[D].長春:吉林大學,2007.
[8] Thomas Permer.電容觸摸傳感的理論框架[J].電子產品世界,2009(8):9-11,15.