Global Sources
電子工程專輯
 
電子工程專輯 > EDA/IP
 
 
EDA/IP  

一種校準觸控式螢幕?顯示螢幕之間點與點對應關係的算法

上網時間: 2003年03月08日     打印版  Bookmark and Share  字型大小:  

關鍵字:touch screen  觸控式螢幕  resistive-type  阻性  calibration 

阻性觸控式螢幕與LCD顯示器上的各點很難完全準確配合,因此除了採用精確的機械裝配技術校準之外,在使用之前還必須進行軟體校準。本文介紹的校準方法首先確定誤差源,然後透過三個選定點導出觸控式螢幕的校準矩陣,並用軟體方法來實施點與點之間對應關係的校準。掌握這種技術,對降低嵌入式系統的成本至關重要。

圖1所示是一個阻性觸控式螢幕的橫截面,其結構十分簡單,由上下相對放置的兩片玻璃構成,玻璃的內表面塗上薄薄一層導電材料,並用一些小玻璃珠將導電表面隔開。當手指或觸控筆按壓玻璃表面時,上層玻璃產生彎曲接觸下層玻璃。這種結構中玻璃珠間的距離決定了觸控式螢幕的敏感度。玻璃珠互相放置得越近,敏感度越小,壓力就要越大,以使兩層玻璃片可靠接觸。圖1:一個阻性觸控式螢幕的橫截面。

圖2所示是觸控式螢幕的等效電路。透過一個觸控式螢幕控制器(AD轉換器)將電源的正、負極加到一塊玻璃的導電層兩端,另一塊玻璃上的導電層則起到一個電位計游標的作用。在玻璃上不同的觸控點,導電的情況也不同,數位轉換器上便會錄得不同的測試電壓值,然後控制器將錄得的電壓值轉換成一個二維座標:X軸座標和Y座標。

這些控制器每秒鐘可進行200次或更多的採樣。採樣率通常與背景噪音和控制器品質有關。智慧控制器還具備其它一些功能,如檢測到觸控時中斷CPU、在檢測到觸控前設定採樣率連續進行採樣。沒有觸控時,控制器處於待機狀態。

由於阻性觸控式螢幕結構簡單、作業易懂、所需軟硬體有多個廠商可供選擇,因此可用於對成本敏感的設計中。然而,由於觸控式螢幕與它背後的顯示器(LCD或其它)間的對應點很難完全配合,因此幾乎所有帶阻性觸控式螢幕的設備在出廠前均要經過一定的校準。否則在觸控式螢幕上點擊某一按鈕或選擇某項功能時,內建的軟體便無法對這一點擊做出正確響應。

本文介紹的校準方法需要三個目標點?或測試點,然後依次進行觸控測試,以確定該顯示螢幕特有的校準因數。最後透過這些校準因數將觸控式螢幕的對應點與實際顯示的對應點完全對應起來。

誤差的來源圖2:觸控式螢幕阻性電路的等效模型。

有幾個誤差源會影響觸控式螢幕控制器,使之無法產生正確的對應點X和Y座標。最主要的誤差源是電氣噪音、機械誤差及放大因子。此外,作業者的誤作業也會有所影響,如手指或觸控筆按壓時間不夠長或壓力不夠大。以上所有誤差均會產生無用數據,必須對它進行糾正補償才能使觸控式螢幕正常工作。

在各種電氣系統中,由熱效應或電磁效應以及系統設計缺陷引起的電氣噪音無處不在。在觸控式螢幕中,由於AD轉換器的前端電路具有高輸入阻抗,因此特別容易受到電氣噪音的影響。除了對帶有觸控式螢幕控制器的電路小心佈局外,我們通常在AD轉換器輸入端增加低通濾波器來解決這一問題。此外也可選擇軟體方法,舍棄AD轉換中的最小的一、兩位,並用算法將一些落在允許誤差範圍之外的數據點從採樣流中去除。這種軟體算法也可消除由使用者產生的誤差。

