挑戰科技的極限—電容式觸控感測技術

本文作者:admin       點擊: 2006-05-10 00:00
前言:
儘管觸控感測器已問世多年,但隨著近年來混合訊號可編程元件技術的發展,促使實用且附加價值高的電容式觸控感測器(capacitance-based touch sensors)成為可取代機械式開關的一個非常具有潛力的替代方案,且能夠符合各類消費性電子應用的需求。本文除了介紹觸控式感測介面的設計實例外,將會進一步說明電容式感測器如何在覆蓋一層厚玻璃絕緣層(overlay)的環境下,仍能順利運作。

典型的電容式感測器設計主要是採用3mm厚度或以下的覆蓋絕緣層。隨著絕緣層厚度的增加,要感觸到手指尖觸碰的難度也會升高。換句話說,覆蓋絕緣層厚度增加也代表調整系統的程序將挑戰科技的極限,將電容式感測技術從科學提升至藝術的層面。為了展現出設計人員如何以電容式感測器挑戰今日科技的極限,本文中的例子將把玻璃絕緣層的厚度設定為10mm。其實,玻璃是一種可塑性佳且易於取得的材質,並且因其透明的特性,可以清楚透視絕緣層下的感測墊(sensor pads),也因此以玻璃為材質的覆蓋絕緣層也能直接應用在家電產品上。

指觸電容技術
任何一種電容式感測系統均是由一組與電場交互作用的導體構成的。當我們探討到人體組織時,會發現人體內部其實滿佈了可導電的電解質溶液,其外部被一層帶有耗損介電質( lossy dielectric)特性的皮膚所包覆。因此,我們可以發現電容式觸控感測器的原理,正是利用人體可導電的特性而設計的。

一個簡單的平行板電容器(parallel plate capacitor)是由兩片經由介電質層(dielectric layer)所分隔的導體所構成。在這種電容器中,多數的電荷會直接聚集在兩片極板之間。當部分電荷散溢到極板以外的區域時,就會產生邊緣電場(fringing fields)的現象。正因如此,研發人員在設計電容式感測器的其中一項挑戰就是設計一組印刷電路板走線(traces),這組走線必須能將邊緣電場導引至使用者可使用的主動感測區塊。由此看來,平行板電容器並非是設計觸控感測器的一個理想的選擇。

當手指尖接近邊緣電場時,相當於整體電容式系統中導體的表面積增加了。由手指尖的觸碰而產生的額外電容量稱為指觸電容值(finger capacitance),在本文中以英文縮寫CF表示。另外,沒有因手指尖的碰觸而受影響的感測器電容值,一般稱做寄生電容值(parasitic capacitance),在文中則以CP表示。

常常業界都會有一個錯誤的觀念,認為手指一定要接地(ground)才能啟動觸控系統。其實無論是否有接地,手指尖能被感應是因為其表面帶有電荷所造成的。

感測器的印刷電路板設計

本文採用其中一個電容式感測器介面的設計範例來作為輔助說明,其印刷電路板(printed circuit board,PCB)的俯視圖如圖1所示。圖中觸控式按鍵的直徑為10mm,相當於一般成人手指尖的大小。這個範例採用的印刷電路板上包含了四個觸控式按鍵,分別以中心間距20mm的間距散佈於電路板上。讀者可以看到接地平面位在最上層,而按鍵與接地面之間以等距分離。若按鍵與接地面的間距過於狹窄,會造成過多電場能量直接導至接地平面;相反的,若間距太大,則難以將電場能量導引至覆蓋絕緣層,因此對設計業者而言,按鍵與接地平面間距的大小變成設計上必須考量的要素之ㄧ。而最新研究發現0.5mm為最佳間距值,以此間距,邊緣電場能輕易穿透厚達10mm的玻璃絕緣層。

 

圖1:印刷電路板之俯視圖

圖2顯示同一款感測器架構的剖面圖。如圖2所示,感測墊與PCB經由導線相連並可連結至電路板下方的極板中。當電場要用最短路徑導向接地平面時,圖中的介電值常數(dielectric constant, 以r表示)的值就會影響導入所需材質的電場能量密集度。標準窗戶玻璃的介電值常數約為8,而圖2中PCB所採用的FR4材質的介電值常數約為4,而家電產品常用的Pyrex®安全玻璃的介電值常數約為5。在本項設計範例中,則是採用一般窗戶玻璃的材質做為覆蓋絕緣層。值得一提的是,本範例所用的玻璃片與PCB之間則是使用3M生產的468-MP絕緣接合劑膠膜。
 
圖2:PCB與覆蓋絕緣層的剖面圖

CapSense電容式感測技術概要

