Semplificare la progettazione di sensori tattili capacitivi con CY8CKIT di Cypress

Contributo di Editori nordamericani di DigiKey

Il controllo tattile è un requisito fondamentale per molti prodotti consumer, dagli apparecchi ai dispositivi indossabili. Per gli sviluppatori, tuttavia, progettare un sensore tattile spesso sembra più attinente all'arte che all'ingegneria, considerate le interdipendenze tra design funzionale e layout fisico. Di conseguenza, i team di sviluppo possono subire ritardi dovendo risolvere numerose interazioni progettuali per ottenere le migliori prestazioni da pulsanti, cursori e altri elementi.

Per agevolare lo sviluppo dei progetti, il kit di prototipazione PSoC 4000S CapSense di Cypress Semiconductor offre una soluzione completa di hardware e software per valutare il rilevamento tattile capacitivo e accelerare la sua implementazione in un'ampia gamma di prodotti.

Questo articolo descrive i vari approcci al rilevamento tattile capacitivo e alcuni cavilli che i progettisti devono tener presenti durante la progettazione. Presenterà il kit PSoC CapSense, ne descriverà il funzionamento e come integrarlo nella progettazione. Vengono inoltre forniti esempi di codice.

Perché utilizzare sensori tattili capacitivi?

La natura dei sensori tattili capacitivi li rende particolarmente idonei per un'ampia gamma di applicazioni. Eliminando le parti mobili dei pulsanti e degli interruttori meccanici tradizionali, i sensori tattili migliorano l'affidabilità ed è improbabile che si guastino a causa dell'usura. Inoltre, potendo essere completamente incapsulati in materiali protettivi, riescono a funzionare in ambienti difficili. Oltre alla loro affidabilità, i sensori tattili possono adattarsi facilmente a diverse forme, aiutando gli ingegneri a rispondere alla richiesta dei consumatori di un design elegante e semplice per elettrodomestici, automobili e altri prodotti di largo consumo.

I sensori tattili capacitivi sfruttano la variazione della capacitanza che si verifica quando un dito o una mano si avvicina a una superficie tattile realizzata in modo particolare. I sensori tattili rilevano questo cambiamento usando due approcci diversi: autocapacità (viene misurata la variazione di capacità su un singolo elettrodo) o capacità mutua (viene misurata anche la variazione della capacità tra due elettrodi vicini).

In un sensore tattile ad autocapacità, passare un dito sul pad del sensore realizza un percorso conduttivo a terra, con conseguente aumento improvviso della capacitanza che è notevolmente superiore alle varie fonti di capacità parassita tra il pad e il piano di massa (Figura 1). L'autocapacità viene preferita in genere per applicazioni a tocco singolo, come pulsanti o cursori.

Immagine di come l'autocapacità rileva le variazioni di capacità

Figura 1: L'autocapacità rileva le variazioni di capacità tra un pin di I/O e la terra. Circondare il sensore con un riempimento a tratteggio collegato a terra migliora l'immunità al rumore del sensore. (Fonte: Cypress Semiconductor)

Per contro, il rilevamento a capacità mutua misura la capacitanza tra elettrodi di trasmissione e di ricezione (Figura 2). Qui, quando un controller applica una tensione al pin di trasmissione, la quantità della carica misurata sul pin di ricezione è direttamente proporzionale alla capacità mutua tra i due elettrodi. Questa tecnica può offrire un rapporto segnale/rumore (SNR) superiore all'autocapacità, con conseguente maggiore immunità al rumore. L'SNR superiore consente inoltre di attraversare strati di copertura più spessi, come i display e gli schermi protettivi richiesti nelle applicazioni industriali.

I sensori disposti in un array consentono poi agli sviluppatori di tracciare le variazioni nella capacità mutua in diversi punti contemporaneamente. Di conseguenza, questo è l'approccio preferito in applicazioni multi-touch che utilizzano i trackpad presenti in genere in prodotti consumer più piccoli o nei touchscreen usati in applicazioni basate su display in elettrodomestici e automobili.

Schema di un sistema di rilevamento a capacità mutua

Figura 2: In un sistema di rilevamento a capacità mutua, un controller varia la tensione su un elettrodo di trasmissione (TX). La quantità di carica misurata sull'elettrodo di ricezione (RX) è proporzionale alla capacità mutua tra di essi. Il tocco di un oggetto conduttivo come un dito provoca un cambiamento nella capacità mutua misurata. (Fonte: Cypress Semiconductor)

Progettazione di sensori

