Implementazione veloce di funzionalità di clock/calendario in tempo reale efficienti in progetti embedded

Di Steve Leibson

Contributo di Editori nordamericani di Digi-Key

Molte applicazioni embedded devono sapere l'ora per attivare determinate attività nel momento giusto e/o per registrare la data degli eventi. I chip RTCC (calendario e clock in tempo reale) disponibili da decenni assolvono a questa funzione, ma i progettisti si trovano di fronte alla sfida di dover ridurre il numero e l'ingombro dei componenti, riducendo al minimo il consumo energetico e i tempi di progettazione.

I dispositivi RTCC integrati e moduli innovativi stanno risolvendo queste difficoltà.

Questo articolo è incentrato sulla selezione di un chip RTCC e su come progettarlo rapidamente in un sistema embedded, riducendo al minimo lo spazio e il consumo energetico. Verranno presi in esame anche MCU con RTCC incorporati e l'uso di moduli RTCC disponibili per facilitare la prototipazione con RTC a montaggio superficiale e altri componenti.

I chip RTCC incorporati nei moduli sono in genere supportati dalle librerie Arduino e da overlay di driver Raspberry Pi Raspbian che possono semplificare la sperimentazione e la prototipazione con questi dispositivi.

Il ruolo degli RTCC

Molte applicazioni embedded devono tener traccia del tempo rispetto al mondo reale con un consumo energetico minimo, lasciando libero il processore principale per altre attività.

Tuttavia, da solo, un chip RTCC non può fare molto. Richiede un cristallo preciso per la temporizzazione, possibilmente termostabilizzato per garantire un risultato molto accurato, e una batteria ausiliaria per continuare la temporizzazione anche quando il sistema integrato è spento. Questi componenti ausiliari definiscono la capacità dell'RTCC di svolgere i suoi due compiti principali:

  1. Mantenere data e ora costantemente precise in qualsiasi condizione
  2. Assorbire l'energia più bassa possibile quando il resto del sistema embedded viene spento

Alcuni microcontroller incorporano RTCC

Alcuni microcontroller, come PIC32MZ2064DAA288 a 32 bit di Microchip Technology, incorporano un blocco RTCC interno. Potrebbe sembrare una buona idea usare un dispositivo del genere per la progettazione di un sistema che richiede una temporizzazione precisa, specie dal momento che il microcontroller PIC32MZ2064DAA288 commuterà automaticamente l'alimentazione interna al pin di ingresso della batteria (VBAT) quando sui pin di normale alimentazione del microcontroller (VDDCORE e VDDIO) la tensione è insufficiente per alimentare il dispositivo.

Tuttavia, tali dispositivi pongono altre problematiche che riguardano direttamente le due attività essenziali elencate sopra: temporizzazione accurata e funzionamento a basso consumo.

Innanzitutto, il blocco RTCC del microcontroller PIC32MZ2064DAA288 richiede un cristallo a 32.768 Hz collegato ai suoi due pin dell'oscillatore secondario per la temporizzazione precisa mentre il microcontroller è spento. Sebbene sia possibile utilizzare l'oscillatore principale del microcontroller in modo che funzioni con il blocco RTCC, tale dispositivo smette di funzionare quando il microcontroller è in sospensione profonda.

L'RTCC su chip incorpora un registro di calibrazione e Microchip fornisce una procedura di calibrazione in grado di ridurre l'errore di misurazione del tempo a 0,66 secondi al mese per frequenze dell'oscillatore a cristallo fino a 260 ppm. Tuttavia, la calibrazione fissa non tiene conto della variazione di temperatura, che può influire anche sulla frequenza dell'oscillatore e quindi sulla precisione della misurazione.

In secondo luogo, il microcontroller non si spegne completamente quando passa all'alimentazione a batteria, ad eccezione del blocco RTCC. Altri blocchi nel microcontroller possono essere abilitati o meno durante il funzionamento a batteria tramite impostazioni del software. In questo caso il problema risiede nel fatto che l'assorbimento dalla batteria e la durata diventano dipendenti dal software.

Questo aspetto non è esclusivo del microcontroller PIC32MZ2064DAA288. Si verificherà anche con qualsiasi microcontroller che incorpora un blocco RTCC. L'uso di un chip RTCC separato risolve il problema isolando in modo pulito la funzione di temporizzazione dal microcontroller ed è anche l'unica scelta progettuale quando il microcontroller non ha un RTCC interno.

Chip e moduli RTCC