電容式感測系統主要是由一組可編程電流源(programmable current source)、一個精確的類比式比較器,以及一組可依序穿過電容式感測器陣列的類比多工數據匯流排(mux bus)所構成。在本文中弛張振盪器(relaxation oscillator )則當作系統中的電容值感測器使用。圖3則顯示該款振盪器的簡化電路圖。

圖3:弛張振盪器電路

比較器的輸出端與脈衝寬度調變器(PWM)的時脈輸入端相連接,而PWM主要是控制一個以24MHz頻率運作的16位元計數器的邏輯閘。手指尖觸碰到介面不僅會提升電容值,而且計次值也會跟著增加,因此只要利用這套電路系統來測量電容的變化,就可以判斷手指尖是否有觸碰到感測器。圖4顯示此系統的典型波形圖。

 
圖4:CapSense弛張振盪器電路的波形圖

圖5為電容式感測電路的示意圖。其電路採用Cypress CY8C21x34系列的PSoC晶片,協助進行電容式感測與序列通訊的功能。該晶片包含一組以韌體進行組態的類比與數位的功能區塊,並內建於快閃記憶體中。第二顆晶片負責處理RS232電位轉換(level shifting)的工作,並與主機端電腦連結,讓電容感測的資料能以115,200 baud的傳送速度記錄於主機中。圖5中的圖表便顯示四個CapSense按鍵的針腳分配情形。PSoC晶片可透過ISSP header來進行編程。ISSP header則包括電力、接地平面、以及SCL與SDA可編程針腳。另外,透過DB9連接埠,主機端電腦就能與電容式感測電路板進行資訊傳輸的工作。

圖5:電容式感測電路的示意圖

PSoC的韌體組態是設定以5V的電源供應量運作,其內部系統時脈可達24MHz。將24MHz的時脈以26除頻後,即可提供TX8模組中115,200 baud資料傳輸速率所需的時脈。CapSense使用者模組(User Module)則選擇以週期性方式(Period Method)執行,此時計數器會在固定的弛張震盪器週期數之內,累進計數的次數。換句話說,16位元計數器的累進值就代表某一時間長度,而該時間長度則和感測器電容值之間存有比例關係。

列表1呈現系統韌體的程式內容。多數電容式感測系統程式設定的工作,皆編寫成標準的CSR例行程式(routines),可供C程式呼叫。例如:CSR_1_Start()可設定PSoC的內部繞線路由,因此若要將電流源DAC連接至類比式多工器時,即可呼叫CSR_1_Start()進行設定,而比較器也可以透過它設定連接至已適當啟動的PWM和16位元計數器。

列表1:電容式感測系統的韌體內容

//-----------------------------start of listing--------------------------------------------------------
//----------------------------------------------------------------------------
// main.c, a CapSense program in C
//  A demonstration of Capacitive Sensing with PSoC 
//  with a 10mm glass overlay
//----------------------------------------------------------------------------
#include    // part specific constants and macros
#include "PSoCAPI.h"  // PSoC API definitions for all User Modules


void main()
{
  //a flag that is set when a finger is on any buttons
 int bBaselineButtonFlag;  
 
 CSR_1_Start();  //initialize CapSense user module
 TX8_1_Start(TX8_1_PARITY_NONE); //initialize TX8 module
 M8C_EnableGInt;  //enable global interrupts
 
 CSR_1_SetDacCurrent(200,0); //set current source to 200 out of 255
//use low range of current source
 CSR_1_SetScanSpeed(255); //set number of osc cycles to 255-2=253
 

 while(1)
 {
  CSR_1_StartScan(1,1,0);  //scan one button only, button 1 on P2[3]
//wait for scanning of button to complete
  while (!(CSR_1_GetScanStatus() & CSR_1_SCAN_SET_COMPLETE));
  
  //update baseline if required, set flag if any button pressed
  bBaselineButtonFlag = CSR_1_bUpdateBaseline(0);

//data log the raw counts on button 1 
TX8_1_PutSHexInt(CSR_1_iaSwResult[1]);
TX8_1_PutChar(',');

//data log switch mask... which switch is on?
  TX8_1_PutSHexInt(CSR_1_baSwOnMask[0]);
  TX8_1_CPutString(",");

//data log switch difference = raw counts - baseline
TX8_1_PutSHexInt(CSR_1_iaSwDiff[1]);
TX8_1_PutChar(',');

//data log update timer as a teaching aid
TX8_1_PutSHexInt(CSR_1_bBaselineUpdateTimer);
TX8_1_PutChar(',');

//data log the baseline counts for button 1
TX8_1_PutSHexInt(CSR_1_iaSwBaseline[1]/4);


 TX8_1_PutCRLF();
 

 }  
}  
//-------------------------------end of listing--------------------------------------------------------

調整感測器