本文所闡述的校準方法可用來解決由於機械誤差和放大因素引起的誤差。圖3中的圓圈表示觸控式螢幕下的LCD顯示的圖形,橢圓則表示當用戶順著LCD顯示的圖像畫圈時,觸控式螢幕對應點的集合,不過有所夸大。這個重建的圖形顯然已經過一系列旋轉、移位和放大,而且在每個方向變換的參數不一樣。校準的重點則是將觸控式螢幕上顯示的這個重建圖形經過變換,換算出與LCD顯示的圖形相一致的對應點集合。

校準的數學基礎

為了得到一個通用解決方案,我們將每個點描述為一個數學參量。如圖4所示,可將LCD顯示器上的每個點當作一個向量PD,而該點在觸控式螢幕上對應的點則當作向量P。圖3:圓圈表示觸控式螢幕下的LCD顯示的圖形,橢圓則表示當用戶順著LCD顯示的圖像畫圈時,觸控式螢幕對應點的集合。

此外,我們假設一個參量M,透過這個參量可將PD與P進行換算,即

PD=MP (1)

這?的M是一個轉換矩陣,也是我們要研究的對象。如果能得到轉換矩陣M中相關的數值,那麼給定觸控式螢幕上任一點P,我們就可換算出它在LCD顯示器上的對應點PD

現在假設LCD顯示器上的任一點都與觸控式螢幕上的某點相對應,但要經過旋轉、移位和放大處理。

如果按向量的長度和角度將每個點用(X,Y)兩個座標來表示,則LCD顯示器和觸控式螢幕上的點都可透過以下方程式來表達:








如果觸控式螢幕在校準時與顯示螢幕之間存在一個角度差異,為了進行補償,要進行旋轉處理,即θr=θD-θ,θr是角度差。這樣我們便可得到一個中間點:




將每個點的X座標和Y座標以不同的因子放大,得到KX和KY。考慮放大因子可以得到以下方程式,它更準確地描述了LCD顯示器與觸控式螢幕上點與點之間的對應關係:




最後,我們加上位移因子XT和YT,得到LCD顯示器與觸控式螢幕上點與點之間的對應方程式:






為了將方程式5再次變換以求取方程式中的未知量,假設觸控式螢幕和LCD顯示器上點與點之間有一個角度差θr,但這一角度極小,因此sinθr θr,而cosθr 1.0。根據這一假設我們得出另兩個十分有用的近似方程式:







透過以下組合,方程式5可重新表示為:






方程式7的優點在於,它採用觸控式螢幕座標描述了LCD顯示器上的點座標。上述方程式也可轉換為:






利用我們原先的假設(即實際情況中的放大、旋轉和位移因數均為常量),除X和Y之外,上述方程式右邊的各項均為常量。

透過採用更方便的方式表達XD和YD座標,我們可以得到觸控式螢幕與LCD顯示器各點之間的對應關係方程式:






可見,只有當觸控式螢幕和LCD顯示器間的角度差非常小時,才可運用上述公式。

校準矩陣圖4:可將LCD顯示器上的每個點當作一個向量PD,而該點在觸控式螢幕上對應的點則當作向量P。

一般的校準算法常選取2-5個採樣點來收集校準資訊。假設LCD顯示器上的對應點可以透過觸控式螢幕上的點轉換得到,只需正好3個採樣點我們就可得到校準數據。需要3個採樣點的原因在於方程式9a和9b有三個未知量。從這3個採樣點我們可獲得足夠的資訊來建立並求解這一聯立方程組。

採樣點的選取也應當考慮到實際情況。它們必須能得出非冗餘的聯立方程組,它們不能太靠近觸控式螢幕的邊緣(此處呈現非線性),此外它們的間隔必須足夠寬,以便盡可能減少放大誤差。圖5所示的P0、P1和P2這三個點符合這些條件。這些點距觸控式螢幕邊緣約10%,分佈足夠散,得出以下非冗餘方程式:













