電容觸摸簡介
8.1.1 電容觸摸概述
隨著科技的發(fā)展,傳統(tǒng)的機械按鍵正在逐步從設(shè)備上面消失,這個原因主要有機械按鍵由于是采用機械接觸的方式,壽命比較短,從用戶體驗上看,機械按鍵也顯得操作復(fù)雜,對比現(xiàn)在的電容按鍵,電容按鍵具有壽命長,因為不存在機械接觸,占用空間少,以前的機械按鍵在設(shè)計外殼的時候需要考慮尺寸,現(xiàn)在換成電容按鍵后這個問題不再需要考慮。
8.1.2 檢測原理
常規(guī)的檢測方式一般是通過計算電容放電時間來判斷是否有手指按下,這是因為手指會與線路板的銅箔接觸面上產(chǎn)生電容效應(yīng),當(dāng)手指沒有放在銅箔上的時候,銅箔與PCB之間存在雜散電容,這兩個狀態(tài)的電容值差別很大,檢測原理如下圖所示。
在檢測之前首先用開關(guān)將電容Cs里面的電荷放盡,然后此時CPU開始計算Cs的充電時間,這一部分是采用捕捉信號來測量,盡管單片機屬于數(shù)字電路,但是數(shù)字電路的邏輯電平也是有電壓限制的,比如在3.3V供電環(huán)境下,當(dāng)電壓大于2.4V則被認為是邏輯電平1,當(dāng)電壓小于0.4V則被認為是邏輯電平0,單片機的輸入捕獲功能來判斷輸入信號的電平是否為邏輯電平1,如果檢測到邏輯電平1,則認為電容此時充電達到了2.4V以上,將這個時間記錄下來,當(dāng)手指放在銅箔上的時候,相當(dāng)于增加了Cs的容值,此時我們繼續(xù)進行輸入捕獲采樣,將這個捕獲的時間記錄下來,兩個時間求差值,這個差值高于某個閾值的時候就可以認為此時手指按下了電容按鍵,用這種方式就可以實現(xiàn)虛擬按鍵的使用了。這種檢測原理實際是采用了在電路分析中學(xué)習(xí)到的RC電路的零狀態(tài)響應(yīng)來實現(xiàn)的。根據(jù)RC電路的零狀態(tài)響應(yīng)可以得出電容的充電公式為
其中Vc表示電容的充電電壓,VDD為RC電路的輸入電壓,R為電阻的阻值,C為充電電容的容值,通過這個公式我們可以反推得到充點電容的容值。也就是說我們可以利用這個公式實現(xiàn)電容的測量。
8.1.3 預(yù)備知識
首先我們在進行電容觸摸檢測的時候需要用到STM32的輸入捕獲功能,從這一章開始,關(guān)于寄存器文件的添加,驅(qū)動文件的添加不再作為重點,重點開始轉(zhuǎn)為程序的編寫及小算法的編寫。
輸入捕獲的工作原理如下圖所示。
首先設(shè)置定時器的輸入通道為上升沿捕獲,檢測到上升沿之后,將計數(shù)寄存器CNT中的數(shù)據(jù)存儲在CCRx1中并清空CNT的數(shù)據(jù),然后設(shè)置定時器的輸入通道為下降沿捕獲,檢測到下降沿后將計數(shù)寄存器CNT中的數(shù)據(jù)存儲在CCRx2中并清空CNT的數(shù)據(jù),此時將CCRx2的值與CCRx1的值做差值就可以得到1個波形中高電平的時間,由于這兩個數(shù)值獲取的過程中,會由于高電平時間過長導(dǎo)致定時器產(chǎn)生多次中斷,這個多次中斷的值記為N,此時高電平的時間計算公式如下所示:
其中M為定時器的計數(shù)周期,N為定時器的溢出次數(shù),ARR為自動重裝載計數(shù)器的值,CCRx2為捕獲到的數(shù)據(jù)。
8.2 常用寄存器
8.2.1 捕獲/比較寄存器1:TIMx_CCMR1
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IC2F[3:0] | IC2PSC[1:0] | CC2S[1:0] | IC1F[3:0] | IC1PSC[1:0] | CC1S[1:0] |
ICxF[3:0]:輸入捕獲x濾波器(定義輸入采樣頻率及數(shù)字濾波器長度)
ICxPSC[1:0]:輸入/捕獲x預(yù)分頻器(一旦CCxE=0,則預(yù)分頻器復(fù)位)
00:每1個事件觸發(fā)一次捕獲
01:每2個事件觸發(fā)一次捕獲
10:每4個事件觸發(fā)一次捕獲
11:每8個事件觸發(fā)一次捕獲
CCxS[1:0]:捕獲/比較x選擇(用于定義通道x輸入還是輸出)
00:輸出模式
01:輸入模式,映射在TI1上
10:輸入模式,映射在TI2上
11:輸入模式,映射在TRC上,此模式引用于內(nèi)部觸發(fā)器輸入被選中時
8.2.2 捕獲/比較使能寄存器:TIMx_CCER
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | CC4P | CC4E | - | CC3P | CC3E | - | CC2P | CC2E | - | CC1P | CC1E |
CCxP:輸入/捕獲x輸入/輸出極性
通道在輸出模式下
0:高電平有效
1:低電平有效
通道在輸入模式下
0:不反相,上升沿觸發(fā)
1:反相,下降沿觸發(fā)
CCxE:輸入/捕獲x輸入/輸出使能
通道在輸出模式下
0:關(guān)閉輸出
1:開啟輸出
通道在輸入模式下
0:禁止捕獲
1:使能捕獲
8.3 電容觸摸例程
現(xiàn)在PA1端口接一個觸摸按鍵(一塊銅箔),利用PA1的觸摸按鍵控制PA0端口的LED狀態(tài),按下時LED點亮,抬起時LED熄滅。
(1)新建基礎(chǔ)工程,并創(chuàng)建tpad.c,tpad.h,led.c和led.h文件,并導(dǎo)入工程,如下圖所示。
(2)在tpad.h文件內(nèi)添加以下代碼。
(3)在led.h文件內(nèi)添加以下代碼
-
電阻
+關(guān)注
關(guān)注
86文章
5453瀏覽量
171505 -
機械
+關(guān)注
關(guān)注
8文章
1507瀏覽量
40432 -
電容按鍵
+關(guān)注
關(guān)注
0文章
5瀏覽量
1406
發(fā)布評論請先 登錄
相關(guān)推薦
評論