電容觸摸傳感的理論框架
對于測量充電至固定電壓需要的時間變化量這種方法,手指產生的附加電容會增加充電時間(C上升),所以時間讀數會相應地上升。對于測量固定充電時間內的電平變化量這種方法,附加電容會降低相同時間量內所能達到的電壓,所以電壓讀數會下降。最后,對于測量固定時間周期中的頻率這種方法,頻率會隨振蕩器RC常數的上升而下降。因此,頻率讀數會下降。
本文引用地址:http://www.ex-cimer.com/article/96399.htm本文以頻率測量方案為例進行說明;但每個系統都會應用后處理方案。使用一種方案時,電容讀數可能會上升,而使用另一種方案時,電容讀數可能會下降,但這可以在軟件中調整。選擇了硬件方案之后,讀數將根據請求輸入單片機,或按照軟件配置指定的其他時間間隔輸入單片機。對于本文中的示例,傳感器讀數下降代表按鍵按下。
單片機軟件與后處理
單片機中的軟件負責處理電容觸摸傳感應用中的許多工作,前提是硬件和傳感器均正常工作。傳感器和整個系統的質量越好,軟件的實現就越簡單。開發(fā)軟件之前,需要記住每個傳感器都具有一定的固有寄生電容:Cp(或公式3中的C1)。因此,每個傳感器都可以檢測到某個標稱值。通過觀察傳感器的輸出,可以直觀方便地確定它。但必須先在軟件中設定該標稱值,然后才能以此為基準計算相對于它的偏差。實現它的最好方式是創(chuàng)建一個滑動平均值——即,16點平均值。通過存儲先前16個值來計算平均值的效率很低,所以改為使用一種看起來較復雜,但計算較簡單、可節(jié)省存儲空間的求均值方法。以下代碼執(zhí)行求均值過程。。是傳感器讀數值,作為16位無符號值或變量。
reading = ; // 傳感器
bigval = reading << 4; // 乘以16
smallavg = average >> 4; // 除以16
average += reading – smallavg; // 求均值
與具有極強計算能力的較大的計算機處理器相比,較小的單片機通常在這方面受到限制。與實際執(zhí)行除法相比,使用移位、加法和減法可以降低性能損失。此外,這個求均值程序并不僅限用于電容觸摸傳感——它對于8位單片機的很多應用都非常有用。
在本文提供的大多數示例和算法中,每次將僅討論一個傳感器。只需在軟件中使用值的數組,通過添加數組中的元素來增加傳感器數量,即可使之與硬件匹配(即,average[0]..average[N])。
現在,已經確定了平均值,接下來必須構造傳感器掃描循環(huán),目的是監(jiān)視相對于平均值的偏差。從一個簡單循環(huán)開始,如圖1中的流程圖所示。掃描循環(huán)使用中斷來驅動,并使用兩個定時器和頻率偏移檢測方法。Timer0決定固定的時間周期T,在該時間周期內,將測量進入Timer1捕捉模塊的正邊沿數量,然后它產生一個頻率測量值。正邊沿數量越多,說明頻率越高。準備好獲取測量值時,Timer0發(fā)生溢出以觸發(fā)中斷,而Timer1會測量正邊沿數量。流程圖的“捕捉讀數”框顯示了何時獲取讀數。
評論