I progettisti utilizzano da decenni chip RTCC separati per misurare il tempo in una varietà di applicazioni embedded e di elaborazione. Anche se diversi fornitori di circuiti integrati offrono ora tali chip, la tecnologia SMT (montaggio superficiale) ha complicato la valutazione dei chip RTCC, perché i dispositivi non possono essere saldati a mano o inseriti negli zoccoli.

Una buona soluzione consiste nell'utilizzare moduli a basso costo basati su questi chip RTCC che eliminano le difficoltà di prototipazione associate ai circuiti integrati miniaturizzati a montaggio superficiale. Questi moduli incorporano anche batterie, in genere celle a bottone, per mantenere l'alimentazione anche quando il sistema principale è spento.

Un buon esempio è il modulo 255 Chronodot di Adafruit (Figura 1). Tali moduli sono utili per la valutazione dei chip RTCC, per il montaggio sperimentale di un circuito e per la prototipazione e spesso anche per la produzione di serie.

Immagine di 255 Chronodot di Adafruit

Figura 1: 255 Chronodot di Adafruit incorpora un chip RTCC e una batteria in un modulo a foro passante. (Immagine per gentile concessione di Adafruit)

La Tabella 1 elenca sei diversi moduli RTCC basati su tre diversi chip RTCC di due produttori di integrati.

Modulo RTCC Chip RTCC Interfaccia Batteria Durata min della batteria (tip.)
DFRobot DFR0151 Maxim DS1307 I²C CR1225 9 (17) anni
SparkFun BOB-12708 Maxim DS1307 I²C CR1225 9 (17) anni
Adafruit 3103 Maxim DS3231 I²C CR1220 NP
Adafruit 255 Chronodot Maxim DS3231 I²C CR1632 8 anni
Maxim DS3231MPMB1# Maxim DS3231 I²C CR1025 NP
STM STEVAL-FET001V1 STMicro M41T62 I²C Esterno NP

Tabella 1: Sei moduli RTCC rappresentano l'ampia disponibilità e varietà di questo tipo di moduli. (Fonte dati: Digi-Key Electronics)

I moduli RTCC, come i sei elencati nella Tabella 1, facilitano l'aggiunta della temporizzazione ai sistemi prototipo. Uno sguardo più ravvicinato su come sono progettati questi moduli rivela informazioni utili per lo sviluppo di una scheda che incorpora il chip RTCC sottostante.

La prima cosa che si nota nella Tabella 1 è che tutti questi moduli RTCC condividono una cosa in comune, un'interfaccia I2C. I primi chip RTCC degli anni '70 emulavano piccole SRAM usando indirizzi paralleli e bus di dati. Quella era un'epoca in cui i bus paralleli su microprocessore erano comuni e i protocolli seriali integrati non erano ancora diffusi.

Oggi, i protocolli seriali chip-chip, in particolare I2C, sono l'interfaccia privilegiata per le periferiche che richiedono una larghezza di banda relativamente ridotta. I chip RTCC sono sicuramente qualificati perché bastano pochissimi byte per trasferire le informazioni su data e ora.

I primi due moduli RTCC della Tabella 1, DFR0151 di DFRobot e BOB-12708 di SparkFun, sono entrambi basati sul chip RTCC DS1307 di Maxim Integrated, un dispositivo a 8 pin. A causa della sua popolarità, per i moduli basati su questo chip sono disponibili librerie Arduino e overlay di driver Raspberry Pi Raspbian.

L'RTCC DS1307 è dotato di pin separati per il rail di alimentazione e di batteria per fornire la commutazione automatica tra il rail di alimentazione del sistema embedded e la batteria ausiliaria quando l'alimentazione del sistema si interrompe (Figura 2).

Schema del chip RTCC DS1307 di Maxim Integrated

Figura 2: Il chip RTCC DS1307 di Maxim Integrated commuta automaticamente da VCC a VBAT quando la tensione al pin VCC scende circa sotto 4,5 V. (Immagine per gentile concessione di Maxim Integrated)

La Figura 2 mostra anche la connessione tra il chip RTCC DS1307 e un cristallo. Per i chip RTCC, si tratta quasi sempre di un economico cristallo da orologio a 32.768 Hz, come WATCH-2X6 di IQD Frequency Products. Questo cristallo introduce due nuovi fattori da prendere in considerazione quando si realizzano progetti con i chip RTCC.

Il primo è la stabilità del cristallo in funzione della temperatura. La maggior parte degli RTCC utilizza cristalli a "diapason" originariamente progettati per gli orologi da polso. Questi cristalli si discostano dalla loro frequenza nominale per influenza della temperatura (Figura 3).

