Si7005 è un sensore digitale di temperatura e umidità relativa presentato da Silicon Labs. La sua compattezza, precisione ed elevato grado di affidabilità lo rendono la soluzione ideale per molte applicazioni nel campo dell’elettronica industriale e domestica.
INTRODUZIONE
Si7005 è un sensore digitale di temperatura e umidità relativa sviluppato e prodotto da Silicon Labs. Il dispositivo si presenta come un integrato CMOS monolitico, e contiene al suo interno un sensore di temperatura e umidità relativa, un convertitore analogico-digitale, un circuito con il compito di elaborare il segnale misurato, un’interfaccia I2C e i dati di calibrazione. Il componente utilizza un sistema brevettato di misura dell’umidità basato sull’utilizzo di un dielettrico polimerico, che ha contribuito ad ottenere un sensore di bassa potenza con valori ridotti di deriva e isteresi, e una eccellente stabilità nel lungo termine. Sia il sensore di temperatura che quello di umidità relativa sono calibrati durante la fabbricazione, e i dati di calibrazione sono memorizzati nella memoria non volatile integrata nel chip. Ciò permette, ad esempio, di sostituire agevolmente un sensore senza dover rieseguire la procedura di calibrazione. Opzionalmente è anche disponibile una copertura protettiva del sensore, particolarmente utile sia durante la fase di assemblaggio del circuito che durante la vita del componente stesso. Si7005 rappresenta pertanto una soluzione digitale accurata, di bassa potenza, già calibrata in fabbrica, ideale per tutte le applicazioni industriali e domestiche in cui siano richieste misure accurate di temperatura, umidità relativa e punto di rugiada.
CARATTERISTICHE TECNICHE
Le caratteristiche tecniche del componente possono essere così riassunte:
- sensore di temperatura con accuratezza tipica pari a ± 0,5 °C e comunque non superiore a ± 1 °C (con temperature comprese tra 0 e 70 °C)
- sensore di umidità relativa con accuratezza massima pari a ± 4,5% RH (con umidità relativa compresa tra 0 e 80% RH)
- intervallo di misura della temperatura compreso tra -40 e +85 °C, e di umidità relativa tra 0 e 100% RH
- tensione di alimentazione compresa tra 2,1 e 3,6 V
- basso assorbimento di corrente (solo 240 μA durante la misura di RH)
- interfaccia digitale I2C con il sistema host
- circuito di riscaldamento integrato
- contenitore QFN da 4x4 mm
- calibrazione eseguita durante la produzione
- eccellente stabilità di lungo periodo
- copertura protettiva (opzionale)
APPLICAZIONI
Tra le molteplici e diverse applicazioni del componente ricordiamo le seguenti:
- condizionatori d’aria industriali
- umidificatori
- sistemi di refrigerazione
- apparati medicali
- sistemi automotive per il controllo della temperatura e dell’umidità
- sistemi per il tracciamento e il controllo dei prodotti alimentari deperibili
In Figura 1 possiamo osservare l’andamento dell’errore di misura (accuratezza) dell’umidità relativa, nel caso di una temperatura di riferimento pari a 30 °C. La curva con tratto continuo rappresenta l’andamento dell’errore massimo, mentre quella tratteggiata l’andamento dell’errore tipico, o medio.
In Figura 2 è invece visibile lo stesso tipo di diagramma, questa volta riferito all’accuratezza della misura di temperatura.
CIRCUITI APPLICATIVI
In Figura 3 possiamo osservare un tipico circuito applicativo del sensore Si7005, mentre in Figura 4 è indicato lo schema applicativo consigliato nel caso di soluzioni alimentate a batteria. Nel caso in cui il sensore Si7005 condivida il bus I2C con altri dispositivi slave, esso dovrà essere disalimentato quando il master controller sta comunicando con gli altri dispositivi slave.
Il sensore può essere disattivato sia portando a livello logico alto il segnale di chip select (pin CS, attivo basso), sia portando il pin VDD alla tensione di 0 V. Con riferimento alla precedente Figura 4, notiamo come in questo caso particolare venga proprio adottata la tecnica di controllare l’alimentazione del sensore agendo sul pin VDD dello stesso. Nel caso indicato in Figura 4, il pin VDD è collegato, tramite la resistenza R3, a un pin di uscita del microcontrollore.
SCHEMA A BLOCCHI
Siamo a questo punto pronti per analizzare lo schema a blocchi funzionale del componente, visibile in Figura 5.
Possiamo subito riconoscere i componenti principali del sensore, già elencati in precedenza, nonché i pin utilizzati per l’alimentazione e per l’interfacciamento con il sistema host. Osserviamo anche la presenza delle consuete resistenze di pull-up sulle linee utilizzate dall’interfaccia I2C: tali linee sono tratteggiate in quanto potrebbero non essere sempre necessarie (ad esempio, nel caso in cui esse siano disponibili in forma integrata nei pin di input/output del microcontrollore host). Nonostante il sensore Si7005 sia un circuito integrato CMOS a segnali misti di tipo convenzionale, i sensori di umidità relativa in generale e, in modo particolare quelli basati sull’utilizzo di dielettrici polimerici, presentano delle caratteristiche uniche e non convenzionali che occorre tenere in debita considerazione. Vediamo di elencare queste caratteristiche e vedere in cosa esse consistono:
- necessità di proteggere il sensore durante la fase di assemblaggio della scheda, in particolare nella fase di saldatura del componente sul PCB. È, inoltre, necessario provvedere, successivamente, alla reidratazione del componente;
- necessità di proteggere il sensore dai danneggiamenti e dalla contaminazione con vari tipi di sostanze, che può avvenire durante il ciclo di vita del componente stesso;
- impatto sul sensore prodotto dalla lunga esposizione a valori estremi di temperatura o umidità relativa; questi possono infatti pregiudicare a lungo andare l’accuratezza del sensore;
- l’effetto “memoria” del sensore;
- la necessità di applicare un fattore di correzione e una linearizzazione ai valori misurati dal sensore.
Vedremo ora di analizzare separatamente alcuni dei fattori sopra elencati.
ACCURATEZZA DEL SENSORE DI UMIDITÀ RELATIVA
Per determinarne con precisione l’accuratezza, il sensore di umidità relativa viene collocato in una apposita camera in cui sia la temperatura che l’umidità sono accuratamente controllate. La temperatura viene inizialmente impostata ad un opportuno valore prefissato (tipicamente 30 °C), mentre il grado di umidità viene fatto variare inizialmente tra il 20 e l’80%, e successivamente riportato al valore iniziale del 20% con i seguenti step: 20% – 40% – 60% – 80% – 80% – 60% – 40% – 20%. In corrispondenza di ogni variazione del valore di umidità relativa, la camera viene lasciata stabilizzare per un periodo di 30 minuti prima di eseguire la lettura successiva con il sensore. L’andamento che si ottiene è quello illustrato in Figura 6. L’accuratezza di umidità relativa (RH) viene a questo punto definita dalla linea centrale (tratteggiata) evidenziata in Figura 6, la quale è a sua volta pari alla media aritmetica dei due valori associati ad ogni set-point di umidità relativa (gli step elencati precedentemente). Nel caso riportato in Figura 6, il sensore mostra un’accuratezza pari allo 0,25% RH.
LINEARIZZAZIONE
I sensori di umidità relativa di tipo capacitivo (quindi come il Si7005) richiedono necessariamente un’operazione di linearizzazione al fine di ridurre l’entità degli errori di misurazione. La linearizzazione consigliata si basa sulla correzione del valore misurato tramite un polinomio di secondo ordine. In particolare, il valore di umidità relativa lineare è dato dalla seguente formula:
RHLinear = RHValue – ((RHValue)2 x A2 + RHValue x A1 + A0)
dove:
- RHValue è il valore misurato (non corretto) di umidità relativa espresso in % RH
- RHLinear è il valore di umidità relativa corretto, espresso in % RH, A2, A1, A0 sono dei coefficienti di correzione adimensionali ottenuti dalla linearizzazione del sensore Si7005 eseguita da Silicon Labs. Valori tipici per questi coefficienti sono indicati nella tabella di Figura 7.
COMPENSAZIONE DELLA TEMPERATURA
Il sensore di umidità relativa Si7005 viene calibrato in fabbrica alla temperatura di 30 °C, ed è pertanto questo il valore di temperatura in corrispondenza del quale il sensore fornisce le misure più accurate. Quando si eseguono misure di umidità relativa con valori differenti di temperatura, la lettura RH deve essere compensata per tenere conto della variazione di temperatura rispetto al valore nominale di 30 °C. Tale compensazione può essere calcolata in base alla seguente formula:
RHTempCompensated = RHLinear + (Temperature – 30) x RHLinear x Q1 + Q0)
dove:
- RHTempCompensated è il valore di umidità relativa, espresso in % RH, compensato in temperatura
- RHLinear è il valore di umidità relativa corretto, espresso in % RH
- Temperature è la temperatura ambiente, espressa in °C, misurata dal sensore di temperatura interno al componente Si7005
- Q1 e Q0 sono due coefficienti di correzione adimensionali ottenuti dalla linearizzazione del sensore Si7005 eseguita da Silicon Labs. La compensazione risulta maggiormente accurata per valori di temperatura compresi tra 15 e 50 °C. Valori tipici per questi coefficienti sono indicati nella tabella di Figura 8.
ISTERESI
La mescola impiegata nella pellicola assorbente del sensore (dielettrico polimerico) comporta un effetto memoria determinato dalla sua esposizione pregressa, in particolar modo quella più recente. Un sensore esposto a valori di umidità relativa bassi avrà un offset negativo rispetto ai valori di calibrazione, mentre un sensore esposto a valori di umidità relativa elevati avrà un offset positivo rispetto ai valori di calibrazione. Ne consegue un effetto isteresi, indicato dalle due linee in grassetto superiore ed inferiore di Figura 6. Nel caso illustrato in Figura 6, l’errore dovuto all’isteresi è pari a ± 1,05 % RH.
ESPOSIZIONE PROLUNGATA
L’esposizione prolungata ad elevati valori di umidità comporta l’insorgenza graduale di fenomeni di deriva verso l’alto della misura di umidità relativa. Questo effetto deriva, normalmente scompare quando le condizioni di umidità esterne si riportano a valori normali. L’entità di questo effetto è proporzionale al valore dell’umidità relativa e alla durata dell’esposizione.
INTERFACCIA CON L’HOST
Il sensore Si7005 è provvisto di un’interfaccia di comunicazione seriale I2C con un indirizzo a 7-bit preimpostato con il valore esadecimale 0x40. Il sensore si comporta come un dispositivo slave, ed è in grado di supportare velocità di comunicazione con data rate fino a 400 kHz. Una panoramica dei principali registri utilizzati dall’interfaccia I2C è visibile in Figura 9.
MISURA DI UMIDITÀ RELATIVA
Per eseguire una lettura di RH occorre compiere in sequenza i seguenti step:
1. impostare ad 1 il bit START (D0) nel registro CONFIG al fine di iniziare una nuova conversione
2. monitorare il bit RDY (D0) del registro STATUS (registro 0) sino a quando il suo valore diventa pari a 0
3. leggere i due byte superiore e inferiore della misura RH dai registri DATAh e DATAl (registri 0x01 e 0x02)
4. convertire il valore letto in RH% applicando la seguente formula: %RH = (RH/16) – 24
5. applicare la compensazione di temperatura e/o la linearizzazione viste precedentemente
MISURA DI TEMPERATURA
Per eseguire la misura di temperatura occorre aggiungere alla precedente sequenza degli ulteriori step, come ora indicato:
6. impostare ad 1 i bit START (D0) e TEMP (D4) del registro CONFIG (registro 0x03) al fine di iniziare una nuova conversione
7. monitorare il bit RDY (D0) del registro STATUS (registro 0) sino a quando il suo valore diventa pari a 0
8. leggere i due byte superiore e inferiore della temperatura dai registri DATAh e DATAl (registri 0x01 e 0x02, rispettivamente). Tale valore può essere convertito in gradi centigradi utilizzando la seguente equazione: Temperature (°C) = (TEMP/32) – 50, dove TEMP è il valore di temperatura contenuto nei byte DATAh:DATAl
CONVERSIONE VELOCE
Il tempo necessario per eseguire una misura di temperatura o di umidità relativa RH può essere ridotto dal valore tipico (pari a circa 35 ms) sino ad un valore di circa 18 ms, impostando a 1 il bit FAST (D5) del registro CONFIG (registro 0x03). La modalità veloce (FAST) comporta una riduzione sensibile della potenza totale assorbita durante la conversione, ma riduce altresì la risoluzione della misura, che quindi subisce un certo degrado a livello di precisione. In Figura 10 vengono messe a confronto le due modalità di conversione, normale e veloce, analizzando le variazioni ottenute in termini di velocità e risoluzione ottenuta.
HEATER
Il sensore Si7005 dispone anche di un circuito interno di riscaldamento, di tipo resistivo, che può essere attivato per limitare gli effetti di memoria in condizioni di elevato grado di umidità. Questa modalità viene abilitata impostando ad 1 il bit HEAT (D1) del registro CONFIG (registro 0x03). Come è lecito aspettarsi, quando questa funzione è attiva, la misura di temperatura del sensore fornisce un valore leggermente superiore a quello reale.
ESEMPIO DI COLLEGAMENTO
Il sensore Si7005 presenta la caratteristica di interfacciarsi in modo semplice e rapido con un microcontrollore esterno, richiedendo un esiguo numero di componenti addizionali. In Figura 11 possiamo osservare uno schema di collegamento classico. I valori delle due resistenze di pull-up sul bus I2C dipendono dalle capacità presenti sulle linee del bus stesso e dalla velocità di comunicazione desiderata.
In questa configurazione, l’abilitazione del sensore viene eseguita tramite il pin CS (attivo basso) controllato direttamente da un pin del microcontrollore. Nel caso di applicazioni in cui sia richiesto un assorbimento di potenza molto ridotto, come ad esempio in tutte le applicazioni alimentate a batteria, è conveniente ricorrere allo schema di Figura 12, in cui l’alimentazione del sensore è controllata da un pin GPIO dell’MCU.