使用 Cypress CY8CKIT 簡化電容式觸控感測器的設計

資料提供者:DigiKey 北美編輯群

從電器到穿戴式裝置等眾多消費性產品來說,觸控功能是基本需求。但對開發者而言,由於功能設計和實體佈局相互依賴,觸控感測器的設計不僅是一項工程,往往也是一門藝術。因此,開發團隊必須處理多種設計互動,讓按鈕、滑桿和其他元件盡可能達到最佳效能,也因如此而可能有所延誤。

為了協助開發專案,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 板層上的發射與接收走線建構而成。

雖然設計人員需謹慎打造這些感測器,但電容式觸控感測器的開發大部分都遵循典型的設計流程。然而,在感測器板全面生產前,工程師一般都需要依據元件、感測器墊及板件的特定特性,以及感測器效能和整體電力要求的特定要求,來調整硬體參數和軟體設定。Cypress Semiconductor 的 PSoC 4000S 等專用型系統單晶片 (SoC) 裝置,整合了特定功能,可簡化電容式觸控感測器的實作,包括微調需求。

Cypress CapSense

Cypress 的 PSoC 4 裝置系列以 ARM® Cortex®-M0+ 處理器核心為基礎,結合了記憶體以及可編程類比和數位周邊,可因應多種應用。特別的是,PSoC 4000S 提供了 Cypress 自行研發的 CapSense 功能,其中含有完整的訊號鏈,可用來處理電容式觸控感測器。也因此,工程師僅需幾個額外的元件便能實作觸控感測器設計 (圖 3)。

Cypress Semiconductor 的 PSoC 4000S 裝置圖

圖 3:Cypress Semiconductor 的 PSoC 4000S 裝置整合了 ARM Cortex-M0+ 核心、記憶體及周邊裝置,並搭配 Cypress 的 CapSense 電容式感測器訊號鏈。開發人員只需要少許額外元件,便能根據自電容或互電容設計來實作感測解決方案。(資料來源:Cypress Semiconductor)

若是自電容感測器設計,工程師則將每個感測器墊連接到 GPIO 針腳,再添加一個額外的外部 CMOD 電容 (圖 3)。互容式感測器設計針對每條感測器接收與發射線路採用個別的 GPIO,並使用一對外部電容:CINTA 和 CINTB。此外,具有一個外部 CTANK 電容,可支援屏蔽電極的實作,在感測器覆蓋層表面出現液體時,降低靈敏度。

PSoC 4000S 支援自容式和互容式。若是自容式感測,SoC 的 CapSense 三角積分 (CSD) 功能會使用電流數位轉換器來測量 GPIO 的自電容變化。若是互容式感測,SoC 的 CapSense Crosspoint (CSX) 功能會驅動 Tx 電極,並感測 Rx 電極上的電荷。在 Rx 電極上測得的電荷與兩個電極之間的互電容成正比。

在兩個方法中,轉換器都會產生一個原始計數,反映出在 GPIO 上測得的自電容,或是在 Rx 針腳上測得的互電容。將原始計數與可編程雜訊和訊號閾值互相比較,韌體就可判定手指是否在按鈕感測器墊上,或是位於滑桿或軌跡板特定位置的相關感測器上 (圖 4)。

Cypress 的 PSoC 4000S CapSense 區塊圖

圖 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 自動微調功能 (圖 5)。

Cypress 的 PSoC Creator IDE 圖片

圖 5:Cypress 的 PSoC Creator IDE 能簡化編程與開發作業。裝置組態及功能的設定 (如 SmartSense 自動微調) 都簡化成螢幕上的一系列選項,分別掌管特定的裝置功能區塊。(圖片來源:Cypress Semiconductor)

透過 PSoC 4000S 硬體和 PSoC Creator IDE 的組合,能在實作電容式感測設計時提供顯著優勢。不過如先前所述,像是寄生電容、雜訊源和其他設計細節考量等問題,對於想開發電容式觸控感測器解決方案的開發團隊仍是一項障礙。Cypress 運用其 PSoC 4000S 原型開發套件來因應快速開發的需求,提供完整的電容式觸控硬體實作與範例軟體。此套件結合了 Cypress KitProg2 除錯板、按鈕感測器板、線性滑桿板,以及搭配 PSoC 4000S 的主板,以及 Cypress 的 EZ-BLE PRoC 裝置,可達到低功耗藍牙 (BLE) 通訊。

