Un CONTROLLER per touch sensor capacitivi

Uno sguardo da vicino per scoprire come funziona l’MPR121 di Freescale.

Il mercato delle applicazioni touch sensing ha visto una rapida crescita, non soltanto in ambito consumer ma anche nel settore industriale. Riduzione dei costi di progetto e di materiale, maggiore affidabilità e migliore facilità di utilizzo, oltre ad un’indubbia attrattiva maggiore per il cliente, sono solo alcuni dei principali vantaggi. Diverse sono le soluzioni per applicazioni touchsensing presenti sul mercato. Tra queste vi è l’MPR121 di Freescale; di seguito ne sono descritte le caratteristiche principali ed in dettaglio le modalità di funzionamento.

Caratteristiche generali

L’MPR121 rappresenta la seconda generazione di controller per applicazioni touch-sensing di tipo capacitivo di Freescale. Le caratteristiche principali sono:

  • tensione di alimentazione compresa tra 1,71V e 3,6V;
  • assorbimento di corrente di 29 µA ad una frequenza di campionamento di 16 ms e di soli 3 µA in modalità shutdown;
  • supporto fino a 12 elettrodi con soglie di rilevamento ed intervalli di isteresi programmabili indipendentemente per ognuno;
  • funzionalità di auto-calibrazione;
  • periodo di campionamento configurabile tra 1 e 128 ms;
  • interfaccia di controllo e configurazione di tipo I2C;
  • disponibilità in package QFN a 20 pin (3 x 3 x 0,65 mm3);
  • temperatura operativa compresa tra - 40°C e +85°C.

Le applicazioni tipiche riguardano periferiche per PC, lettori MP3, controlli remoti o per illuminazioni.

Principio di funzionamento

Il principio di funzionamento dell’MPR121 (vedi figura 1) si basa sulla misura della capacità dell’elettrodo che, come noto, varia in presenza di contatto. Tale misura viene effettuata caricando l’elettrodo con una corrente costante I per un intervallo di tempo T. Inizialmente l’elettrodo viene completamente scaricato, cortocircuitandolo a massa. La tensione raggiunta dall’elettrodo al termine del periodo di carica dipenderà, quindi, dai parametri di lavoro e dalla capacità dell’elettrodo in base alla seguente relazione: V = (I x T) / C. Misurando le variazione di tensione misurata all’elettrodo è quindi possibile determinare un eventuale contatto; in questo caso infatti la capacità aumenta e quindi la tensione diminuisce. L’MPR121 integra un convertitore a 10 bit per la misura del valore di tensione dell’elettrodo. Tale valore viene successivamente filtrato digitalmente mediante due filtri in cascata e quindi confrontato con un valore di riferimento, corrispondente alla tensione dell’elettrodo non in contatto. Se la differenza è maggiore di una soglia programmabile dall’utente, si conclude che l’elettrodo è in contatto. Il valore di riferimento viene d’altra parte costantemente aggiornato per tenere conto di eventuali drift dei parametri del circuito o variazioni delle condizioni operative, al fine di ridurre la probabilità di falsi eventi a seguito, ad esempio di rumore ambientale. L’MPR121 dispone, come vedremo in seguito, di un’interessante capacità di auto-calibrazione. Inoltre, come anticipato in precedenza, la maggior parte dei parametri di lavoro sono configurabili indipendentemente per ogni elettrodo.

Figura 1: principio di funzionamento dell’MPR121.

Figura 1: principio di funzionamento dell’MPR121.

Misura della tensione all’elettrodo ed autocalibrazione

Come detto, l’MPR121 stima la capacità dell’elettrodo misurando le tensione al termine del ciclo di carica. Corrente di carica e tempo di carica sono configurabili mediante i campi CDC ( Charge Discharge Current) e CDT (Charge Discharge Time). Possono essere definiti valori globali o indipendenti per ogni elettrodo mediante appositi registri. La corrente di carica può essere configurata tra 1 µA e 63 µA, mentre il tempo di carica tra 500 ns e 32 µs. Nel dimensionare tali parametri si deve tenere conto che l’ADC interno dell’MPR121 è in grado di operare con tensioni comprese tra 0,7V e Vdd-0,7V, dove Vdd è la tensione di alimentazione del dispositivo. Il principio è quello di scegliere tali parametri in modo che la tensione di riferimento (‘baseline’) corrispondente all’elettrodo non in contatto sia prossima al valore massimo accettato dall’ADC. Poiché, infatti, in caso di contatto la tensione all’elettrodo diminuisce, questa condizione di lavoro assicura la massima sensibilità per il sensore. Questo presuppone, però, di conoscere la capacità dell’elettrodo, la quale del resto può cambiare in funzione delle condizioni di lavoro. Fortunatamente l’MPR121 implementa un’utile funzione di auto-calibrazione che permette di determinare autonomamente i parametri di lavoro ottimali. Questi sono calcolati in modo che, in assenza di contatto, la tensione all’elettrodo sia prossima al valore impostato dall’utente nel registro AutoConfig Target Level Register e comunque che sia compresa tra i valori dettati dai registri Auto-Config USL Register e Auto-Config LSL Register. Durante il normale funzionamento, come descritto in seguito, il valore di baseline così impostato viene comunque costantemente aggiornato per tenere conto di eventuali drift dei parametri del circuito o variazioni delle condizioni di lavoro. Se il nuovo valore è al di fuori dell’intervallo definito dai registri Auto-Config USL Register e Auto-Config LSL Register e la flag ARE Automatic Reconfiguration Enable del registo Auto-Config Control Register è attiva, l’auto-calibrazione viene ri-attivata automaticamente.