Come illustrato nelle Figure 1 e 2, i pad dei sensori capacitivi vengono costruiti da tracce su schede multistrato. Nel caso di un pulsante elementare ad autocapacità, nella progettazione più semplice la traccia del pad del sensore, circondata da un piano di massa tratteggiato, viene messa sopra la scheda. Il pad del sensore si collega a un pin di ingresso di un controller che in genere è fissato sul fondo della scheda, che fornisce anche il piano di massa. Infine lo strato sopra viene ricoperto con un composto protettivo non conduttivo a formare la copertura del sensore. Nel caso di tastierini, gli ingegneri estendono questo disegno di base disponendo singoli pad dei sensori in un array di pulsanti indirizzabili.

I progettisti possono costruire cursori lineari da più pad disposti in genere a zig-zag. Come descritto sotto, questa disposizione offre informazioni che il software del sensore tattile associato può usare per calcolare con più precisione la posizione del dito. Trackpad e touchscreen estendono ulteriormente questo approccio usando due cursori lineari per determinare la posizione X-Y di un dito posto sulla superficie del pad o dello schermo.

In pratica, la progettazione fisica dei sensori a capacità tattile può essere abbastanza complessa dato che gli ingegneri si adoperano per ridurre la capacità parassita, il che riduce la sensibilità del sensore. Oltre all'attenta progettazione del piano di massa stesso, quest'ultimo, tratteggiato, deve rispettare rigorosamente regole specifiche di progettazione fisica. Negli apparecchi domestici inoltre, e in altri prodotti dove un liquido può distorcere le letture del sensore, gli ingegneri creano strutture più complesse per aiutare ad eliminare le false letture in presenza di liquido sulla superficie sensibile. Array di sensori a capacità mutua aumentano ulteriormente la complessità del progetto con tali matrici costruite da tracce trasmittenti e riceventi su strati multipli di circuiti stampati.

Sebbene i progettisti debbano adottare una certa cautela nella creazione di questi sensori, lo sviluppo di sensori tattili capacitivi segue per la maggior parte un flusso di progetto tipico. Tuttavia, prima di avviare la piena produzione di schede di sensori, gli ingegneri in genere devono regolare i parametri hardware e le impostazioni software per tenere conto di caratteristiche specifiche dei componenti, dei pad e delle schede, oltre che dei requisiti specifici per le prestazioni dei sensori e dei requisiti generali di consumo energetico. I dispositivi SoC (system-on-chip) specializzati come PSoC 4000S di Cypress Semiconductor, integrano funzionalità specifiche progettate per semplificare l'implementazione dei sensori tattili capacitivi, compresi i requisiti di messa a punto.

CapSense di Cypress

La famiglia di dispositivi PSoC 4 basati su core ARM® Cortex®-M0+ di Cypress combina una memoria con periferiche analogiche e digitali progettate per l'implementazione di una vasta gamma di applicazioni. In particolare, PSoC 4000S mette a disposizione la funzionalità CapSense proprietaria di Cypress, dotata di una catena di segnali completa per l'elaborazione dei sensori tattili capacitivi. Il risultato è che gli ingegneri possono implementare un progetto di sensore tattile con solo qualche componente aggiuntivo (Figura 3).

Schema del dispositivo PSoC 4000S di Cypress Semiconductor

Figura 3: Il dispositivo PSoC 4000S di Cypress Semiconductor integra un core ARM Cortex-M0+, una memoria e periferiche con la catena di segnali del sensore capacitivo CapSense di Cypress. Gli sviluppatori devono aggiungere solo pochi componenti supplementari per implementare le soluzioni di rilevamento basate su autocapacità o capacità mutua. (Fonte: Cypress Semiconductor)

Per i progetti con sensori ad autocapacità, si connette ogni pad a un pin GPIO e si aggiunge un condensatore CMOD supplementare esterno (Figura 3). I progetti basati su capacità mutua usano GPIO separati per ogni linea di trasmissione e ricezione del sensore, oltre a una coppia di condensatori esterni, CINTA e CINTB. Inoltre, un condensatore esterno CTANK supporta l'implementazione di elettrodi con schermatura usati per ridurre la sensibilità alla presenza di liquidi sulla superficie della copertura del sensore.

PSoC 4000S supporta sia il metodo ad autocapacità che quello a capacità mutua. Per i sensori ad autocapacità, la funzione CapSense Sigma-Delta (CSD) del SoC misura le variazioni in autocapacità su un GPIO usando un convertitore da corrente a digitale. Per i sensori a capacità mutua, la funzione CapSense Crosspoint (CSX) del SoC pilota un elettrodo Tx e rileva la carica su un elettrodo Rx. La quantità di carica misurata sull'elettrodo Rx è proporzionale alla capacità mutua tra i due elettrodi.