開發人員只須將板件插入 USB 連接埠,便能迅速開始測試感測器應用 (圖 6)。使用 PSoC Creator,開發人員就可選擇並編譯範例專案、利用 IDE 的韌體編程器為主板上的 PSoC 4000S 裝置進行編程,最後使用整合式除錯器來探索執行階段作業。此套件支援按鈕和滑桿板上的自容式和互容式感測,開發人員能使用 PSoC Creator 來設定套件以任一組態運行感測器。

Cypress 的 PSoC 4000S 原型開發套件圖片

圖 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:

                  /* 僅在 CapSense 區塊閒置時才開始新的掃描作業 */

                if(CapSense_NOT_BUSY == CapSense_IsBusy())

                {

                    #if ENABLE_TUNER

                        /* 透過 CapSense 微調器更新 CapSense 參數組,之後再

                           開始 CapSense 掃描

                        */

                        CapSense_RunTuner();

                    #endif

                   

                    /* 掃描 CSDSetupWidget API 所配置的小工具 */

                    CapSense_ScanAllWidgets();

                                       

                    /* 將下一個狀態設定為 WAIT_FOR_SCAN_COMPLETE  */

                    currentState = WAIT_FOR_SCAN_COMPLETE;

                }

                break;

            case WAIT_FOR_SCAN_COMPLETE:

                /* 讓裝置進入 CPU 睡眠模式,直到 CapSense 掃描完成為止 */

                if(CapSense_NOT_BUSY != CapSense_IsBusy())

                {

                    CySysPmSleep();

                }

                /* CapSense 掃描完成就開始處理 CapSense 數據 */

                else

                {

                    currentState = PROCESS_DATA;

                }

                break;

       

            case PROCESS_DATA:

               

                /* 處理所有已啟用之小工具的數據 */

                CapSense_ProcessAllWidgets();

               

                 /* 依據小工具處理結果控制 LED 狀態。*/

                LED_Control();

    ...

        }

    }

}

列表 1:Cypress 的範例軟體展示出 PSoC 4000S 電容式感測功能的使用。在此範例應用中,PSoC 4000S CapSense 區塊初始化之後,無限迴圈會依序執行感測器掃描 (CapSense_ScanAllWidgets)、等候掃描作業完成,接著處理結果 (CapSense_ProcessAllWidgets)。(程式碼來源:Cypress Semiconductor)

開發人員準備好測試自己的感測器設計時,可以斷開除錯器板和感測器板,僅用主板來繼續開發。此套件會引出排針座,以便連接套件感測器和 PSoC 4000S GPIO 針腳,即可輕鬆延伸到自訂設計的感測器墊。

若開發人員想以套件設計為基礎進行開發,相關的公版設計提供完整的硬體線路圖和相關軟體。舉例來說,硬體公版設計說明如何在線性滑桿上使用一系列感測器墊 (圖 7)。隨附的軟體套件提供範例軟體,能說明增強手指位置估測準確度的技術。

Cypress 的 PSoC 4000S 原型開發套件公版設計圖

圖 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];

       /* (分子/分母) + 最大值 */

       denominator = (((int32)(uint32)((uint32)numerator << 8u)/denominator) + (int32)(uint32)((uint32) maximum << 8u));

    ...

       /* 完成結果並置於 uint8 */

        position = ((uint8) HI16((uint32)denominator + capsense_CENTROID_ROUND_VALUE));

        return (position);

列表 2:capsense_CalcCentroid 常式從各個感測器的計數值陣列中擷取出感測器計數 (capsense_centroid),讓線性陣列中的前一個、目前和下一個感測器傳回在此所示的質心計算結果。(程式碼來源:Cypress Semiconductor)

結論

觸敏式介面採用電容式感測技術,能讓使用者直覺地控制從穿戴式裝置到洗衣機等眾多裝置。電容式感測不僅只有最小的電力需求,更提供可靠性和延長的壽命,這是機械式按鈕與開關難以達成的特點。電容式感測系統中彼此依賴的電路設計和實體佈局特性,需要進行多次設計才可解決其問題,因此想要實作完備感測系統的開發人員,可能很容易就有所延誤。Cypress Semiconductor 的 PSoC 4000S 是立即可用的解決方案,含有完備的原型開發套件及公版設計,能協助開發人員針對多種應用快速部署完備的電容式觸控感測設計。

 
DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於出版者

DigiKey 北美編輯群