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

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 簡(jiǎn)述8位MCU的觸摸按鍵設(shè)計(jì)方案

          簡(jiǎn)述8位MCU的觸摸按鍵設(shè)計(jì)方案

          作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò) 收藏

          0 前言

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

          (Micro Controller Unit)中文名稱為多點(diǎn)控制單元,又稱單片微型計(jì)算機(jī)(Single Chip Microcomputer),是指隨著大規(guī)模集成電路的出現(xiàn)及其發(fā)展,將計(jì)算機(jī)的CPU、RAM、ROM、定時(shí)數(shù)器和多種I/O接口集成在一片芯片上,形成芯片級(jí)的計(jì)算機(jī),為不同的應(yīng)用場(chǎng)合做不同組合控制。

          在需要用戶界面的應(yīng)用方案中,傳統(tǒng)的機(jī)電開關(guān)正在被電容式觸摸感應(yīng)控制所替代。通過(guò)對(duì)由一個(gè)電阻和觸摸電極電容組成的RC充放電時(shí)間的控制,該觸摸感應(yīng)軟件可以檢測(cè)到人手的觸摸。由于電極電容的改變,導(dǎo)致的RC充放電時(shí)間的改變,能夠被檢測(cè)出來(lái),然后經(jīng)過(guò)濾波等,最終通過(guò)專用的I/O端口,或者I2C/SPI接口發(fā)送給主機(jī)系統(tǒng)。該軟件庫(kù)所需的元器件BOM表,成本低廉,因?yàn)槊總€(gè)通道只需要兩個(gè)電阻就可以實(shí)現(xiàn)觸摸檢測(cè)功能。

          1 RC感應(yīng)原理

          RC采樣原理就是通過(guò)測(cè)量觸摸電極電容的微小變化,來(lái)感知人體對(duì)電容式觸摸感應(yīng)器(按鍵、滾輪或者滑條)的觸摸。

          電極電容(C)通過(guò)一個(gè)固定的電阻(R)周期性地充放電。 電容值取決于以下幾個(gè)參數(shù):電極面積(A),絕緣體相對(duì)介電常數(shù)( ),空氣相對(duì)濕度( ),以及兩個(gè)電極之間的距離(d)。電容值可由下列公式得出:

          圖1 RC電壓檢測(cè)

          固定電壓施加在 , 的電壓隨著電容值的變化而相應(yīng)增加或者降低, 如圖2所示。

          圖2 測(cè)量充電時(shí)間

          通過(guò)計(jì)算 的電壓達(dá)到閥值 所需要的充電時(shí)間( ),來(lái)得到電容值(C)。 在觸摸感應(yīng)應(yīng)用中,電容值(C)由兩部分組成:固定電容(電極電容, )和當(dāng)人手接觸或者靠近電極時(shí),由人手帶來(lái)的電容(感應(yīng)電容, )。 利用該原理,就可以檢測(cè)到手指是否觸摸了電極。

          圖3 觸摸感應(yīng)

          這就是用于檢測(cè)人手觸摸的觸摸感應(yīng)軟件中感應(yīng)層所采用的基本原理。

          2 硬件實(shí)現(xiàn)

          圖4顯示了一個(gè)實(shí)現(xiàn)的實(shí)例。由R1,R2以及電容電極( )和手指電容( )并聯(lián)的電容(大約5pF) 形成一個(gè)RC網(wǎng)絡(luò),通過(guò)對(duì)該RC網(wǎng)絡(luò)充放電時(shí)間的測(cè)量,可以檢測(cè)到人手的觸摸。 所有電極共享一個(gè)“負(fù)載I/O”引腳。電容R2(10K?)是可選的,用于減少對(duì)噪聲影響。

          圖4 電容觸摸感應(yīng)實(shí)現(xiàn)實(shí)例

          3 軟件實(shí)現(xiàn)

          本章描述了觸摸感應(yīng)RC原理的實(shí)現(xiàn)。

          3.1 充電時(shí)間測(cè)量原理

          為了保證健壯的電容觸摸感應(yīng)的應(yīng)用,充電時(shí)間的測(cè)量需要足夠的精確。

          采用一個(gè)簡(jiǎn)單的定時(shí)器(無(wú)需IC功能)和一系列簡(jiǎn)單的軟件操作,即定時(shí)地檢查感應(yīng)I/O端口上的電壓是否達(dá)到閥值。

          3.2 基本測(cè)量

          使用普通定時(shí)器進(jìn)行充電時(shí)間的測(cè)量。對(duì)電容充電開始之前,定時(shí)器的計(jì)數(shù)器數(shù)值被記錄下來(lái)。當(dāng)采樣I/O端口上的電壓達(dá)到某個(gè)閥值( )時(shí),再次記錄定時(shí)器計(jì)數(shù)器的值。二者之差就是 充電或者放電的時(shí)間。

          圖5 定時(shí)器計(jì)數(shù)器值

          3.3 過(guò)采樣

          過(guò)采樣的目的是以CPU時(shí)鐘的精度,對(duì)輸入電壓達(dá)到高電平和低電平( 和 )的時(shí)間測(cè)量。 為了跨越所有的取值范圍,每次測(cè)量都比上一次測(cè)量延遲一個(gè)CPU時(shí)鐘周期的時(shí)間。

          圖6 輸入電壓測(cè)量

          3.4 輸入電壓測(cè)量的原理

          為了提高在電壓和溫度變動(dòng)情況下的穩(wěn)定性,對(duì)電極會(huì)進(jìn)行連續(xù)兩次的測(cè)量:第一次測(cè)量對(duì)電容的充電時(shí)間,直到輸入電壓升至 。第二次測(cè)量電容的放電時(shí)間,直到輸入電壓降至 。下圖以及以下的表格詳細(xì)說(shuō)明了對(duì)感應(yīng)電極(感應(yīng)I/O)和負(fù)載I/O引腳上的操作流程。

          表2 電容充放電測(cè)量步驟

          3.5 觸摸的效果

          電極的電容值( )取決于以下幾個(gè)主要因素:電極的形狀、大小,觸摸感應(yīng)控制器到電極之間的 布線(尤其是地耦合),以及介電面板的材料和厚度。圖8說(shuō)明了這種“觸摸的效果”。 時(shí)間(即達(dá)到了 電平的時(shí)刻)比長(zhǎng);同樣對(duì)于降至 電平的時(shí)間也比長(zhǎng)。

          圖8 觸摸效果實(shí)例

          3.6 多次測(cè)量以及高頻噪聲的去除

          為了提高測(cè)量的精確度,并去除高頻噪聲,有必要對(duì) 和 進(jìn)行多次的測(cè)量,然后再?zèng)Q定是否有按鍵被有效“觸摸”。

          圖9 測(cè)量的種類

          注意:下圖說(shuō)明了去除噪聲的實(shí)例。如果測(cè)量次數(shù)(N)設(shè)置為4,那么對(duì)一個(gè)電極的完整測(cè)量將包括4次正確的“連續(xù)組測(cè)量”(BGs)。

          圖10 顯示了沒(méi)有噪聲的影響,所有測(cè)量都有效的情況。 這個(gè)例子中,每個(gè)連續(xù)組測(cè)量中的測(cè)量都有效,使得一個(gè)完整的測(cè)量很快就可以完成。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(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); })();