Grafico della frequenza di risonanza di un cristallo a 32.768 Hz

Figura 3: La frequenza di risonanza di un cristallo a 32.768 Hz varia con la temperatura, il che influirà sulla precisione di misurazione del tempo dell'RTCC. (Immagine per gentile concessione di IQD Frequency Products)

La frequenza di risonanza del cristallo IQD WATCH-2X6 cambia a causa delle variazioni di temperatura, generando un errore di temporizzazione. Notare che uno scostamento di 20 ppm nella frequenza dell'oscillatore si traduce in circa un minuto di errore al mese.

Il secondo fattore si nasconde nell'estrema semplificazione della connessione tra il cristallo e il chip RTCC nella Figura 2. I pin di ingresso dei cristalli dei chip RTCC hanno tipicamente un'impedenza molto elevata, per cui i terminali del cristallo e le tracce della scheda si comportano come un'antenna. Questa "antenna" può mandare i segnali ad alta frequenza e il rumore dal resto del sistema all'oscillatore a cristallo all'interno dell'RTCC.

Qualsiasi disturbo accoppiato attraverso le tracce tra il cristallo e il chip RTCC può causare transizioni spurie nel circuito dell'oscillatore del chip RTCC, potenzialmente accelerando l'orologio. La soluzione risiede in un attento layout della scheda a circuiti stampati. Ciò include il posizionamento del cristallo il più vicino possibile ai pin dell'oscillatore del chip RTCC e il posizionamento di un piano di massa sotto i pin di ingresso del cristallo e per l'intero corpo di quest'ultimo (Figura 4).

Schema dell'area tratteggiata di rispetto sotto il contenitore dell'RTCC

Figura 4: Un attento layout della scheda a circuiti stampati sul piano di massa impedisce che disturbi indesiderati influiscano sulla precisione della misurazione del tempo del chip RTCC. (Immagine per gentile concessione di Maxim Integrated)

Inoltre, la Figura 4 mostra un'area tratteggiata di rispetto al di sotto del contenitore dell'RTCC per impedire che le tracce ravvicinate accoppino il rumore ai pin di ingresso del cristallo del chip RTCC. Se possibile, aggiungere un anello di guardia sullo strato della scheda che circondi il cristallo e i pin di ingresso del cristallo del chip RTCC per evitare che il rumore influisca sulla precisione di temporizzazione.

Eliminare dalla scheda il cristallo e integrarlo nel chip

Per ovviare ad alcune delle difficoltà relative al layout della scheda per un cristallo esterno, si può optare per l'RTCC M41T62 di STMicroelectronics dotato di un cristallo incorporato. Questo chip RTCC è disponibile sulla scheda di valutazione STEVAL-FET001V1 di STMicroelectronics, con l'ingombro di un DIP a 24 pin. Lo schema di questa scheda è riportato nella Figura 5. Sono disponibili una libreria Arduino e un overlay di driver Raspberry Pi Raspbian per M41T62.

Schema dell'RTCC M41T62 di STMicroelectronics

Figura 5: Il chip RTCC M41T62 di STMicroelectronics (al centro) è disponibile sulla scheda di valutazione STEVAL-FET001V1, ed è realizzato come DIP a 24 pin. (Immagine per gentile concessione di STMicroelectronics)

Come illustrato nello schema, M41T62 ha un solo pin VCC. Non ha un pin VBAT separato su cui commutare quando la rete di alimentazione principale è guasta perché il dispositivo, che misura solo 1,5 x 3,2 mm, è destinato all'uso in dispositivi indossabili e fotocamere digitali. In queste applicazioni embedded, la batteria è in genere l'unica fonte di alimentazione e lo spazio è limitato.

Notare che come fonte di alimentazione per M41T62 è anche possibile utilizzare un supercondensatore. In un sistema embedded, l'alimentatore del sistema o un caricatore possono essere collegati al pin VCC di M41T62 attraverso un diodo di blocco, D1 (Figura 6).

Il diodo dovrebbe essere di tipo a bassa dispersione, come 1N4148WS mostrato nella Figura 5 sopra, per prevenire lo scaricamento del supercondensatore verso l'alimentazione del sistema, quando il resto del sistema viene spento.

Schema del supercondensatore ricaricabile che alimenta il chip RTCC M41T62

Figura 6: È possibile utilizzare un supercondensatore ricaricabile per alimentare il chip RTCC M41T62. (Immagine per gentile concessione di STMicroelectronics)