In entrambi gli approcci, il convertitore genera un conteggio grezzo che riflette l'autocapacità misurata su un GPIO o la capacità mutua misurata su un pin Rx. Confrontando il conteggio con il rumore programmabile e con le soglie dei segnali, il firmware può determinare se è presente un dito sul pad del sensore del pulsante, o su un sensore associato a una particolare posizione su un cursore o touchpad (Figura 4).

Grafico del blocco PSoC 4000S CapSense di Cypress

Figura 4: Il blocco PSoC 4000S CapSense di Cypress genera conteggi che indicano un tocco quando il valore del conteggio supera la soglia programmabile del rumore e raggiunge le soglie di tocco programmabili. CapSense supporta anche livelli di isteresi sopra e sotto la soglia target di rilevamento del tocco. (Fonte dell'immagine: Cypress Semiconductor)

Il blocco CapSense può eseguire questa scansione senza che debba intervenire la CPU. Di conseguenza, i progettisti potrebbero programmare il core Cortex-M0+ per eseguire altri compiti durante le scansioni del sensore. In pratica tuttavia, le variazioni di corrente associate all'attività di un processore indipendente possono introdurre rumore nei sensibili circuiti analogici all'interno del blocco CapSense. Quindi gli sviluppatori in genere limitano l'attività del processore durante le scansioni, in particolare per applicazioni che richiedono alta sensibilità e di conseguenza ambienti a basso rumore.

In effetti, sensori diversi possono presentare sensibilità e livelli di rumore diversi in funzione delle varianti di fabbricazione. Ciò richiede un'attenta messa a punto dell'hardware e dei parametri software per correggere tali differenze. Oltre a queste variazioni sistematiche, cambiamenti più immediati nelle condizioni ambientali possono introdurre fattori che influenzano dinamicamente sensibilità, prestazioni e precisione.

Per garantire le prestazioni malgrado i cambiamenti delle condizioni, la funzione SmartSense del dispositivo PSoC 4000S offre una capacità di auto-tuning che imposta automaticamente i parametri per mantenere a livelli ottimali sensibilità e prestazioni. Quando il blocco CapSense viene inizializzato, SmartSense ricalcola i parametri come ad esempio la risoluzione di scansione nonché le impostazioni del clock interno e altri circuiti interni fondamentali. Ad ogni modo, all'inizio di ogni scansione SmartSense può aggiornare i parametri più dinamici compresi i valori della soglia di rumore e del tocco. SmartSense può quindi compensare dinamicamente i vari ambienti disturbati dal rumore e anche in caso di picchi di rumore casuali che non possono essere previsti in fase di progettazione.

In alcuni casi tuttavia, i progettisti potrebbero aver bisogno di effettuare le regolazioni di precisione a mano. Ad esempio, SmartSense supporta progetti con capacità parassita fino a 45 pF. Di conseguenza i progetti con capacità parassita molto alta possono richiedere la regolazione manuale. Inoltre SmartSense supporta solo progetti con sensori ad autocapacità, quindi per quelli basati sulla capacità mutua occorre intervenire manualmente. In effetti, Cypress consiglia la regolazione manuale anche per i sensori ad autocapacità in situazioni in cui l'applicazione richiede un controllo molto rigido di specifiche impostazioni di parametri, ad esempio per il tempo di scansione del sensore.

Sviluppo rapido

Con tutte le sue funzionalità integrate, un dispositivo complesso come PSoC 4000S può richiedere un notevole impegno per la programmazione di ogni blocco su chip. Per facilitare la programmazione e la configurazione, Cypress offre l'ambiente software gratuito PSoC Creator. PSoC Creator è un ambiente di progettazione integrato (IDE) che aiuta a mascherare la complessità della configurazione dell'hardware e dei layer software associati.

PSoC Creator è studiato per lavorare con il kit di progettazione PSoC 4 di Cypress che integra bootloader o debugger. Grazie ad esso, lo sviluppo con un dispositivo PSoC è semplice, basta connettere la scheda di sviluppo a una porta USB del sistema e selezionare i parametri appropriati. Ad esempio, gli sviluppatori possono abilitare l'auto-tuning di SmartSense semplicemente selezionandolo in una schermata di configurazione di PSoC Creator (Figura 5).

Immagine dell'IDE PSoC Creator di Cypress

Figura 5: L'IDE PSoC Creator di Cypress semplifica la programmazione e lo sviluppo. La configurazione e l'impostazione delle funzioni del dispositivo, come l'auto-tuning di SmartSense, si riducono a una serie di selezioni nelle schermate dedicate ad aree specifiche della funzionalità del dispositivo. (Fonte dell'immagine: Cypress Semiconductor)

