<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 電容式觸摸感應的技巧

電容式觸摸感應的技巧

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




PSoC 采用固件來(lái)配置,以采用一個(gè)5V 工作電源和一個(gè)內部生成的24MHz 系統時(shí)鐘。對該24MHz 時(shí)鐘進(jìn)行1:26 分頻,以提供一個(gè)用于115,200 波特TX8 模塊的時(shí)鐘。CapSense 用戶(hù)模塊選擇以“周期法”(Period Method)來(lái)運行,在該工作模式中,計數在固定數量的弛張振蕩器周期中累加。換言之,16 位計數器值代表了一個(gè)與傳感器電容成正比的周期。

清單1 羅列了系統固件。與設立電容式觸摸感應系統相關(guān)的大部分工作都已被編碼為一組由C 程序來(lái)調用的標準CSR例行程序。例如:CSR_1_Start()負責配置PSoC 的內部布線(xiàn),以使電流源DAC與模擬多路復用器相連,而比較器與經(jīng)過(guò)正確初始化的PWM和16 位計數器相連。
清單1:用于電容式觸摸感應系統的固件
//-----------------------------start of listing--------------------------------------------------------
//----------------------------------------------------------------------------
// main.c, a CapSense program in C
// A demonstration of Capacitive Sensing with PSoC
// with a 10mm glass overlay
//----------------------------------------------------------------------------
#include// part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
void main()
{
//a flag that is set when a finger is on any buttons
int bBaselineButtonFlag;
CSR_1_Start(); //initialize CapSense user module
TX8_1_Start(TX8_1_PARITY_NONE); //initialize TX8 module
M8C_EnableGInt; //enable global interrupts
CSR_1_SetDacCurrent(200,0); //set current source to 200 out of 255
//use low range of current source
CSR_1_SetScanSpeed(255); //set number of osc cycles to 255-2=253
while(1)
{
CSR_1_StartScan(1,1,0); //scan one button only, button 1 on P2[3]
//wait for scanning of button to complete
while (!(CSR_1_GetScanStatus() & CSR_1_SCAN_SET_COMPLETE));
//update baseline if required, set flag if any button pressed
bBaselineButtonFlag = CSR_1_bUpdateBaseline(0);
//data log the raw counts on button 1
TX8_1_PutSHexInt(CSR_1_iaSwResult[1]);
TX8_1_PutChar(,);
//data log switch mask... which switch is on?
TX8_1_PutSHexInt(CSR_1_baSwOnMask[0]);
TX8_1_CPutString(",");
//data log switch difference = raw counts - baseline
TX8_1_PutSHexInt(CSR_1_iaSwDiff[1]);
TX8_1_PutChar(,);
//data log update timer as a teaching aid
TX8_1_PutSHexInt(CSR_1_bBaselineUpdateTimer);
TX8_1_PutChar(,);
//data log the baseline counts for button 1
TX8_1_PutSHexInt(CSR_1_iaSwBaseline[1]/4);
TX8_1_PutCRLF();
}
}
//-------------------------------end of listing--------------------------------------------------------

調整傳感器

每次在上列程序中調用函數CSR_1_StartScan( )時(shí),均對Button1 的電容進(jìn)行測量。原始計數值被存儲于CSR_1_iaSwResult[]陣列中。用戶(hù)模塊還跟蹤一個(gè)用于原始計數的基線(xiàn)。每個(gè)按鈕的基線(xiàn)值均為一個(gè)由IIR濾波器采用軟件進(jìn)行周期性計算的平均原始計數值。IIR 濾波器的更新速率是可編程的?;€(xiàn)使得系統能夠適應由于溫度和其他環(huán)境影響而在系統中引起的漂移。開(kāi)關(guān)差分陣列CSR_1_iaSwDiff[]包含消除了基線(xiàn)偏移的原始計數值。按鈕目前的ON/OFF 狀態(tài)采用開(kāi)關(guān)差值來(lái)決定。這可使系統的性能保持恒定,即便在基線(xiàn)有可能隨著(zhù)時(shí)間的推移而發(fā)生漂移的情況下也是如此。
圖6 示出了采用固件來(lái)實(shí)現的差分計數與按鈕狀態(tài)之間的轉移函數。該轉移函數中的遲滯提供了ON 和OFF 狀態(tài)之間的干凈轉換,即使計數是有噪的也不例外。這提供了一種針對按鈕的除跳功能。較低的閾值被稱(chēng)為“噪聲閾值”,而較高的閾值則被稱(chēng)為“手指閾值”。閾值水平的設定決定了系統的性能。在覆蓋物非常厚的場(chǎng)合,信噪比很低。在此類(lèi)系統中設定閾值水平是一項具有挑戰性的工作,而這恰好是電容式觸摸感應技巧的一
部分。



圖7 示出了一個(gè)持續時(shí)間為3 秒的按鈕觸壓操作的理想化原始計數波形。針對本項目的閾值水平示于此圖。噪聲閾值被設定為10 個(gè)計數,而手指閾值被設定為60 個(gè)計數。為了清晰地顯示閾值水平,圖8 并未示出始終存在于實(shí)際計數數據之中的噪聲分量。


評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>