使用普通I/O口實現電容觸摸感應的解決方案
技術背景
本文引用地址:http://www.104case.com/article/173670.htm現在電子產品中,觸摸感應技術日益受到更多關注和應用,不僅美觀耐用,而且較傳統機械按鍵具有更大的靈敏度、穩定性、可靠性,同時可以大幅提高產品的品質。觸摸感應解決方案受到越來越多的IC設計廠家的關注,不斷有新的技術和IC面世,國內的公司也紛紛上馬類似方案。Cpress公司的CapSense技術可以說是感應技術的先驅,走在了這一領域的前列,在高端產品中有廣泛應用,MCP推出了mTouch,AT也推出了QTouch技術,FSL推出的電場感應技術與MCP的電感觸摸也別具特色,甚至ST也有QST產品。
但是目前所有的觸摸解決方案都使用專用IC,因而開發成本高,難度大,而本文介紹的基于RC充電檢測(RC Acquisition)的方案可以在任何MCU上實現,是觸摸感應技術領域革命性的突破。首先介紹了RC充電基礎原理,以及充電時間的測試及改進方法,然后詳細討論了基于STM8S單片機實現的硬件、軟件設計步驟,注意要點等。
一、RC充電檢測基本原理
RC充電檢測基本原理是對使用如PCB的電極式電容的充電放電時間進行測量,通過比較在人體接觸時產生的微小變化來檢測是否有‘按下’動作產生,可選用于任何單獨或多按鍵、滾輪、滑條。
如圖1(a)所示,在RC網絡施加周期性充電電壓Vin,測量Vout會得到如(b)的時序,通過檢測充電開始到Vout到達某一門限值的時間tc的變化,就可以判斷出是否有人體接觸。圖2顯示出有人體接觸時充電時間會變長。
實現電路如圖3,使用一個I/O口對PCB構成的電容充電,另一個I/O口測量電壓,對于多個按鍵時使用同一個I/O口充電。R1通常為幾百K到幾M,人體與PCB構成的電極電容一般只有幾個pF,R2用于降低噪聲干擾,通常為10K。
二、充電時間測量方法
對充電時間的測量可以使用MCU中定時器的捕捉功能,對于多個按鍵一般MCU沒有足夠的定時器為每個按鍵分配一個,也可以使用軟件計時的方法,這要求能對MCU的時鐘精確計數,并且保證每個周期的時鐘個數保持一定。這種情況通常要求對按鍵使用一個獨立的MCU,以保證不被其他任務中斷。
為了提高系統的可靠性和穩定性,改進的測量方法是對Vout進行高和低兩個門限進行測量。如圖4所示,通過對t1和t2的測量,從而達到更可靠的效果。另外,多次測量也是有效的降低高頻干擾的有效方法。
實際應用中可以使用數字信號的方式直接測量t1和t2,因為數字信號的‘1’和‘0’也都有最高與最低輸入門限。使用軟件查詢方式測量,通過固定頻率檢測輸入腳,其中‘0’的個數就是t1,‘1’的個數就是t2,實際上就是輸入信號上升到VIHmin和下降到VILmax的時間。
評論