Implémenter rapidement des fonctionnalités d'horloge/calendrier temps réel efficaces dans des conceptions embarquées

Par Steve Leibson

Avec la contribution de Rédacteurs nord-américains de Digi-Key

De nombreuses applications embarquées ont besoin de connaître l'heure pour exécuter des tâches particulières à une certaine heure et à une certaine date, ou pour horodater des événements, ou les deux. Les puces RTCC (horloge/calendrier temps réel) conçues pour exécuter cette fonction sont disponibles depuis des dizaines d'années, mais les concepteurs doivent trouver le moyen de réduire le nombre de composants et l'empreinte, tout en minimisant la consommation énergétique et les délais de conception.

Des dispositifs RTCC intégrés et des modules RTCC innovants ont été conçus pour relever ces défis.

Cet article aborde la façon de sélectionner une puce RTCC et de l'intégrer rapidement dans un système embarqué, tout en réduisant l'espace et la consommation énergétique. Il inclut une discussion sur les microcontrôleurs avec RTCC intégrés et sur l'utilisation des modules RTCC disponibles pour faciliter le prototypage avec des horloges temps réel et d'autres composants à montage en surface.

Les puces RTCC intégrées aux modules sont généralement soutenues par des bibliothèques Arduino et des couches (overlays) de pilotes Raspberry Pi Raspbian, qui permettent de simplifier l'expérimentation embarquée et le prototypage avec ces dispositifs.

Le rôle des RTCC

De nombreuses applications ont besoin d'effectuer un suivi temporel par rapport au monde réel avec une consommation énergétique minimale, tout en libérant le processeur principal pour d'autres tâches.

Cependant, une puce RTCC ne peut pas faire grand-chose à elle seule. Elle a besoin d'un quartz précis pour effectuer le suivi temporel, qui peut-être un quartz compensé en température pour un suivi temporel très précis, et d'une alimentation avec une batterie de secours qui permet d'effectuer le suivi temporel même si le système embarqué est mis hors tension. Ces composants auxiliaires déterminent la capacité de la puce RTCC à effectuer ses deux principales tâches :

  1. Maintenir constamment l'heure et la date exactes, quelles que soient les conditions
  2. Utiliser une puissance minimale lorsque le reste du système embarqué est désactivé

Certains microcontrôleurs intègrent des RTCC

Certains microcontrôleurs, tels que le microcontrôleur 32 bits PIC32MZ2064DAA288 de Microchip Technology, intègrent un bloc RTCC interne. Il peut sembler intéressant d'utiliser ce genre de dispositif pour la conception d'un système qui nécessite un suivi temporel précis, particulièrement du fait que le microcontrôleur PIC32MZ2064DAA288 bascule automatiquement l'alimentation interne vers sa broche d'entrée de batterie (VBAT) lorsque la tension est insuffisante sur les broches d'alimentation normales du microcontrôleur (VDDCORE et VDDIO) pour alimenter le dispositif.

Cependant, ces types de dispositifs soulèvent d'autres défis qui sont directement associés aux deux tâches principales des RTCC mentionnées ci-dessus : suivi temporel précis et fonctionnement basse consommation.

Premièrement, le bloc RTCC du microcontrôleur PIC32MZ2064DAA288 nécessite un quartz 32 768 hertz (Hz) fixé sur ses deux broches d'oscillateur secondaires pour maintenir la précision de l'heure pendant que le microcontrôleur est mis hors tension. Bien qu'il soit possible d'utiliser l'oscillateur d'horloge principal du microcontrôleur pour faire fonctionner le bloc RTCC, cet oscillateur cesse de fonctionner lorsque le microcontrôleur est en mode veille prolongée.

Le bloc RTCC intègre un registre d'étalonnage. En outre, Microchip fournit une procédure d'étalonnage qui permet de réduire les erreurs de suivi temporel de 0,66 seconde par mois pour des fréquences d'oscillateur à quartz réduites jusqu'à 260 parties par million (ppm). Cependant, l'étalonnage fixe n'est pas pris en compte dans la variation de la température, ce qui peut également avoir une incidence sur la fréquence d'oscillateur et, par conséquent, sur la précision du suivi temporel.

Deuxièmement, le microcontrôleur n'est pas entièrement désactivé lorsqu'il bascule vers l'alimentation par batterie, sauf pour le bloc RTCC. D'autres blocs dans le microcontrôleur peuvent être activés ou non lors du fonctionnement de la batterie, selon la commande envoyée par le logiciel. Le défi ici est que la décharge batterie et l'autonomie deviennent dépendantes du logiciel.