La compensazione della temperatura doma il cristallo

Tre dei moduli RTCC elencati nella Tabella 1 (3013 e 255 Chronodot di Adafruit e DS3231MPMB1# di Maxim) sono basati sul chip RTCC DS3231 di Maxim (Figura 7). Insieme a un cristallo integrato, il dispositivo include un sensore di temperatura, che ne spiega il lungo nome ufficiale: "Extremely Accurate I²C-Integrated RTC/TCXO/Crystal".

Schema del chip RTCC DS3231 di Maxim

Figura 7: Il chip RTCC DS3231 integra il cristallo a 32.768 Hz, un sensore di temperatura e un array di condensatori commutati per mantenere la precisione di misurazione del tempo entro ±2 minuti all'anno. (Immagine per gentile concessione di Maxim Integrated)

Come mostrato nello schema a blocchi, l'oscillatore a cristallo compensato in temperatura (TCXO) DS3231 è costituito dal cristallo interno, un sensore di temperatura e un array di condensatori commutati. Come l'RTCC DS1307, DS3231 è dotato di pin separati per l'alimentazione principale (VCC) e per la batteria ausiliaria (VBAT).

Come con il chip RTCC M41T62 di STMicroelectronics, il chip RTCC DS3231 elimina le difficoltà implicite in un layout con cristallo esterno. Il suo TCXO riduce la variazione della precisione di temporizzazione causata da oscillazioni di temperatura. Il TCXO interno di DS3231 mantiene la precisione di misurazione del tempo del dispositivo entro più o meno 2 minuti all'anno in un intervallo di temperatura di funzionamento molto ampio tra -40 e +85 °C.

A causa della sua popolarità, per i moduli basati sul chip RTCC DS3231 esistono librerie Arduino e overlay di driver Raspberry Pi Raspbian.

Quanto dura la batteria?

Le batterie sono elementi "consumabili" che non dureranno per sempre. Quando si aggiunge un RTCC a un progetto embedded, è importante tenere presente la corrente richiesta dal chip RTCC per dimensionare opportunamente la batteria ausiliaria.

La durata della batteria in un'applicazione RTCC sarà determinata dall'assorbimento di corrente del chip RTCC mentre effettua la misurazione del tempo, dalla tensione operativa minima richiesta dal chip RTCC e dalla durata del tempo in cui la batteria fornirà la corrente richiesta prima che la sua uscita di tensione scenda sotto quella di funzionamento minima (Tabella 2).

Chip RTCC Corrente max batteria (nA) (tip.)
Maxim DS1307 300 (500)
Maxim DS3231 840 (3000)
STMicro M41T62 5000 (7000)

Tabella 2: I valori nominali di corrente della batteria per l'alimentazione dei chip RTCC aiutano a dimensionare la batteria ausiliaria appropriata. (Fonte dati: Digi-Key Electronics)

Per i moduli RTCC mostrati in precedenza nella Tabella 1, le batterie ausiliarie sono già state selezionate. Alcuni dei fornitori di moduli includono valori relativi alla durata della batteria sulle schede dati del modulo, anch'essi mostrati nella Tabella 1. Le batterie a bottone al litio sono attualmente il tipo preferito per questi moduli. I diametri variano tra 10, 12 e 16 mm. Ovviamente, maggiore è la capacità della batteria, maggiori sono lo spazio e il peso aggiunti, ma l'evidente vantaggio è la superiore durata della batteria per un dato assorbimento di corrente.

Conclusione

Occorre prestare attenzione quando si selezionano i dispositivi RTTC, quando si scelgono il cristallo e la batteria associati per garantire un funzionamento accurato e quando si prepara il layout della scheda a circuiti stampati. In alternativa, i moduli disponibili basati su chip RTCC forniscono una scorciatoia per il montaggio sperimentale di un circuito e per la prototipazione, riducendo notevolmente i tempi di sviluppo.

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 Digi-Key Electronics o le sue politiche.

Informazioni su questo autore

Steve Leibson

Steve Leibson è stato System Engineer per HP e Cadnetix, Editor in Chief per EDN e Microprocessor Report, blogger tecnologico per Xilinx e Cadence (solo per citarne alcuni), e ha collaborato come esperto di tecnologia in due episodi di "The Next Wave with Leonard Nimoy". Da 33 anni collabora con molti progettisti allo sviluppo di sistemi migliori, più veloci e più affidabili.

Informazioni su questo editore

Editori nordamericani di Digi-Key