La combinazione dell'hardware PSoC 4000S e dell'IDE PSoC Creator offre notevoli vantaggi per l'implementazione di progetti con rilevamento capacitivo. Come notato prima, tuttavia, problematiche come capacità parassita, fonti di rumore e altri fattori di dettaglio del progetto sono aspetti spinosi per i team di sviluppo che lavorano ad applicazioni con sensori tattili capacitivi. Cypress risponde a queste necessità di sviluppo rapido con il suo kit di prototipazione PSoC 4000S che offre una completa implementazione hardware e software di esempio per applicazioni tattili capacitive. Il kit combina la scheda di debug Cypress KitProg2, la scheda del sensore a pulsante, una scheda con cursore lineare e una scheda principale con PSoC 4000S e il dispositivo EZ-BLE PRoC di Cypress per le comunicazioni Bluetooth Low Energy (BLE).

Gli sviluppatori possono iniziare velocemente a testare l'applicazione a sensore con il semplice inserimento della scheda nella porta USB (Figura 6). Usando PSoC Creator, lo sviluppatore può selezionare e compilare un esempio di progetto; usare il programmatore del firmware dell'IDE per programmare il dispositivo PSoC 4000S sulla scheda principale; e infine usare il debugger integrato per esplorare l'operazione in esecuzione. Il kit supporta sia il metodo ad autocapacità che quello a capacità mutua tanto sulla scheda a pulsante che in quella a cursore e gli sviluppatori possono usare PSoC Creator per configurare il kit in modo che funzioni in entrambe le configurazioni.

Immagine del kit di prototipazione PSoC 4000S di Cypress

Figura 6: Il kit di prototipazione PSoC 4000S di Cypress offre un sistema rapido per mettere in cantiere progetti grazie a una scheda di debug connessa alla porta USB, una scheda con sensore tattile, una scheda a cursore lineare e la scheda principale che può essere separata per lo sviluppo di progetti personalizzati con sensori capacitivi. (Immagine per gentile concessione di Cypress Semiconductor)

La suite software del kit di prototipazione PSoC Creator e PSoC 4000S è scaricabile gratuitamente. Mentre PSoC Creator è utilizzato per configurare e programmare il dispositivo del kit su scheda PSoC 4000S, il pacchetto software include un set completo di librerie software con esempi che illustrano modelli di progetti di base per applicazioni tattili capacitive.

La routine main.c nel pacchetto di esempio per il pulsante e il cursore dimostra l'inizializzazione del dispositivo seguito dal campionamento continuo del sensore. All'interno di questo codice, una dichiarazione di commutazione esegue in modo sequenziale la scansione del sensore dopo un passaggio opzionale dell'auto-tuner; attende che sia completata la scansione e infine elabora tutti i sensori abilitati (Listato 1). La libreria Cypress include pacchetti che implementano le chiamate software a basso livello richieste per ogni fase nella sequenza.

    DEVICE_STATE currentState = SENSOR_SCAN; 

    . . .

    /* Start CapSense block */

     CapSense_Start();

    . . .

    for(;;)

     {

         /* Commuta tra gli stati SENSOR_SCAN->WAIT_FOR_SCAN_COMPLETE->PROCESS_DATA states */

         switch(currentState)

         {

             case SENSOR_SCAN:

                   /* Inizia una nuova scansione solo se il blocco CapSense è libero */

                 if(CapSense_NOT_BUSY == CapSense_IsBusy())

                 {

                     #if ENABLE_TUNER

                         /* Aggiorna il set di parametri di CapSense tramite il suo tuner prima

                            dell'inizio della scansione di CapSense

                         */

                         CapSense_RunTuner();

                     #endif

                    

                     /* Widget di scansione configurato dall'API CSDSetupWidget */

                     CapSense_ScanAllWidgets();

                                        

                     /* Imposta lo stato successivo su WAIT_FOR_SCAN_COMPLETE  */

                     currentState = WAIT_FOR_SCAN_COMPLETE;

                 }

                 break;

 

             case WAIT_FOR_SCAN_COMPLETE:

 

                 /* Mette il dispositivo su CPU Sleep fino a che non è completa la scansione CapSense*/

                 if(CapSense_NOT_BUSY != CapSense_IsBusy())

                 {

                     CySysPmSleep();

                 }

                 /* Se la scansione CapSense è completa, elabora i suoi dati */

                 else

                 {

                 currentState = PROCESS_DATA;

                 }

                 break;

                

                 case PROCESS_DATA:

                

                 /* Elabora i dati su tutti i widget abilitati */

                 CapSense_ProcessAllWidgets();

                

                 /* Controlla i LED di stato in base ai risultati dell'elaborazione dei widget. */

                 LED_Control();

    . . .

         }

     }

 }