Ce défi ne concerne pas uniquement le microcontrôleur PIC32MZ2064DAA288. Ce sera le cas avec tout microcontrôleur qui intègre un bloc RTCC. L'utilisation d'une puce RTCC séparée permet de surmonter ce problème en isolant correctement la fonction de suivi temporel du microcontrôleur. Il s'agit également de l'unique choix de conception lorsque le microcontrôleur est dépourvu de RTCC interne.

Modules et puces RTCC

Depuis des décennies, les ingénieurs de conception utilisent des puces RTCC pour le suivi temporel dans diverses applications embarquées et informatiques. Si plusieurs fournisseurs de circuits intégrés offrent maintenant ces types de puces, la technologie de montage en surface (CMS) a compliqué l'évaluation des puces RTCC, car ces dispositifs ne peuvent pas être facilement connectés ou soudés à la main.

La solution idéale est d'utiliser des modules à faible coût basés sur ces puces RTCC qui permettent d'éliminer les défis de prototypage associés aux petits circuits intégrés à montage en surface. Ces modules intègrent également des batteries, généralement des piles boutons, pour maintenir l'alimentation même si le système principal est mis hors tension.

Le module 255 Chronodot d'Adafruit (Figure 1) constitue un bon exemple de ce type de module. Ces types de modules sont pratiques pour évaluer les puces RTCC, pour le montage d'essai et le prototypage, et même pour la fabrication en volume dans de nombreux cas.

Image du module 255 Chronodot d'Adafruit

Figure 1 : Le modèle 255 Chronodot d'Adafruit intègre une puce RTCC et une batterie sur un module à trou traversant. (Source de l'image : Adafruit)

Le Tableau 1 répertorie six modules RTCC différents qui sont basés sur trois puces RTCC différentes provenant de deux fournisseurs de circuit intégré.

Module RTCC Puce RTCC Interface Batterie Durée de vie batterie min. (typ.)
DFRobot DFR0151 Maxim DS1307 I²C CR1225 9 (17) ans
SparkFun BOB-12708 Maxim DS1307 I²C CR1225 9 (17) ans
Adafruit 3103 Maxim DS3231 I²C CR1220 NA
Adafruit 255 Chronodot Maxim DS3231 I²C CR1632 8 ans
Maxim DS3231MPMB1# Maxim DS3231 I²C CR1025 NA
STM STEVAL-FET001V1 STMicro M41T62 I²C Externe NA

Tableau 1 : Six modules RTCC illustrent la vaste disponibilité et la grande variété des modules RTCC. (Source des données : Digi-Key Electronics)

Les modules RTCC comme les six répertoriés dans le Tableau 1 permettent de simplifier l'ajout du suivi temporel pour le prototypage de systèmes. Un examen approfondi de la conception de ces modules révèle des informations utiles pour le développement d'une carte intégrant la puce RTCC sous-jacente.

La première chose que l'on remarque dans le Tableau 1 est que tous ces modules RTCC ont un élément en commun, à savoir une interface I2C. Les premières puces RTCC, datant des années 1970, servaient à émuler de petites mémoires SRAM avec des bus de données et d'adresses parallèles. À cette époque, les bus de microprocesseur parallèles étaient courants, et les protocoles série intégrés n'étaient pas encore répandus.

Aujourd'hui, les protocoles série puce à puce, particulièrement I2C, représentent l'interface de choix pour les périphériques qui nécessitent une bande passante relativement faible. Les puces RTCC sont certainement qualifiées car très peu d'octets sont nécessaires pour transférer les informations de date et d'heure.

Les deux premiers modules RTCC affichés dans le Tableau 1, le DFR0151 de DFRobot et le BOB-12708 de SparkFun, sont tous deux basés sur la puce RTCC DS1307 de Maxim Integrated, qui est un dispositif à 8 broches. En raison de sa popularité, des bibliothèques Arduino et une couche de pilotes Raspberry Pi Raspbian sont disponibles pour les modules basés sur cette puce.

La puce RTCC DS1307 est dotée de broches distinctes pour le rail d'alimentation et la batterie, ce qui permet un basculement automatique entre le rail d'alimentation du système intégré et la batterie de secours en cas de défaillance de l'alimentation du système (Figure 2).

Schéma de la puce RTCC DS1307 de Maxim Integrated

Figure 2 : La puce RTCC DS1307 de Maxim Integrated bascule automatiquement de l'alimentation VCC vers l'alimentation VBAT lorsque la tension au niveau de la broche VCC tombe en dessous d'approximativement 4,5 V. (Source de l'image : Maxim Integrated)

La Figure 2 montre également la connexion entre la puce RTCC DS1307 et un quartz. Pour les puces RTCC, ce quartz est pratiquement toujours un quartz de montre bon marché de 32 768 Hz, comme le WATCH-2X6 de IQD Frequency Products. Ce quartz introduit deux nouveaux facteurs à prendre en compte lors de la conception avec des puces RTCC.