當以上列表程式中的CSR_1_StartScan()被呼叫時,感測系統就會開始量測Button1的電容值。原始計次(raw count)數值會儲存在CSR_1_iaSwResult[]陣列中。使用者模組也會追蹤原始計次數值所用的基準值(baseline)。每個按鈕的基準值為平均原始計次數值,可經由軟體中的IIR filter進行週期化計算,並利用程式控制其更新速率。系統內部可能受到溫度或其他環境的影響而產生些微不穩定的情況,此時基準值就可供系統參考,以修正並適應不穩定的情形。

而開關差異值陣列(switch difference array)CSR_1_iaSwDiff[]包含原始計次數值,且免除了基準值偏移的影響。目前按鈕的ON/OFF狀態是由開關差異值所決定的,因此,就算基準值會隨者時間而變化,此種方法也可以讓系統的效能持續維持穩定狀態。

圖6顯示內建於韌體的差異計次數值與按鈕狀態之間的轉換函式。這個轉換函式中的遲滯(hysteresis)現象,不僅讓ON與OFF狀態在計次受雜訊影響的情況下,也能夠完全轉換;並且提供按鈕開關反跳(debounce)的功能。較低的臨界值稱為雜訊臨界值(Noise Threshold);較高的則稱為指觸臨界值(Finger Threshold)。這些臨界值的設定可決定系統的表現。若是在覆蓋絕緣層很厚的狀況下,訊號雜訊比(signal-to-noise ratio)就會很低。因此要在這類系統中設定這些臨界值是相當具有挑戰性,而這也是讓電容式感測系統設計成為一門藝術的原因之一。

 
圖6:差異計次數值與按鈕狀態之間的轉換函式

圖7顯示持續按下按鈕3秒的理想化原始計次波形,以及兩個臨界值的設定。雜訊臨界值設定為10次計次,而指觸臨界值則設定為60次計次。另外,為了能清楚看到臨界值的設定,圖8並沒有顯示出通常存在於實際計次數據中的雜訊。 

 
圖7:原始計次值(移除基準值)之臨界值設定圖示

系統調整程序中還包含兩個部分,其一是要選擇電流源DAC的值,另外則是要設定震盪器週期數的值,以便累計計次值。在韌體中的函式CSR_1_SetDacCurrent(200,0)主要是設定電流源的值為低範圍電流的255分之200,相當於14uA。而函式CSR_1_SetScanSpeed(255)則是將震盪週期數值設定為253(即255-2)。針對原始計次值與差異計次值的分析可以發現,系統存有約15pF的寄生極板電容值CP,以及約0.5pF的指觸電容質CF。因此,手指對總電容值所造成的影響約為3%。每個按鈕每次所擷取的原始計次值僅需500微秒的時間。

效能測量

電容式感測系統的效能測量如圖8所示。主機端電腦可以透過終端模擬程式,讀取差異計次值,並且將其讀取數據繪於spreadsheet上。測量時,將手指放在10mm厚的玻璃覆蓋層上3秒鐘,而按鈕的ON/OFF狀態則是累加在原始計次值上。即使由於玻璃較厚而造成感應時雜訊干擾原始計次訊號,按鈕仍可以很清楚的在每個狀態之間轉換。值得注意的是,指觸與按鈕的臨界值是會隨著基準值的變化而進行週期性的調整。當系統偵測到手指時,基準值就會鎖定該值一直到手指移開為止。

 
圖8:測量10mm厚玻璃的感測器效能

圖9與圖10顯示出每個狀態轉換的細節圖。在圖9中,按鈕的初始狀態是OFF。在指觸臨界值上,針對第一個差異計次值進行取樣時,按鈕狀態會轉變成ON。在圖10中,當差異計次值的第一個取樣低於雜訊臨界值時,按鈕狀態則會轉變成OFF。
 
圖9:轉變成ON狀態的細部圖

 
圖10:轉變成OFF狀態的細部圖

與機械式開關相較,電容式觸控感測器之主要優勢在於電容式觸控感測器不會因為長時間使用而耗損。近來在混合訊號技術方面的進展,不但使得觸控感測器的價格下降,使其能夠廣泛應用在各式消費性產品上,而且感測電路也具備更高的靈敏度與穩定度,因而能提高覆蓋絕緣層的厚度與整體耐用度。利用本文所提到的設計技術,透過厚達10mm的覆蓋絕緣層依然可以感測到手指觸碰,另外,運用以雜訊臨界值與指觸臨界值為基礎的開關反跳(debounce)的功能,也使得按鈕能進行完全的ON與OFF狀態轉換。這些技術讓電容式觸控感測器成為足以取代機械式元件的一個實際可行的替代方案。

電子郵件:look@compotechasia.com

聯繫電話:886-2-27201789       分機請撥:11