對于從電器到可穿戴式設備的眾多消費類產品,觸摸控制是基本要求。鑒于觸摸傳感器的功能性設計和物理布局之間存在關聯,對于開發人員而言,觸摸傳感器設計既是一項工程,更是一門藝術。因此,在通過多個設計交互來實現按鈕、滑塊和其他控件的最佳性能時,開發團隊的開發速度會受到延緩。
為了支持項目開發,Cypress Semiconductor PSoC 4000S CapSense 原型開發套件提供一整套硬件和軟件,可用于評估電容觸摸感應以及加速其在各種產品中的應用。
本文將描述各種電容觸摸感應方法的工作機制,以及使用這些方法進行設計時設計人員需要了解的一些注意事項。然后將介紹 PSoC CapSense 套件及其工作機制,以及使用該套件進行設計的方法。此外,還提供了代碼示例。
為何選擇電容觸摸?
電容觸摸傳感器的性質使其適用于各類應用。由于不再需要傳統機械按鈕和開關中的活動零件,觸摸傳感器系統實現了高度可靠性,不太可能因磨損而發生故障。而且,觸摸傳感器系統可完全封裝在保護材料中,因此能夠在嚴苛環境中工作。除了可靠性之外,觸摸傳感器可輕松滿足不同的形狀要求,幫助工程師滿足客戶對家用電器、汽車以及其他主流產品的美觀精巧設計需求。
手指或手接近專門構建的觸摸表面時電容將發生變化,而電容觸摸傳感器充分利用了這一特征。觸摸傳感器使用自電容和互電容兩種不同的方法來檢測此類變化。
在自電容式觸摸傳感器中,當手指放在傳感器板上時,會形成一個接地的導電通路,從而導致電容突然增大,明顯大于傳感器板和接地平面之間各種寄生電容源(圖 1)。通常情況下,自電容是按鈕或滑塊等單點觸摸應用的首要選擇。
圖 1: 自電容檢測 I/O 引腳和接地之間的電容變化。使用接地網狀填充層環繞傳感器,可提高傳感器的抗噪能力。(來源: Cypress Semiconductor)
相比之下,互電容感應測量發射和接收電極之間的電容(圖 2)。在該圖中,當控制器向發射引腳施加電壓時,在接收引腳上測量的電荷量與兩個電極之間的互電容成正比。相較于自電容,這項技術可提供更高的信噪比 (SNR),從而實現了更強的抗噪能力。較高的 SNR 還能夠實現通過更厚的覆蓋層進行工作的功能,例如工業應用所需的保護屏和顯示屏。
此外,按照陣列形式排列的傳感器可讓開發人員同時跟蹤不同點的互電容變化。因此,這種方法成為了多點觸摸應用的絕佳選擇,此類應用采用通常應用于較小型消費類產品的觸摸板,或者運用于電器和汽車中作顯示用途的觸摸屏。
圖 2: 在互電容感應系統中,控制器將電壓切換到發射 (TX) 電極。在接收 (RX) 電極上測量的電荷量與兩個電極之間的互電容成正比。手指等導電物體的觸摸將導致所測量的互電容發生變化。(來源: Cypress Semiconductor)
傳感器設計
如圖 1 和圖 2 所示,電容式傳感器板由多層板上的印制線構建而成。對于基本的自電容按鈕,最簡單的設計是將傳感器板印制線放在板子上方,印制線四周環繞著網狀接地平面。傳感器板連接到控制器(通常連接在板子下方)的輸入引腳,還可提供接地平面。最后,頂層覆蓋著不導電保護性化合物,形成了傳感器覆面。對于小鍵盤,工程師通過將各個傳感器板加入可尋址按鈕陣列來擴展此項基本設計。
設計人員可以通過多個傳感器板(一般以鋸齒狀排列)構建線性滑塊。如下所述,相關觸摸傳感器軟件可使用此排列所提供的信息,來更準確地計算手指位置。觸摸板和觸摸屏通過使用兩個線性滑塊來確定手指在板或屏幕表面的 X-Y 軸位置,進一步擴展了這種方法。
在實踐中,工程師致力于降低寄生電容,但這會降低傳感器的靈敏度,因而觸摸電容傳感器的物理設計會非常復雜。除了需要精心設計接地平面,網狀接地平面還要求嚴格遵守特定的物理設計規則。此外,在液體可能導致傳感器讀數失真的家用電器和其他產品中,工程師構建了更為復雜的結構,從而幫助避免感應表面的液體導致讀數錯誤的情況?;ル娙輦鞲衅麝嚵邪啥鄠€ PC 板層上的發射和接收印制線構建而成的傳感器陣列,進一步提高了設計的復雜性。
雖然設計人員在創建這些傳感器時應保持謹慎,但電容觸摸傳感器的開發大部分都遵從典型設計流程。 然而,在傳感器板全面投產之前,工程師通常需要調整硬件參數和軟件設置,從而將元器件、傳感器板和板中的具體特征考慮在內,并滿足傳感器性能的特定要求以及總功耗要求。專用片上系統 (SoC) 設備,例如 Cypress Semiconductor PSoC 4000S,集成了專門用于簡化電容觸摸傳感器實現的特定功能,其中包括微調要求。
Cypress CapSense
Cypress PSoC 4 設備系列基于 ARM? Cortex?-M0+ 處理器內核,將存儲器與可編程模擬和數字外設完美結合,此類外設專門用于滿足各種應用的需求。值得一提的是,PSoC 4000S 提供了 Cypress 的專有 CapSense 功能,其中包括一個用于處理電容觸摸傳感器的完整信號鏈。由此,工程師僅需少數額外的元器件即可進行觸摸傳感器設計(圖 3)。
圖 3: Cypress Semiconductor PSoC 4000S 設備將 ARM Cortex-M0+ 內核、存儲器以及外設與 Cypress 的 CapSense 電容傳感器信號鏈集成在一起。開發人員僅需少數額外的元器件即可實現基于自電容或互電容設計的感應解決方案。(來源: Cypress Semiconductor)
對于自電容傳感器設計,工程師將所有傳感器板連接到 GPIO 引腳,并額外增加了一個外部 CMOD 電容器(圖 3)?;ル娙輦鞲衅髟O計針對每個傳感器接收和發射線使用獨立的 GPIO,并采用一對外部電容器、CINTA 和 CINTB。另外,外部 CTANK 電容器可支持屏蔽式電極的應用,此類電極用于降低對傳感器覆面表面存在液體的靈敏度。
PSoC 4000S 支持自電容和互電容兩種方式。對于自電容感應,SoC 的 CapSense 三角積分 (CSD) 函數使用電流至數字轉換器來測量 GPIO 上的自電容變化。對于互電容感應,SoC 的 CapSense 交叉點 (CSX) 函數驅動 Tx 電極并感測 Rx 電極的電荷。所測量的 Rx 電極電荷與兩個電極之間的互電容成正比。
在兩種方法中,轉換器均生成原始計數,該計數反映 GPIO 上測量的自電容或 Rx 引腳上測量的互電容。通過將原始計數與可編程噪聲和信號閾值進行對比,固件可以確定手指是否接觸按鈕傳感器板或者與滑塊或觸摸板上特定位置相關的傳感器(圖 4)。
圖 4: 當計數值高于可編程噪聲閾值并達到可編程觸摸閾值時,Cypress PSoC 4000S CapSense 模塊將生成指示觸摸的計數。CapSense 還支持高于和低于目標觸摸檢測閾值的磁滯電平。(圖片來源:Cypress Semiconductor)
CapSense 可以執行此項掃描,而又無需 CPU 干預。因此,設計人員可以對 Cortex-M0+ 內核進行編程,以便在傳感器掃描過程中執行其他任務。然而,實際上,與獨立處理器活動相關的電流變化可能會將噪聲引入 CapSense 模塊中的敏感模擬電路。如此一來,開發人員通常會在掃描期間限制處理器的活動,尤其是需要高靈敏度和相應低噪聲環境的應用。
事實上,由于制造差異,不同的傳感器可能會表現出不同的噪聲水平和靈敏度,因此需要仔細調整硬件和軟件參數來修正這些差異。然而,除了系統性差異之外,環境條件中還會發生其他突發性變化,這可能會引入對靈敏度、性能和精度造成動態影響的因素。
為了在不斷變化的條件下維持性能,PSoC 4000S 設備的 SmartSense 提供了自動微調功能,可以自動設置參數來保持最佳的靈敏度和性能。當 CapSense 模塊初始化時,SmartSense 會重新計算掃描分辨率等參數,以及內部時鐘和其他主要內部電路的設置。然而,在每次掃描開始時,SmartSense 都可以自動更新其他動態參數,包括噪聲閾值和觸摸閾值。因此,SmartSense 可以動態補償不同的噪聲環境,甚至還包括設計過程中無法預計的隨機噪聲尖峰。
但在某些情況下,設計人員可能仍需要使用手動微調的方法。例如,SmartSense 支持寄生電容高達 45 pF 的設計。因此,寄生電容非常高的設計可能需要手動微調。此外,SmartSense 僅支持自電容傳感器設計,因此互電容傳感器設計需要手動微調。實際上,在應用需要對特定參數設置(例如傳感器掃描時間)進行嚴格控制的情況下,Cypress 建議使用手動微調的方法,即使是自電容設計亦是如此。
快速開發
盡管 PSoC 4000S 等相對復雜的設備具有集成功能,但可能仍需要費力對所有片載模塊進行編程。為了簡化編程和配置,Cypress 推出了免費的 PSoC Creator 軟件環境。PSoC Creator 是一種集成式設計環境 (IDE),有助于讓設備硬件配置細節和相關軟件層變得簡單明了。
PSoC Creator 與 Cypress PSoC 4 設計套件配套使用,此類套件包含集成式引導程序或調試器。因此,采用 PSoC 設備進行開發,只需將開發板連接到系統 USB 端口并選擇適當參數即可。例如,開發人員僅需在 PSoC Creator 配置屏幕選擇 SmartSense,即可對 SmartSense 進行自動微調(圖 5)。
圖 5: Cypress PSoC Creator IDE 簡化了編程和開發過程。設備配置和 SmartSense 自動微調等功能的設置得到了簡化,可在專門用于特定設備功能領域的屏幕上通過一系列選擇操作實現。(圖片來源:Cypress Semiconductor)
PSoC 4000S 硬件和 PSoC Creator IDE 的完美結合在實現電容感應設計的過程中表現出顯著優勢。然而,如前所述,寄生電容、噪聲源以及其他具體設計注意事項等問題始終是開發團隊研發電容觸摸傳感器解決方案的障礙。Cypress 憑借其 PSoC 4000S 原型開發套件滿足了快速開發的需求,該套件可提供完整的電容觸摸硬件實現和示例軟件。該套件將 Cypress KitProg2 調試板、按鈕傳感器板、線性滑塊板和主板,與用于低功耗藍牙 (BLE) 通信的 PSoC 4000S 和 Cypress EZ-BLE PRoC 設備結合在一起。
開發人員僅需將板插入 USB 端口即可快速開始傳感器應用測試(圖 6)。通過 PSoC Creator,開發人員可選擇和編譯示例項目;采用 IDE 的固件編程器來對主板上的 PSoC 4000S 設備進行編程;最后使用集成式調試器來探索運行時操作。該套件支持按鈕板和滑塊板二者的自電容和互電容感應,因此開發人員可以使用 PSoC Creator 來配置套件,從而在任意配置中運行傳感器。
圖 6: Cypress PSoC 4000S 原型開發套件提供了獨特的快速分離式設計,其中包括連接 USB 的調試板、觸摸傳感器板、線性滑塊板,以及主板,這些都可以獨立用于定制電容傳感器設計的開發。(圖片: Cypress Semiconductor)
PSoC Creator 和 PSoC 4000S 原型開發套件軟件套件都可免費下載。PSoC Creator 用于配置和編程套件中的板載 PSoC 4000S 設備,而軟件包包括一套全面的軟件庫以及用于介紹電容觸摸應用主要設計模式的示例軟件。
例如,按鈕和滑塊示例包中的 main.c 程序演示了設備初始化,以及連續的傳感器采樣。在此代碼中,switch 語句按順序進行傳感器掃描(在可選自動調諧器傳遞信息之后);等待掃描完成;最終處理所有已啟用的傳感器(列表 1)。Cypress 庫涵蓋的包可實現序列中每個階段所需的低級軟件調用。
DEVICE_STATE currentState = SENSOR_SCAN;
...
/* Start CapSense block */
CapSense_Start();
...
for(;;)
{
/* Switch between SENSOR_SCAN->WAIT_FOR_SCAN_COMPLETE->PROCESS_DATA states */
switch(currentState)
{
case SENSOR_SCAN:
/* Initiate new scan only if the CapSense block is idle */
if(CapSense_NOT_BUSY == CapSense_IsBusy())
{
#if ENABLE_TUNER
/* Update CapSense parameters set via CapSense tuner before the
beginning of CapSense scan
*/
CapSense_RunTuner();
#endif
/* Scan widget configured by CSDSetupWidget API */
CapSense_ScanAllWidgets();
/* Set next state to WAIT_FOR_SCAN_COMPLETE */
currentState = WAIT_FOR_SCAN_COMPLETE;
}
break;
case WAIT_FOR_SCAN_COMPLETE:
/* Put the device to CPU Sleep until CapSense scanning is complete*/
if(CapSense_NOT_BUSY != CapSense_IsBusy())
{
CySysPmSleep();
}
/* If CapSense scanning is complete, process the CapSense data */
else
{
currentState = PROCESS_DATA;
}
break;
case PROCESS_DATA:
/* Process data on all the enabled widgets */
CapSense_ProcessAllWidgets();
/* Controls LEDs Status based on the result of Widget processing.*/
LED_Control();
...
}
}
}
列表 1: Cypress 的示例軟件演示了 PSoC 4000S 電容感應功能的使用方法。本示例應用程序中,首先初始化 PSoC 4000S CapSense 模塊,然后按順序無限循環傳感器掃描 (CapSense_ScanAllWidgets),等待掃描結束,最后處理結果 (CapSense_ProcessAllWidgets)。(代碼來源: Cypress Semiconductor)
開發人員準備測試自己的傳感器設計時,可以關閉調試器板和兩塊傳感器板的電源,從而僅通過主板繼續進行開發。此套件提供用于連接套件傳感器和 PSoC 4000S GPIO 引腳的針座,可輕松擴展到定制設計的傳感器板。
對于希望基于套件設計構建產品的設計人員,可以通過相關的參考設計獲取完整的硬件原理圖和相應軟件。例如,硬件參考設計詳細說明了一系列線性滑塊傳感器板的使用方法(圖 7)。配套的軟件套件提供了示例軟件,演示了一種可提高手指位置估計精度的技術。
圖 7: 在 Cypress PSoC 4000S 原型開發套件參考設計中,線性滑塊包含大量以鋸齒狀排列的傳感器板,可以提高手指位置的辨識分辨率。這種設計包含發射電極,能夠以互電容和自電容兩種模式運行。(圖片來源:Cypress Semiconductor)
線性滑塊的鋸齒狀排列可以確保,手指觸摸到滑塊的某一點時,也將在一定程度上觸摸到相鄰片區。軟件套件在低級程序 (capsense_CalcCentroid) 中使用了此信息,該程序使用顯示最大計數的傳感器 (Si) 及其任意一側傳感器(Si-1、Si+1)來計算計數值的質心(列表 2)。通過這樣的方法內插手指位置,軟件可以產生分辨率較高的手指定位解決方案,此方案的分辨率優于僅尋找顯示最大計數值的傳感器的方法。隨后,示例軟件應用程序就可以打開 LED、顯示最大計數值的傳感器和計數值較小的其他傳感器(S0、S1、…、Si-1、Si)。
...
/* Si+1 - Si-1 */
numerator = (uint32) capsense_centroid[capsense_POS_NEXT] -
(uint32) capsense_centroid[capsense_POS_PREV];
/* Si+1 + Si + Si-1 */
denominator = (int32) capsense_centroid[capsense_POS_PREV] +
(int32) capsense_centroid[capsense_POS] +
(int32) capsense_centroid[capsense_POS_NEXT];
/* (numerator/denominator) + maximum */
denominator = (((int32)(uint32)((uint32)numerator << 8u)/denominator) + (int32)(uint32)((uint32) maximum << 8u));
...
/* Round result and put it to uint8 */
position = ((uint8) HI16((uint32)denominator + capsense_CENTROID_ROUND_VALUE));
return (position);
列表 2: capsense_CalcCentroid 程序針對線性陣列中的上一個、當前和下一個傳感器從每個傳感器的計數值數組中抽取傳感器計數 (capsense_centroid),以返回此處顯示的質心計算結果。(代碼來源: Cypress Semiconductor)
結論
觸敏界面基于電容感應技術,為用戶控制各種設備(從可穿戴式設備到洗碗機)提供了直觀的方法。電容感應除了具有最小功率要求之外,還可提供可靠性和更長的使用壽命,這是機械按鈕和開關難以實現的。然而,在設計穩固型感應系統時,開發人員會通過迭代設計來解決電容感應系統中相互依賴的電路設計和物理布局特性,但這會導致開發速度延緩?;?Cypress Semiconductor PSoC 4000S 的完整原型開發套件和參考設計,提供了隨即可用的解決方案,有助于開發人員為各種應用快速部署穩固的電容觸摸感應設計。
-
PSoC
+關注
關注
12文章
170瀏覽量
91914 -
Cypress
+關注
關注
11文章
137瀏覽量
82104 -
電容觸摸
+關注
關注
0文章
70瀏覽量
16458
發布評論請先 登錄
相關推薦
評論