Le premier facteur est la stabilité du quartz en fonction de la température. La plupart des puces RTCC utilisent des quartz « à diapason », initialement conçus pour les montres. Ces quartz dévient de leur fréquence nominale en fonction de la température (Figure 3).

Graphique de la fréquence de résonance d'un quartz 32 768 Hz

Figure 3 : La fréquence de résonance d'un quartz 32 768 Hz varie avec la température, ce qui aura une incidence sur la précision du suivi temporel de la puce RTCC. (Source de l'image : IQD Frequency Products)

La fréquence de résonance des quartz WATCH-2X6 d'IQD varie en fonction de la température, ce qui modifie la fréquence de l'oscillateur et provoque une erreur de suivi temporel. Notez qu'une variation de 20 ppm dans la fréquence de l'oscillateur se traduit par une erreur de suivi temporel d'environ une minute par mois.

L'aspect trop simplifié de la connexion entre le quartz et la puce RTCC dans la Figure 2 ne permet pas de révéler le second facteur. Les broches d'entrée du quartz des puces RTCC présentent généralement une impédance très élevée, ce qui fait que les sorties du quartz de montre et les pistes du circuit imprimé agissent comme une antenne. Cette « antenne » peut coupler les signaux haute fréquence et le bruit provenant du reste du système dans l'oscillateur à quartz interne de la puce RTCC.

Tout bruit couplé dans les pistes entre le quartz de montre et la puce RTCC peut provoquer des transitions supplémentaires dans le circuit de l'oscillateur de la puce RTCC, ce qui peut faire avancer l'horloge. La solution est d'utiliser une configuration de carte à circuit imprimé rigoureuse. Cela consiste à placer le quartz aussi près que possible des broches de l'oscillateur de la puce RTCC et à placer un plan de masse sous les broches d'entrée du quartz et tout le corps du quartz de montre (Figure 4).

Schéma de zone d'exclusion hachurée sous le boîtier RTCC

Figure 4 : Une configuration de carte à circuit imprimé rigoureuse sur un plan de masse permet d'éviter le bruit indésirable ayant une incidence sur la précision du suivi temporel d'une puce RTCC. (Source de l'image : Maxim Integrated)

En outre, la Figure 4 montre une zone d'exclusion hachurée sous le boîtier RTCC pour empêcher des pistes rapprochées de coupler du bruit aux broches d'entrée quartz des puces RTCC. Si possible, ajoutez un anneau de garde sur la couche du composant du circuit imprimé qui entoure le quartz et les broches d'entrée du quartz de la puce RTCC, pour éviter que le bruit affecte la précision du suivi temporel.

Procédure pour retirer le quartz de montre du circuit imprimé et l'insérer dans la puce

Pour éviter certains défis liés à la configuration de la carte pour un quartz externe, choisissez la puce RTCC M41T62 de STMicroelectronics qui possède un quartz intégré. Cette puce RTCC est disponible sur la carte d'évaluation STEVAL-FET001V1 de STMicroelectronics et présente une empreinte DIP 24 broches. Un schéma de cette carte est présenté dans la Figure 5. Il existe une bibliothèque Arduino et une couche de pilotes Raspberry Pi Raspbian disponibles pour le M41T62.

Schéma de la puce RTCC M41T62 de STMicroelectronics

Figure 5 : La puce RTCC M41T62 de STMicroelectronics (centre) est disponible sur la carte d'évaluation STEVAL-FET001V1, dans un boîtier DIP 24 broches. (Source de l'image : STMicroelectronics)

Comme l'illustre le schéma, le M41T62 n'est doté que d'une seule broche VCC. Il est dépourvu d'une broche VBAT distincte vers laquelle basculer en cas de défaillance du rail d'alimentation, car le dispositif, qui mesure seulement 1,5 mm x 3,2 mm, est conçu pour être utilisé dans des dispositifs corporels et des appareils photo numériques. Dans ces applications embarquées, la batterie est généralement la seule source d'alimentation et l'espace est précieux.

Notez qu'il est également possible d'utiliser un supercondensateur comme source d'alimentation pour le M41T62. Dans un système embarqué, il est possible de connecter l'alimentation du système ou un chargeur à la broche VCC du M41T62 par l'intermédiaire d'une diode de blocage, D1 (Figure 6).

Le type de diode utilisé doit être à faible fuite, comme le modèle 1N4148WS illustré dans la Figure 5 ci-dessus, afin d'éviter une décharge du supercondensateur vers l'alimentation du système lorsque le reste du système est mis hors tension.

Schéma d'un supercondensateur rechargeable alimentant la puce RTCC M41T62