Listato 1: L'esempio di software di Cypress dimostra l'uso delle capacità di rilevamento capacitivo di PSoC 4000S. In questa applicazione di esempio, dopo l'inizializzazione del blocco PSoC 4000S CapSense, un loop infinito esegue in sequenza le scansioni dei sensori (CapSense_ScanAllWidgets), attende la fine delle scansioni quindi elabora i risultati (CapSense_ProcessAllWidgets). (Codice sorgente per gentile concessione di Cypress Semiconductor)

Quando sono pronti per testare i propri progetti, gli sviluppatori possono estrarre la scheda di debug ed entrambe quelle dei sensori per continuare il lavoro con la sola scheda principale. Il kit offre basette per la connessione tra i sensori del kit e i pin GPIO su PSoC 4000S, il che consente un facile ampliamento per pad di sensori personalizzati.

Per gli sviluppatori interessati a realizzare progetti sul kit, il progetto di riferimento allegato offre gli schemi hardware completi e il software pertinente. Ad esempio, il progetto di riferimento hardware illustra l'uso di una serie di pad di sensori per il cursore lineare (Figura 7). La suite software allegata offre degli esempi che dimostrano una tecnica per migliorare la precisione della stima della posizione del dito.

Schema del progetto di riferimento del kit di prototipazione PSoC 4000S di Cypress

Figura 7: Nel progetto di riferimento del kit di prototipazione PSoC 4000S di Cypress, un cursore lineare comprende un array di pad sensori disposti a zig-zag per migliorare la precisione della stima della posizione del dito. Il progetto include un elettrodo di trasmissione che consente il funzionamento a capacità mutua e ad autocapacità. (Fonte dell'immagine: Cypress Semiconductor)

La disposizione a zig-zag dei pad del cursore lineare garantisce che quando il dito tocca uno specifico punto sul cursore, il polpastrello tocchi parzialmente anche i segmenti adiacenti. Il kit software usa queste informazioni in una routine a basso livello (capsense_CalcCentroid) che calcola il centroide dei valori conteggiati usando il sensore (Si) che rileva il conteggio massimo e dei sensori (Si-1, Si+1) ai suoi lati (Listato 2). Interpolando la posizione del dito con questa tecnica, il software è in grado di generare una soluzione di posizionamento del dito a una risoluzione superiore rispetto a quanto possibile con la semplice individuazione del sensore che mostra il conteggio maggiore. L'applicazione software di esempio accende quindi i LED, quel sensore e quelli al di sotto di esso (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));

    . . .

        /* Arrotonda il risultato e lo mette in uint8 */

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

         return (position);

Listato 2: La routine capsense_CalcCentroid estrae i conteggi da ogni sensore nell'array (capsense_centroid) per il sensore precedente, corrente e successivo nell'array lineare e restituisce il risultato del centroide calcolato, mostrato qui. (Codice sorgente per gentile concessione di Cypress Semiconductor)

Conclusione

Le interfacce tattili basate sul rilevamento della capacità offrono agli utenti un metodo intuitivo per controllare vari tipi di dispositivi, da quelli indossabili alle lavatrici. Grazie anche ai requisiti energetici minimi, il rilevamento capacitivo garantisce affidabilità e lunga vita operativa che difficilmente sono ritrovabili in pulsanti e interruttori meccanici. Tuttavia, gli sviluppatori che desiderano implementare sistemi di rilevamento affidabili possono incappare in vari ritardi a causa delle iterazioni di progetto richieste per risolvere l'interdipendenza dei circuiti e delle caratteristiche del layout fisico in un sistema a rilevamento capacitivo. Un kit di prototipazione completo e un progetto di riferimento basati su PSoC 4000S di Cypress Semiconductor offrono una soluzione già pronta in grado di aiutare gli sviluppatori a implementare in tempi brevi progetti di rilevamento tattile capacitivo per un'ampia gamma di applicazioni.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo editore

Editori nordamericani di DigiKey