I filtri di primo e secondo livello

Il filtro di primo livello presente all’interno dell’MPR121 acquisisce un numero di campioni consecutivi definito dal campo FFI (First Filter Iterations) del registro Auto-Config Control Register; elimina il valore minimo e massimo di questo insieme ed esegue una media. Il numero di campioni consecutivamente acquisiti può essere scelto tra 6, 10, 18 o 34, mentre il periodo di ripetizione di una sequenza di acquisizione è dettata dal campo ESI (Electrode Sample Interval) del registro Filter Configuration Register; questo può assumere i valori 1, 2 ,4, 8, 16, 32, 64 e 128 ms. Il risultato del filtro di primo livello è passato al filtro di secondo livello che esegue a sua volta una successiva media su un numero di campioni definito dal campo SFI (Second Filter Iterations) del registro Filter Configuration Register. Il numero di campioni da mediare può essere scelto tra 4, 6, 8 e 10. Il prodotto tra i parametri SFI ed ESI definisce quindi la frequenza di campionamento effettiva per un elettrodo e determina il tempo di risposta del sistema. Il valore in uscita dal filtro di secondo livello viene passato al filtro di baseline ed alla logica di riconoscimento di un evento. I parametri FFI, ESI ed SFI sono comuni per tutti gli elettrodi

Il filtro di baseline

Il filtro di baseline consente di aggiornare costantemente il valore di riferimento corrispondente all’elettrodo non in contatto. Tale valore, come detto in precedenza, può infatti variare rispetto al valore di inizializzazione definito dalla procedura di calibrazione a causa di drift nel lungo periodo dei parametri del circuito o di variazione delle condizioni di lavoro. Il funzionamento del filtro di baseline è dettato dai parametri configurati nei registri MHD (Max Half Delta Register), NCL (Noise Count Limit) e NHD (Noise Half Delta); per ogni elettrodo esiste un insieme di tali registri. Il filtro opera nei casi in cui la logica di controllo descritta in seguito non abbia rivelato un evento (contatto all’elettrodo o rilascio di questo). In questi casi, se la differenza tra il valore misurato in uscita dal filtro di secondo livello ed il valore corrente di baseline è maggiore del doppio del valore configurato nel registro MHD, si assume che la misura corrente sia affetta da rumore e che quindi debba essere scartata nella procedura di aggiornamento dal valore di baseline. In caso contrario, l’MPR incrementa un contatore interno. Tale contatore viene resettato se al successivo campione la differenza con il valore corrente di baseline cambia di segno. Se il contatore raggiunge il numero di eventi indicato nel registro NCL, il valore di baseline viene aggiornato di una quantità pari a NHD (sommata o sottratta a seconda che il valore misurato sia maggiore o minore di quello di baseline). Il tempo di risposta del filtro di baseline può essere modificato configurando opportunamente il valore del registro FDL (Filter Delay Limit), che definisce il numero di campioni in ingresso da mediare prima di applicazione la procedura descritta.

Riconoscimento dell’evento

Per rilevare il contatto sull’elettrodo, il dispositivo confronta la differenza (positiva) tra il valore di baseline ed il valore di tensione correntemente misurato (in uscita dal filtro di secondo livello), con un soglia configurabile definita dal registro Touch Threshold Register. Se la differenza è maggiore, si conclude che l’elettrodo è in contatto. Per evitare continue commutazioni legate a jitter della misura è poi definita, mediante il registro Release Threshold Register, un’analoga soglia per la condizione di rilascio, così da avere una finestra di isteresi. Quando la differenza tra il valore di baseline ed il valore di tensione correntemente misurato è minore di questa, l’MPR121 segnala il rilascia dell’elettrodo. Per ridurre, poi, il numero di falsi eventi, dovuti ad esempio a rumore o misure errate, è anche possibile definire, mediante il registro Debounce Touch and Release Register, quante volte consecutivamente la condizione di contatto o rilascio deve essere rivelata prima di asserire la linea di interruzione e segnalare il relativo evento. Evidentemente maggiore è il numero di campioni positivi necessari a segnalare l’evento, maggiore è l’affidabilità del sistema, ma minore è la sua prontezza.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend