注:本文是作者以前發表在其個人博客,現在發布到“聚豐開發”專欄
蘋果公司iPhone的成功將多點觸摸技術推到了一個前所未有的高度,經典的彈鋼琴應用程序可以支持超過5點的同時觸摸,雖然這一性能并不見得有太多的實用價值,但絕對帶給了用戶技術無限領先的震撼感。蘋果公司的iPhone采用電容屏和他們的專利技術來實現對多點觸摸的支持,價格自然不菲,但一點可以肯定,在支持的點數和性能穩定方面,目前還少有公司能在這方面挑戰蘋果的權威。
對于消費電子產品來說,流行就是硬道理,在iPhone大行其道的同時,一時間但凡是有觸摸屏的產品,都想讓自己通過多點觸摸等特性與iPhone攀上親戚關系,尤其是手機、MP4、GPS等產品,仿蘋果的心理更是急切。
蘋果公司的技術雖然在性能方面無可挑剔,但過高的成本使得這項技術只適合iPhone之類的奢侈品,對于更多的觸摸屏產品顯然無法承受這一成本。正是這個原因,尋找一種更為便宜的多點觸摸解決方案,成為眾多技術人員的期望,本文在不增加其它硬件成本的前提下,基于普通四線電阻屏,提出一種低成本解決方案,能夠在一定限制條件下可實現兩點觸摸的識別。
幾種現有的多點觸摸方案
1.硬件采用電容屏,通過軟件實現多點觸摸。優點是靈敏度高,性能穩定,支持的點數可滿足絕對大部分應用需求;缺點是成本高,而且蘋果有專利保護。
2.硬件采用數字電阻屏,實際上是用電阻屏的材料做成一個透明鍵盤矩陣,通過行列掃描判斷所按下的點。優點是價格便宜,性能可靠,可支持的點數最多;不足是需要比較多的行列連線接口,不能實現手寫功能。
3.硬件采用模擬電阻屏,在專用芯片中通過軟件計算出多點觸摸。優點是既能支持多點觸摸,又保持手寫功能,另外成本增加不多;缺點是支持的點數最少,方案商在實現細節上大都語焉不詳,性能和穩定性尚待驗證。
4.采用紅外、表面超聲波等方式實現觸摸檢測,實際應用比較少,這里不做探討。
低成本多點觸摸方案
毫無疑問,四線模擬電阻屏是觸摸屏中成本最低的一種,如果我們能在這種屏的基礎上找到一種實現多點觸摸的方法,只要控制額外增加的硬件成本,成本上考慮能夠有所突破的可能性最大。
雖然現在有不少MCU帶有觸摸屏接口,因為我們需要識別多點觸摸,所以這類MCU的觸摸屏接口并不適用,實際上方案的要求更簡單,只需要選用MCU能提供4路ADC口使用,另外再用4條雙向IO進行控制。來看一下這種低成本方案的構成細節,圖(一)中(d)部分為方案示意圖,并不需要對電阻屏做出過多改動,只是在外圍增加了兩個電阻,這幾乎是可以忽略不計的成本。
圖(一) 低成本電阻觸摸屏原理及方案示意圖
圖(一)中(a)(b)(c)三部分對電阻觸摸屏的原理做了簡單示意,對單點觸摸位置的識別方法這里不做詳述,不清楚的朋友請自行查閱相關資料進行了解。單點觸摸的識別只需要4條雙向IO就可以實現,其中2條需要支持ADC功能,從圖(一)中(d)部分可以看出方案做了一點修改,使用的IO口數量增加了一倍,另外還有兩個電阻。
為便于分析,我們需要建立一個觸摸屏工作的等效電路模型。因為觸摸屏X和Y方向對觸摸檢測方法是一樣的,所以我們只建立一個電路模型,圖(二)展示了觸摸屏按下一個點和兩個點的狀態。
圖(二) 觸摸屏等效電路模型示意圖
圖(二)標號說明:R1、R2為IO口的輸出電阻,只要知道它的存在,不用管具體大小;R3、R4、R5、R6為4路ADC口的輸入電阻,阻值遠大于其它電阻;R7、R8、R9為觸摸屏的分段等效電阻,阻值總和為幾百歐;R12、R13、R14為觸摸屏另外一層的分段等效電阻,阻值總和為幾百歐;R10、R11為按下觸摸屏時的接觸電阻,阻值動態變化;K1、K2表示按下觸摸屏的位置。
R15為限流電阻,因為觸摸屏的電阻通常為幾百歐,普通IO驅動能力可能不夠,所以用R15對IO輸出進行限流,R15對應圖(一)中(d)部分R1和R2。
假定IO1輸出高電平,IO2輸出低電平,V1~V4為4路ADC口測量到的電壓。
觸摸屏沒有按下時,測量ADC1和ADC2得到V1_0和V2_0;觸摸屏按下一點時,假設此時按下位置為K1,4路ADC測量的電壓為Vn_1;觸摸屏按下兩點時,4路ADC測量的電壓為Vn_2。忽略ADC口輸入電阻的影響,這些電壓會滿足下面的關系。
V1_0=V1_1,V2_0=V2_1
V3_1=V4_1=(V1_1-V2_1)*(R8+R9)/(R7+R8+R9)
(V1_1-V2_1)≥(V1_2-V2_2)
后一種關系式因為兩點按下后會讓與R1、R2、R15串聯的觸摸屏等效電阻變小,從而使得分在觸摸屏兩端的電壓也變小。現在引入三個新參數L7、L8、L9,分別表示同標號電阻等效的觸摸屏寬度,三者的總和等于觸摸屏寬。另外還根據實際引入一個限制條件,當有兩點被按下時,只要程序檢測速度夠快,對于程序來說就不會有同時按下的情況,始終都是依次按下或松開,這一點非常重要。
對于單點位置的檢測不存在任何問題,現在我們來處理兩點的情況,結合前面引入的限制條件,程序可以檢測到中間有一小段時間是單點按下,也就是程序先檢測到K1按下,經過一小段時間才檢測到K2按下。這個中間過程可以準確得到K1位置,如果我們利用前后變化的比例關系,就可以計算出后面K2按下的位置。
K1單獨按下:
L7=(L7+L8+L9)*(V1_1-V3_1) /(V1_1-V2_1)
K1和K2同時按下(忽略R10和R11的影響):
(V1_2-V3_2)/L7=(V4_2-V2_2)/L9
因為L7+L8+L9為已知條件觸摸屏的寬度L,所以有:
L7=L*(V1_1-V3_1)/(V1_1-V2_1)
L9=(V4_2-V2_2)*L7/(V1_2-V3_2)
L9=L*(V4_2-V2_2)*(V1_1-V3_1)/((V1_1-V2_1)*(V1_2-V3_2))
到這里我們已經得到所按兩點的具體位置,只要我們依照此方法對觸摸屏的X和Y軸分別處理,就可以在普通電阻屏上實現兩點觸摸位置的檢測。
方案的其它說明
前面的公式推導過程忽略了接觸電阻R10和R11的影響,這兩個電阻的大小并不固定,主要由使用者按下的力度決定,按的力越大,其阻值越小。當只按下一個點時,所按力度的大小對K1位置的計算影響可以不用考慮,但對于兩點的計算則要考慮其影響,按的力度越小,計算出來的K2位置誤差就越大。這樣在按下的過程中,會存在一個誤差從大變小的過程,不過只要用力足夠,最后還是保證誤差在允許范圍內。另外觸摸屏并不是完全線性,這里是簡化為線性關系。
該方案在兩點按下時最好保持先按下的點位置不變動,這樣可以保證計算結果更為精準。如果兩點按下后需要移動,雖然通過比例關系也可以計算出運動軌跡,但誤差會隨之加大,這里也不做過多分析。松開的過程與按下相反,由兩點按下變為一點按下,最后全松開。如果在精度上適度降低要求,在此方案的基礎還可以利用三角形重心的原理進行第三點的判斷,筆者進行的驗證實驗發現難點是需要考慮的組合情況偏多,從而導致判斷程序復雜。
實際應用中還需要進行觸摸屏是否按下的檢測,這里不詳述具體的檢測方法,只是要留意為了防止觸摸屏懸空狀態的影響,可以在兩端接一個比較大的電阻到地,建議用470k或510k的阻值。
使用該方案除了具備普通電阻屏的基本功能,還可以實現對屏幕的拖動,用手指合分動作實現圖像的縮放,對兩個游戲功能鍵的同時控制。從成本上看除了需要另外增加4條IO口外并無其它硬件開銷,主要是通過軟件計算來實現多點檢測。該方案雖然性能上相較電容屏存在明顯差距,但成本上占有絕對優勢,對于一些對精度要求不高的應用還是具有一定的實用價值。
-
電阻
+關注
關注
86文章
5561瀏覽量
172732 -
觸摸屏
+關注
關注
42文章
2316瀏覽量
116768
發布評論請先 登錄
相關推薦
4線電阻式觸摸屏是如何工作的
![4線<b class='flag-5'>電阻</b>式<b class='flag-5'>觸摸屏</b>是如何工作的](https://file1.elecfans.com/web3/M00/06/63/wKgZPGeKH-WAGZ0fAABxQlsgfwI188.png)
觸摸屏與傳統顯示器比較
多點觸控是觸摸屏嗎_多點觸控功能
電數碼通訊行業:觸摸屏氣密性檢測儀行業解決方案-岳信儀器
![電數碼通訊行業:<b class='flag-5'>觸摸屏</b>氣密性檢測儀行業<b class='flag-5'>解決方案</b>-岳信儀器](https://file1.elecfans.com/web2/M00/09/22/wKgaomb2KcyAMR8SAABcblHQqPw209.png)
LCD屏和觸摸屏的PCB設計
![LCD<b class='flag-5'>屏</b>和<b class='flag-5'>觸摸屏</b>的PCB設計](https://file1.elecfans.com/web2/M00/FD/27/wKgZomaYiZqAKyOxAAAqbWHuO2Q072.png)
啟明智顯Model3A芯片方案7寸高清觸摸屏:開箱、設置與實操全攻略指南
![啟明智顯Model3A芯片<b class='flag-5'>方案</b>7寸高清<b class='flag-5'>觸摸屏</b>:開箱、設置與實操全攻略指南](https://file1.elecfans.com/web2/M00/ED/50/wKgZomZqrPSAd5Q7AACyF0Hpd_g474.png)
觸摸屏和plc的程序怎么編寫
人機界面觸摸屏如何觸摸校正屏幕
人機界面觸摸屏點不動怎么回事
觸摸屏與plc通訊不上的原因
如何快速實施可靠的觸摸屏
![如何快速實施可靠的<b class='flag-5'>觸摸屏</b>](https://file1.elecfans.com/web2/M00/BE/A0/wKgZomWz0eyAY33gAABILyr456w126.jpg)
如何快速實施可靠的觸摸屏
![如何快速實施可靠的<b class='flag-5'>觸摸屏</b>](https://file1.elecfans.com/web2/M00/BE/A0/wKgZomWz0eyAY33gAABILyr456w126.jpg)
評論