Figure 6 : Il est possible d'utiliser un supercondensateur rechargeable pour alimenter la puce RTCC M41T62. (Source de l'image : STMicroelectronics)

Compensation de température pour maîtriser le quartz

Trois des modules RTCC répertoriés dans le Tableau 1 (les modèles Adafruit 3013, Adafruit 255 Chronodot et Maxim DS3231MPMB1#) sont basés sur la puce RTCC DS3231 de Maxim (Figure 7). En plus d'un quartz intégré, le dispositif inclut également un capteur de température, ce qui explique la longueur de son nom officiel : « RTC/TCXO/quartz intégrés I²C extrêmement précis ».

Schéma de la puce RTCC DS3231 de Maxim

Figure 7 : La puce RTCC DS3231 intègre un quartz de montre 32 768 Hz, un capteur de température et un ensemble de condensateurs commutés pour maintenir la précision de suivi temporel du dispositif à ±2 minutes par an. (Source de l'image : Maxim Integrated)

Comme l'illustre le schéma fonctionnel, l'oscillateur à quartz compensé en température (TCXO) du DS3231 est composé d'un quartz interne, d'un capteur de température et d'un ensemble de condensateurs commutés. Comme le RTCC DS1307, le DS3231 est également doté de broches distinctes pour l'alimentation principale (VCC) et pour la batterie de secours (VBAT).

À l'instar de la puce RTCC M41T62 de STMicroelectronics, la puce RTCC DS3231 n'est pas concernée par les défis associés à la configuration d'un quartz externe. Son TCXO réduit la variation de précision du suivi temporel causée par les variations de température. Le TCXO interne du DS3231 permet de maintenir la précision du suivi temporel du dispositif à plus ou moins 2 minutes par an sur une très vaste plage de températures de fonctionnement de -40°C à +85°C.

En raison de la popularité de la puce RTCC DS3231, il existe plusieurs bibliothèques Arduino et une couche de pilotes Raspberry Pi Raspbian disponibles pour les modules basés sur la puce RTCC DS3231.

Quelle est la durée de vie de la batterie ?

Les batteries sont des éléments nécessitant une maintenance et qui ne durent pas éternellement. Lors de l'ajout d'une RTCC à une conception embarquée, il est important de noter le courant de batterie requis par la puce RTCC pour déterminer la taille de batterie de secours appropriée.

La durée de vie de la batterie dans une application RTCC est déterminée par le courant absorbé par la puce RTCC lors du suivi temporel, la tension de fonctionnement minimale requise par la puce RTCC et le temps pendant lequel la batterie sera en mesure de fournir le courant requis avant que sa tension de sortie baisse en dessous de cette tension de fonctionnement minimum (Tableau 2).

Puce RTCC Courant batterie (nA) typ. (max.)
Maxim DS1307 300 (500)
Maxim DS3231 840 (3000)
STMicro M41T62 5000 (7000)

Tableau 2 : Les courants nominaux d'alimentation batterie pour les puces RTCC vous aident à déterminer la taille de batterie de secours appropriée. (Source des données : Digi-Key Electronics)

Pour les modules RTCC affichés précédemment dans le Tableau 1, les batteries de secours ont déjà été sélectionnées. Certains fournisseurs de modules indiquent la durée de vie de la batterie sur les fiches techniques des modules, également mentionnée dans le Tableau 1. Les piles boutons au lithium représentent actuellement le type de batterie de choix pour ces modules. Les diamètres dans le tableau sont de 10, 12 et 16 mm. Ce qui est sûr, c'est que plus la capacité de la batterie est importante, plus elle occupera d'espace et plus elle sera lourde. Cependant, le bon côté des choses est que vous pouvez profiter d'une autonomie batterie plus étendue pour une consommation de courant donnée.

Conclusion

La plus grande attention est de mise pour sélectionner les dispositifs RTCC, choisir le quartz et la batterie qui leur seront associés pour garantir un fonctionnement précis, et configurer le circuit imprimé. Alternativement, les modules disponibles basés sur des puces RTCC vous permettent de simplifier le montage d'essai et le prototypage, ce qui réduit considérablement le temps de développement.

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de Digi-Key Electronics ni les politiques officielles de la société.

À propos de l'auteur

Steve Leibson

Steve Leibson a été ingénieur système pour HP et Cadnetix, rédacteur en chef pour EDN et Microprocessor Report, blogger technique pour Xilinx et Cadence (entre autres), et il est intervenu en tant qu'expert technologique dans deux épisodes de "The Next Wave with Leonard Nimoy". Il a aidé les ingénieurs de conception à développer des systèmes améliorés, plus rapides et plus fiables pendant 33 ans.

À propos de l'éditeur

Rédacteurs nord-américains de Digi-Key