從而求出A、B、C、D、E和F的值。一旦這些參數值定下來,便可利用方程式9,透過觸控式螢幕上的原始數據計算出它在LCD顯示器上的對應點。

上述聯立方程組的未知量已求解出,此處不再推導。直接跳過中間步驟得出最後結論,將K作為各方程式的公分母,便可得出未知量:























軟體實現圖5:採樣點的選取也應當考慮到實際情況。

實際的軟體實現過程相對簡單。可從www.embedded.com/code.htm上得到程式樣本,它包括三個文件:alibrate.c、calibrate.h和sample.c。第一個文件包含兩個函數setCalibrationMatrix()和getDisplayPoint()。前者實現了方程式13-18,後者則實現了方程式9。

啟動文件包含了各種聲明,另一個源文件則實現了一個控制台應用程式,這一程式執行校準功能,並示範如何在元件中使用這些函數。sample.c中的代碼假設在調用這些函數前,元件中實現了一個執行程式來採集校準數據。

表1是建議的校準步驟,將這些步驟執行完畢就實現了校準過程,此時設備便可開始從觸控式螢幕系統接收精確的位置資訊。觸控式螢幕控制器中設有中斷程式,當程式將數位轉換器的輸出數據過濾後,它需要調用函數getDisplay-Point()。通常,getDisplay-Point()函數調用是將觸控式螢幕某點數據存入用戶輸入隊列以前的最後一個步驟。


表1:建議的校準步驟


=======================================


1. 用全組數值調用setCalibrationMatrix()以設置顯示螢幕驅動器,並提供原始存取數據(見sample.c)。這樣就不需要為存取數據構造特殊的函數。你只需要按照與程式一樣的機制獲取縱座標。


2. 在座標 (XD0,YD0)畫出第一個目標。


3. 收集從觸控式螢幕返回的數據,並儲存在座標(X0,Y0)。


4. 在座標 (XD1,YD1)畫出第二個目標。


5. 收集從觸控式螢幕返回的數據,並儲存在座標(X1,Y1)。


6. 在座標 (XD2,YD2)畫出第三個目標。


7. 收集從觸控式螢幕返回的數據,並儲存在座標(X2,Y2)。


8. 採用參考顯示數據和其產生的觸控式螢幕數據作為變量,調用setCalibrationMatrix()函數。


=================================

其它考慮因素

執行採樣函數是為了保證每次都獲得準確結果,因而它的中間值未經放大。

由於多數數位轉換器提供的原始數據為10位元,因此需要進行整數型32位元數學運算,方程式15和18會產生31位元的符號數。執行這些方程式時要使用解析度高達1,024點的觸控式螢幕數位轉換器,它適用於解析度高達512點(寬度或高度)的顯示器。

如果要在大面積的觸控式螢幕中使用這些公式,就必須使用64位元整數或將縮小輸出值和中間結果,以免在計算校準因子時暫存器出現溢出。

函數getDisplayPoint()與校準矩陣有關,後者包括一套有效參量,這種採樣結構使用自動變量來顯示LCD顯示器和觸控式螢幕的對應點間以及校準矩陣間的關係,不過在實際執行中,校準矩陣最好是一個全局結構,並在啟動時正確初始化。

這些代碼可從www.embedded.com/code.htm免費下載,並用於多種場合。不過該代碼未經過任何最佳化處理。

本文小節

本文描述的觸控式螢幕校準方法簡單、靈活並可糾正一些常見的機械性誤差。這些誤差(位移、放大、旋轉)都是由於LCD顯示器與觸控式螢幕之間的不對應引起的。儘管可透過機械方法來彌補,但是軟體方法無需使用機械設備,且更能保證產品品質。

作者:Carlos E. Vidales


Tekelec公司


Email: CVidales.ee77@gtalumni.org




投票數:   加入我的最愛
我來評論 - 一種校準觸控式螢幕?顯示螢幕之間點與...
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首