<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          電容觸摸傳感的理論框架

          作者:Thomas Perme 微芯科技公司 應(yīng)用工程師 時間:2009-07-20 來源:電子產(chǎn)品世界 收藏

            對于測量充電至固定電壓需要的時間變化量這種方法,手指產(chǎn)生的附加電容會增加充電時間(C上升),所以時間讀數(shù)會相應(yīng)地上升。對于測量固定充電時間內(nèi)的電平變化量這種方法,附加電容會降低相同時間量內(nèi)所能達到的電壓,所以電壓讀數(shù)會下降。最后,對于測量固定時間周期中的頻率這種方法,頻率會隨振蕩器RC常數(shù)的上升而下降。因此,頻率讀數(shù)會下降。

          本文引用地址:http://www.ex-cimer.com/article/96399.htm

            本文以頻率測量方案為例進行說明;但每個系統(tǒng)都會應(yīng)用后處理方案。使用一種方案時,電容讀數(shù)可能會上升,而使用另一種方案時,電容讀數(shù)可能會下降,但這可以在軟件中調(diào)整。選擇了硬件方案之后,讀數(shù)將根據(jù)請求輸入單片機,或按照軟件配置指定的其他時間間隔輸入單片機。對于本文中的示例,讀數(shù)下降代表按鍵按下。

            單片機軟件與后處理

            單片機中的軟件負責(zé)處理應(yīng)用中的許多工作,前提是硬件和均正常工作。和整個系統(tǒng)的質(zhì)量越好,軟件的實現(xiàn)就越簡單。開發(fā)軟件之前,需要記住每個傳感器都具有一定的固有:Cp(或公式3中的C1)。因此,每個傳感器都可以檢測到某個標(biāo)稱值。通過觀察傳感器的輸出,可以直觀方便地確定它。但必須先在軟件中設(shè)定該標(biāo)稱值,然后才能以此為基準(zhǔn)計算相對于它的偏差。實現(xiàn)它的最好方式是創(chuàng)建一個滑動平均值——即,16點平均值。通過存儲先前16個值來計算平均值的效率很低,所以改為使用一種看起來較復(fù)雜,但計算較簡單、可節(jié)省存儲空間的求均值方法。以下代碼執(zhí)行求均值過程。。是傳感器讀數(shù)值,作為16位無符號值或變量。

          reading  = ; // 傳感器

          bigval   = reading << 4; // 乘以16

          smallavg = average >> 4; // 除以16

          average += reading – smallavg; // 求均值

           

            與具有極強計算能力的較大的計算機處理器相比,較小的單片機通常在這方面受到限制。與實際執(zhí)行除法相比,使用移位、加法和減法可以降低性能損失。此外,這個求均值程序并不僅限用于——它對于8位單片機的很多應(yīng)用都非常有用。

            在本文提供的大多數(shù)示例和算法中,每次將僅討論一個傳感器。只需在軟件中使用值的數(shù)組,通過添加數(shù)組中的元素來增加傳感器數(shù)量,即可使之與硬件匹配(即,average[0]..average[N])。

            現(xiàn)在,已經(jīng)確定了平均值,接下來必須構(gòu)造傳感器掃描循環(huán),目的是監(jiān)視相對于平均值的偏差。從一個簡單循環(huán)開始,如圖1中的流程圖所示。掃描循環(huán)使用中斷來驅(qū)動,并使用兩個定時器和檢測方法。Timer0決定固定的時間周期T,在該時間周期內(nèi),將測量進入Timer1捕捉模塊的正邊沿數(shù)量,然后它產(chǎn)生一個頻率測量值。正邊沿數(shù)量越多,說明頻率越高。準(zhǔn)備好獲取測量值時,Timer0發(fā)生溢出以觸發(fā)中斷,而Timer1會測量正邊沿數(shù)量。流程圖的“捕捉讀數(shù)”框顯示了何時獲取讀數(shù)。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();