Home →
Progetti → PIC-WL-Sen →
Durata delle batterie
In questa pagina si riporta l'analisi del consumo energetico del sensore wireless
PIC-WL-Sen al fine di stimare la durata della
batteria. Quanto qui descritto deve essere ritenuto come frutto di
un'analisi preliminare solo in parte già validata con prove
sul campo.
Il
PIC-WL-Sen di riferimento utilizza il solo sensore di temperatura LM75A
ed è alimentato da una batteria al litio CR2032.
Analisi teorica
Per mantenere bassi i consumi medi di energia la tecnica universalmente
adottata con i sensori wireless è quella di alternare due fasi:
- un breve periodo attivo, con un assorbimento di corrente
relativamente elevato
- un periodo di standby, con assorbimento di corrente molto
basso e durata nettamente più lunga del precedente
La batteria ha una durata che, in ore, può essere stimata come rapporto tra
la sua capacità espressa in mAh e la
media pesata della corrente in mA (nota
1). Per esempio:
- periodo attivo: 100 ms, con assorbimento 5 mA
- standby: 1 s, con assorbimento di 50 µA
- capacità della batteria: 200 mAh
Corrente media: (0,1 * 5 + 1 * 0,05) / 1,1 = 0,5 mA
Durata della batteria: 200 mAh / 0,5 mA = 400 ore (circa 17 giorni)
L'assorbimento di corrente di questo processore (come di tutti i circuiti
CMOS) dipende il larga parte dalla frequenza di funzionamento e
dall'eventuale carico collegato alle sue uscite. Nelle figure seguenti è
mostrato l'assorbimento per diverse frequenze in assenza di carico e quando
viene acceso un LED. I risultati sono coerenti con i fogli
tecnici.
La scelta della frequenza operativa dipende dall'applicazione, tenendo
conto che:
- frequenze di clock maggiori significano maggior consumo istantaneo,
ma anche minor tempo per
completare i calcoli e quindi, a volte, minor consumo di energia
- non sempre le batterie di piccola dimensione sono in grado di
erogare le correnti richieste dalla frequenze di clock maggiori
- al di sotto di certi limiti, la diminuzione di frequenza non porta a
significative diminuzioni della corrente a causa di componenti dal
consumo costante
La corrente di standby della versione eXtreme Low-Power
del processore
(PIC18LF26k22) è molto bassa ed al di sotto del limite misurabile con
strumenti generici. Ad essa occorre aggiungere la corrente del watchdog
timer necessario al risveglio periodico del processore (nota
2), raggiungendo il valore di 320 nA, trascurabile rispetto alla
corrente richiesta dagli altri componenti presenti sul
PIC-WL-Sen.
Al fine di mantenere basso il consumo durante lo standby è necessario
evitare gli ingressi digitali, disattivare i dispositivi analogici interni (in
particolare ADC e riferimento di tensione) ed usare altre tecniche descritte
per esempio nella nota applicativa AN1416.
Questo circuito ha tre stati principali per quanto riguarda il consumo
energetico:
- lo stato attivo (in trasmissione o ricezione): il
consumo è di oltre 10 mA
- uno stato di standby con assorbimento di circa 25 µA; è caratterizzato
dall'elevata velocità con cui può passare allo stato attivo
- uno stato di power down con assorbimento inferiore ad 1 µA.
Il risveglio richiede un tempo di svariati millisecondi.
La scelta tra standby e power down durante la fase non
attiva dipende dalla frequenza con cui sono effettuate le misure; l'esempio
che trovate al termine di questa pagina usa la modalità power down in quanto
pensato per rilevare la temperatura poche volte al minuto.
Un impatto importante sul consumo deriva dall'adozione o meno di tecniche
di ritrasmissione dei pacchetti in caso di errori di ricezione. La
correzione degli errori può essere gestita autonomamente da
nRF24L01+ attraverso le
modalità di automatic packet transaction handling descritte nei
fogli tecnici. La scelta (tutt'altro che definitiva!) è stata quella di non
utilizzare metodi di correzione degli errori tramite ritrasmissione, per due motivi:
- l'attesa dell'ACK implica un significativo aumento del tempo di
attività del modulo RF e quindi del consumo.
- la perdita occasionale di misure non è significativa per il
funzionamento del sistema, soprattutto nell'ipotesi di avere numerosi
sensori attivi contemporaneamente e di trasmettere misure con una frequenza
nettamente superiore alle costanti termiche dell'ambiente di misura
Al fine di mitigare l'impatto degli errori, se ritenuto necessario, è
comunque possibile ritrasmettere più volte la stessa misura.
Per scegliere gli altri parametri con cui configurare il trasmettitore occorre considerare anche ulteriori aspetti:
- velocità di trasmissione maggiori implicano minore sensibilità del
ricevitore e quindi maggiori probabilità di errore (o minori distanze
raggiunte)
- velocità di trasmissioni maggiori implicano minor tempo di
trasmissione e quindi minori consumi e rischi di collisioni
- la lunghezza del frame ha impatti diretti sul tempo di trasmissione
e quindi sul consumo
Il sensore LM75A
Questo circuito ha tre stati per quanto riguarda il consumo energetico:
- il normal mode, con assorbimento di circa 100 µA. In questo
stato viene effettuata la misura di temperatura, impiegando un tempo di
circa 100 ms (nota 3)
- il normal mode durante il trasferimento di dati con il bus
I2C, con assorbimento di circa 1 mA
- lo shutdown mode, con assorbimento di circa 3 µA
LM75A ha due grossi problemi nel funzionamento in
applicazioni a basso consumo:
- ha un elevato consumo durante lo standby: 3 volte superiore a quello del
modulo radio e 10 volte a quello del processore
- (soprattutto) richiede la maggiore tensione di alimentazione per il corretto
funzionamento: 2,8 V minimo, rispetto a meno di 2 del processore e
dell'apparato radio. Questo fatto limita la durata della batteria in
modo significativo (nota 4)
Il suo uso è quindi giustificato solo per il costo contenuto (circa 0,10
€) e dalla facile reperibilità.
Questa batteria ha una capacità nominale di 210-240 mAh (nota
5), valore che si riduce sensibilmente quando l'assorbimento di corrente è
elevato oppure a bassa temperatura.
La tensione dipende da una serie di aspetti:
- Il legame tra temperatura e tensione non è dato dal produttore, ma
sperimentalmente la tensione a vuoto scende di circa 50 mV ogni 10 °C.
Questo aspetto è rilevante nel caso di misure all'aperto, meno
all'interno di un edificio.
- La tensione di uscita dipende fortemente dalla corrente erogata, a causa
dell'elevata resistenza interna come mostrato per esempio nel
grafico seguente. In particolare viene
spesso indicata come ottimale una corrente media inferiore a frazioni di mA con picchi
di breve durata non superiori a 10-20 mA.
- L'autoscarica è circa l'uno percento
all'anno. in base ai dati del produttore
- Si è osservato che nelle prime ore d'uso la tensione erogata dalla
batteria scende molto velocemente, da 3,3 V a 3 V circa
- Infine, ovviamente, quando la batteria arriva a fine vita si osserva
una significativa e rapida diminuzione della tensione
I LED
Il circuito utilizza un LED RGB (Red, Green e Blue) come unico output
visibile. Questo componente ha un consumo molto
elevato e quindi va utilizzato con estrema moderazione.
I grafici seguenti mostrano l'aumento della
corrente quando viene acceso un LED con in serie una resistenza da 330 Ω: rispettivamente
un incremento di circa 3,4 mA, 2,2 mA e 1,8 mA per ciascun colore, da
confrontarsi con il consumo dell'intero processore, inferiore a 1 mA.
Altri componenti
L'assorbimento di corrente può essere infine aumentato da:
- corrente di perdita dei condensatori, in particolare quello
elettrolitico. Meglio utilizzarne uno al tantalio
e/o uno
adatto per tensioni nettamente più elevate di 3 V.
- perdite causate dal circuito stampato sporco o con eccessivi residui
di flussante
La sperimentazione con i primi prototipi
Il consumo complessivo del PIC-WL-Sen dipende
dall'interazione tra i vari componenti hardware ed il software. Gli scopi
della prima fase della sperimentazione sono stati:
- individuare le migliori modalità per ridurre al minimo il consumo
complessivo di energia
- verificare il corretto funzionamento dell'architettura hardware e software
per un tempo relativamente esteso
- valutare la correttezza del modello usato per stimare la durata
della batteria
I due prototipi utilizzati in questa prima sperimentazione avevano le seguenti
caratteristiche comuni:
- il sensore effettua una misura ogni secondo circa. Questa frequenza
di campionamento è
evidentemente eccessiva, ma è stato scelta per mantenere i tempi
del test relativamente brevi
- processore, sensore e trasmettitore sono posti in standby tra due misure
successive
- il processore usa due frequenze di clock, 1 e 16 MHz, a seconda
della potenza di calcolo richiesta
Il secondo prototipo, nato durante la breve esperienza con il primo:
- utilizza un PIC18LF25K22 invece che un PIC18F25K22.
La differenza è stata significativa nel consumo di corrente durante la
fase di standby, passata da 50 µA a 5 µA.
- utilizza un condensatore bulk decisamente più grande (C2 = 220 µF
invece che 10 uF), con una netta diminuzione della corrente di picco
erogata dalla batterie e quindi attenuando gli effetti negativi della
sua resistenza interna
- riduce al minimo il tempo di accensione del LED. Ovviamente è anche
possibile non accendere per nulla il LED...
La sperimentazione è stata condotta ad una temperatura ambiente compresa tra 16 °C
e 22 °C.
Consumo di corrente
Il grafico seguente, relativo al primo
prototipo, mostra la corrente assorbita
durante le varie fasi:
- durante lo standby l'assorbimento è di circa 50 µA (un
decimo nel secondo prototipo)
- il watchdog attiva il processore con clock a 16 MHz che a
sua volta accende il LED rosso ed il sensore LM75A
- il processore diminuisce la sua frequenza di clock a 1 MHz ed
attende per 100 ms che il sensore termini la misura (nota
3)
- il processore imposta nuovamente il clock a 16 MHz e spegne il
sensore LM75A
- il processore misura la tensione di alimentazione ed elabora la
stringa da trasmettere
- nRF24L01+ trasmette il frame contenente temperatura e tensione
- il processore spegne nRF24L0+ ed il LED e torna in standby
Nel secondo prototipo l'andamento della corrente è simile anche se,
soprattutto grazie al minor tempo di accensione del LED, la corrente media è
passata da circa 5 mA ad un decimo; inoltre grazie al condensatore
elettrolitico più grande la corrente massima è scesa da 16 mA a 3 mA, pur
rimanendo invariata quella media.
Tensione di alimentazione
Il grafico seguente, anch'esso relativo al primo prototipo, mostra il valore
istantaneo della tensione di alimentazione (nota
7); esso è sovrapponibile al precedente le significative variazioni sono causate dalla resistenza interna
della batteria. Si noti in particolare che:
- la tensione di alimentazione durante la misura della temperatura (fase 3)
è significativamente inferiore a quella a vuoto
- la tensione di alimentazione misurata dal PIC (fase 5) è inferiore a
quella presente durante la misura della temperatura. Nei grafici
mostrati si è tenuto conto
di tale errore sistematico.
- la tensione durante la trasmissione (fase 6) crolla a circa 2 V, un valore
prossimo a quello minimo di funzionamento del processore e del
trasmettitore.
Il secondo prototipo ha mostrato minori diminuzioni della tensione di
alimentazione, soprattutto nella fase 6.
Prima sperimentazione
I test preliminari sono stati condotti utilizzando una frequenza di campionamento di
circa un hertz, dalle 10 alle 100 volte superiore a quella che può essere
considerata una scelta ragionevole. Questo ha permesso di concludere i test
in meno di tre mesi, fino alla scarica della batteria (nota 5).
Il grafico che segue mostra l'andamento della tensione di
alimentazione nei due prototipi, partendo da una batteria nuova:
- la linea nera è relativa al primo prototipo,
quella rossa al secondo
- il punto blu
indica la minima tensione raccomandata per il funzionamento di LM75A
(nota
4); i corrispondenti 11 o 69 giorni possono quindi essere considerati la
durata operativa della batteria
- il sensore ha funzionato correttamente fino al punto verde.
Durante questo tempo le misure sono rimaste accurate, probabilmente
grazie al fatto che la temperatura ambiente non è mai scesa a valori
molto bassi
- la trasmissione di dati
è proseguita per altri giorni, ma il valore della temperatura non può
essere ritenuto significativo, essendo stato sempre costante oppure pari a zero. Si osservi
che, a causa del picco negativo nella tensione di alimentazione (punto 6
nel grafico precedente, relativo al primo prototipo), la trasmissione si è interrotta prima di quanto
lecito aspettarsi dalle specifiche fornite dal produttore del
nRF24L01+ e del
PIC18LF2xK22,
garantiti rispettivamente per funzionare a 1,9 V e 1,8 V.
Nella tabella a fine pagina è riportata nelle prime
due
colonna la sintesi di dati di questa prima sperimentazione.
Seconda sperimentazione
Questa seconda sperimentazione (nota 9) utilizza il codice che
potete scaricare a fondo pagina. Rispetto alle
impostazioni utilizzate nella precedente sperimentazione sono stati
introdotti alcuni accorgimenti per rendere hardware e software adatti ad
essere usati sul campo. In particolare è stata ulteriormente ridotta la
corrente media nella fase attiva ponendo in idle la CPU durante la
misura della temperatura e disattivando l'ADC nella fase attiva quando non
in uso.
Inoltre, aspetto che ha peggiorato la durata a fronte di una maggiore
affidabilità, è stata è stato
prolungato da 100 ms a 300 ms il tempo di attesa nella conversione di LM75A in
quanto i fogli tecnici NXP si limitano ad indicare il valore tipico di 100
ms (nota 6).
Il grafico seguente mostra l'andamento istantaneo della corrente: la
linea rossa nel caso in cui C2 = 10 µF (utile solo durante le fasi di
analisi ed ottimizzazione del software) e quella blu con C2 = 220
µF, valore
tipico dell'utilizzo reale. Esaminiamo il suo andamento, in riferimento alla
curva rossa (ingrandita nella seconda figura):
- durante lo stanby la corrente è di circa 5 µA
- al risveglio il clock del processore è 16 MHz, viene risvegliato
LM75A che inizia autonomamente a misurare la temperatura. Viene inoltre
impostato il clock a 32 kHz e avviato Timer1 che genererà una
interruzione dopo 300 ms. Quindi il processore si pone in idle
con praticamente tutte le periferiche interne spente (ad eccezione di
Timer1)
- in questa fase LM75A misura la temperatura ambiente (nota
6). Il consumo di corrente è circa 100 uA, quasi esclusivamente
dovuto a LM75A stesso
- Timer1 risveglia la CPU, la frequenza della CPU viene impostata
prima a 16 MHz, poi a 1 MHz. Viene letta la temperatura, spento LM75A e
misurata la tensione di alimentazione. Infine nRF24L01+ passa da
power down a standby
- la frequenza della CPU è impostata a 16 MHz, viene acceso il LED e
viene predisposto il frame da trasmettere
- il LED è spento
- il frame è trasmesso
- il PIC torna in standby
Nella tabella a fine pagina è riportata nella ultime
tra colonne la sintesi di tali dati e la stima della durata della batteria
che ragionevolmente potrà essere di due anni.
Durata presunta della batteria
La tabella seguente mostra la durata calcolata di una batteria CR2032
con capacità nominale 210 mAh, nelle condizioni descritte in questa pagina.
Sono anche riportati i dati sperimentali, quando disponibili.
I due dati più significativi sono:
- l'energia necessaria per trasmettere un frame, indipendente
dalla frequenza di campionamento
- la corrente media, utile per valutare la durata della batteria se,
come spesso succede, è nota la capacità in mAh.
La durata teorica della batteria è semplicemente ottenuta dividendo la capacità
nominale per la corrente media (nota 5)
Le ultime due righe sono relative alla durata sperimentale dell'attività del
sensore:
- La penultima riga indica la durata reale della batteria in
condizioni tali da garantire i valori raccomandati di tensione per il
funzionamento di LM75A (nota
4).
- L'ultima riga è relativa al tempo per cui il circuito si è mantenuto
effettivamente operativo, trasmettendo valori corretti di temperatura. Ovviamente
meglio non fare troppo affidamento su tale valore
Durata dello standby |
1 |
1 |
1 |
8 |
35 |
s |
Durata della fase attiva |
0,12 |
0,45 |
0,55 |
0,55 |
0,55 |
s |
|
|
|
|
|
|
|
Corrente durante lo standby |
50 |
5 |
5 |
5 |
5 |
µA |
Corrente media durante la fase attiva |
4800 |
400 |
160 |
160 |
160 |
µA |
|
|
|
|
|
|
|
Energia per trasmettere un frame |
1600 |
500 |
250 |
250 |
250 |
µJ |
Corrente media |
560 |
130 |
60 |
15 |
7 |
µA |
|
|
|
|
|
|
|
Durata teorica della batteria |
371 |
1646 |
3500 |
14027 |
28386 |
Ore |
Durata teorica della batteria |
16 |
69 |
146 |
584 |
1183 |
Giorni |
Durata sperimentale della batteria (VDD > 2.8 V) |
11 |
53 |
- |
640 (min) |
- |
Giorni |
Durata sperimentale della batteria (funzionamento
effettivo) |
16 |
71 |
- |
860 (min) |
- |
Giorni |
Il grafico seguente mostra la tensione della
batteria misurata con un pool di otto sensori in produzione
presso l'auditorium di
Casatenovo dal 2 gennaio 2018 al 10 ottobre 2020 (nota 10).
Alcune osservazioni:
- Vi è una significativa dipendenza tra tensione della batteria e
temperatura ambiente. La cosa è ben visibile nel periodo invernale
durante l'accensione del riscaldamento nei finesettimana ed in estate
- Nella prima settimana di funzionamento la tensione della batteria
crolla da 3.2 V a 3.0 V
- Due sensori (Sottopalco2, linea rossa, poco visibile nel
grafico e Galleria alta, linea blu) si sono guastati durante la sperimentazione, per motivi
non identificati, ma probabilmente indipendenti dalla batteria scarica
- Dopo 21 mesi di funzionamento, la tensione di alimentazione di uno
dei sensori (Bar, linea verde) è scesa sotto la soglia di 2.8
V, tensione minima per la quale è garantito il funzionamento di tutti i
circuiti integrati
- Dopo 28 mesi di funzionamento, uno
dei sensori (Bar, linea verde) ha smesso di funzionare
correttamente a causa della batteria scarica
- Due sensori hanno continuato a funzionare fino al temine della
sperimentazione,
34 mesi dopo l'inizio
Note
- Per un'analisi dettagliata occorrerebbe tenere conto dell'energia
consumata, della resistenza interna, della temperatura, della non
linearità del carico: anche alla luce
della nota 5, ciò renderebbe (inutilmente) complessa
l'analisi...
- Il watchdog del PIC18 può funzionare anche in modalità
wake-up timer
- Tale tempo è indicato sui fogli tecnici solo come valore tipico
- I fogli
tecnici di LM75A raccomandano una tensione minima di alimentazione 2.8 V (NXP,
valore utilizzato)
oppure 2,7 V (TI). Prove sperimentali hanno mostrato che a 2.3 V e
temperatura ambiente il componente è ancora funzionante
- Il valore della capacità della batteria dipende anche dalla definizione di "batteria scarica": in genere i produttori
considerano scarica una batteria con tensione pari a 2,0 V; in questa
applicazione la batteria può invece essere considerata scarica quando la
tensione scende sotto i 2,8 V
- Il valore di 300 ms, forse
eccessivo, è indicato solo sui fogli tecnici TI come valore massimo del
tempo di conversione
- Questo grafico è relativo ad una batteria praticamente scarica
- La procedura utilizzata per misurare la tensione di alimentazione è
corretta solo se VDD > 2.05 V circa
- Sono installati otto sensori dal gennaio 2018 presso l'auditorium
di Casatenovo ed una ventina dal marzo 2018 presso il
municipio di Casatenovo
- Il grafico utilizza i dati in un database
InfluxDB
ed è realizzato con
Grafana
Data di creazione di questa pagina: ottobre 2017
Ultima modifica: 12 ottobre 2020