[AUDIO_VIDE] Bonjour, nous allons parler des horloges temps réel. C'est en effet très pratique d'avoir une horloge, d'avoir l'heure qui s'affiche sur une enseigne, ou un afficheur, à LED. Nous allons parler du principe des horloges électroniques, et parler de leur alimentation, qui doit être permanente. Nous allons voir comment programmer une horloge, avec un micro contrôleur ; voir comment utiliser un circuit spécialisé, et voir aussi que certains micro contrôleurs contiennent une horloge temps réel, à l'intérieur. Vous savez certainement que les montres mécaniques utilisent un mouvement oscillant, aussi stable que possible, qui va permettre de donner une base de temps, et qu'ensuite des engrenages permettent d'obtenir les secondes, les minutes, les heures etc. Dans une horloge électronique on utilise un oscillateur à quartz. En effet, ces petits cristaux de quartz ont la particularité de pouvoir être stimulés et d'osciller à une fréquence très précise. Cette fréquence est généralement égale à , 32 768 hertz. Vous comprenez qu'il s'agit d'une puissance de 2, il s'agit, dans ce cas-là , de, 2 à la puissance 15, hertz. Voilà un exemple de petit boîtier qui contient un quartz horloger, c'est comme ça qu'on les appelle. Nous allons utiliser 15 diviseurs par deux, successivement, qui vont diminuer la fréquence, à partir de, 32 768 pour arriver, finalement, à un signal de un hertz, c'est-à -dire à la seconde. Pour réaliser un diviseur par deux, nous allons par exemple utiliser une bascule D, relier la sortie inversée à l'entrée D, l'horloge va arriver par l'entrée d'horloge, et, par la propriété qui dit que l'état futur, c'est-à -dire l'état après le coup d'horloge, est égal à D, dans une bascule D, et grâce à cette propriété, qui vient directement du fil que j'ai mis là , D est égal à , Q barre, on peut en déduire que, Q plus, est égal à , Q barre. Et on voit bien, en effet, que, à chaque front montant de l'horloge, ici, là , etc. on a un changement de la valeur du signal de sortie ; et ensuite, en observant ces signaux, on voit bien que, cette fréquence là est la moitié de cette fréquence là . On va donc prendre notre oscillateur à quartz, brancher 15 diviseurs par deux, on obtient, ici, un signal de, un hertz ; il suffira, ensuite, de le diviser par soixante, pour obtenir la valeur des secondes, de reprendre la sortie et de diviser de nouveau par soixante, pour obtenir la valeur des minutes, et ainsi de suite, ici, par 24 pour les heures, et on pourrait continuer, pour les jours, les mois, etc. Bien évidemment, il n'y a rien d'aussi désagréable qu'une heure qui n'est pas indiquée correctement, qu'une horloge qui n'est pas à l'heure. Il faut donc prévoir une alimentation, parce que nos enseignes, ou nos afficheurs, peuvent ne pas être, toujours sous tension. Alors on utilise souvent des piles au Lithium, et on comprend bien qu'on ne va les utiliser que pour alimenter cette partie, que nous venons de voir, avec les diviseurs, et l'oscillateur à quartz, de telle manière que l'heure puisse être maintenue. Nous connaissons tous ces piles au Lithium, qu'on trouve, par exemple, dans un ordinateur. Et dans un ordinateur son rôle est, aussi, entre autres, de maintenir l'heure de l'ordinateur. Généralement on place ces piles dans de petits supports, adéquats. On peut aussi utiliser ce qu'on appelle des, supercondensteurs, ou Supercap. Leur particularité, c'est des condensateurs de très grande valeur. Voilà comme ils se présentent. La technologie est basée sur l'utilisation d'une double couche, c'est un peu similaire à un condensateur électrolytique, mais avec une double couche, et ça permet d'obtenir des capacités allant facilement jusqu'à plusieurs farads. Et donc, si on les recharge régulièrement, ils peuvent permettre d'alimenter une horloge pendant un moment relativement long. Est-il possible d'utiliser un micro contrôleur, pour faire une horloge temps réel? Eh bien, beaucoup de micro contrôleurs prévoient l'usage d'un quartz à 32 kilohertz, donc facilitent la réalisation d'une horloge temps réel. Mais, évidemment, il faudra faire extrêmement attention, d'une part, d'alimenter en permanence le micro contrôleur, et de le mettre en veille lorsqu'on est alimenté par la batterie de secours, donc lorsque l'afficheur, ou l'enseigne, n'est pas alimenté. Le programme que nous aurons à écrire va fortement dépendre de la famille du micro contrôleur, utilisé. Généralement, on va utiliser des interruptions des timers, et, naturellement, le mode d'endormissement du micro contrôleur, pour diminuer au maximum sa consommation tout en laissant alimentés, l'oscillateur à quartz, et, au moins, une partie des diviseurs. Regardons comment nous pouvons le faire avec la famille des, AVR, que nous trouvons donc sur les Arduino. Dans ce programme, nous voyons la partie principale et une routine d'interruption. Nous commençons par mettre en marche l'oscillateur à quartz 32 kilohertz. Nous allons demander, pour lui, une prédivision par 128. Ce qui signifie qu'on a divisé par, 2 à la puissance 7. Nous allons ensuite utiliser le timer numéro 2, avec son interruption pour le dépassement de capacité ; or, ce timer est un timer 8 bits, donc il va diviser par, 256, c'est-à -dire, 2 à la puissance 8. Donc, nous aurons bien, 2 à la puissance 7, et 2 à la puisance 8, avec le timer. Donc, à chaque dépassement de capacité, Overflow, du timer numéro 2, voici la routine d'interruption correspondante, nous pouvons incrémenter les secondes. Ensuite, ce qu'il sera nécessaire de faire, et que nous faisons, dans ce cas-là , dans la boucle principale, il faudra mettre en veille le micro contrôleur, puis, ensuite, après le réveil, il faudra le rallumer. Il faut préciser que les interruptions rallument le micro contrôleur. Chaque seconde, on aura le timer qui va passer de sa valeur maximale à zéro, c'est-à -dire faire un dépassement de capacité, la routine d'interruption va s'exécuter, la seconde sera incrémentée, puis le micro contrôleur se remettra en mode d'endormissement. Ce qui signifie que la consommation sera extrêmement faible, puisque, sur une seconde, il ne fonctionnera que quelques micro secondes, ou quelques dizaines de micro secondes. Bien entendu, dans la routine d'interruption, nous n'aurons pas seulement qu'à incrémenter les secondes, nous devrons aussi incrémenter les minutes, lorsque la seconde aura passé à 60, les heures lorsque les minutes auront passé à 60, etc. On trouve sur le marché de nombreux circuits intégrés qui réalisent une horloge temps réel. Il y a par exemple le circuit très connu de Maximsemiconductor, DS1307. Nous allons prendre, ici, un petit peu plus en détail, un autre circuit, celui de Texas Instruments. On voit que ce circuit est alimenté par une batterie. Voilà ici la masse. Qu'il dispose de deux pattes pour le quartz, on a donc à l'intérieur un oscillateur à quartz. On voit également qu'il y a deux lignes qui permettent de faire de l'I carré C, donc le système de liaison série, basé sur deux fils. Ici, lorsque le circuit principal est alimenté, ce circuit est alimenté par cette entrée-là , pour économiser l'énergie de la pile, et alors, le micro contrôleur va pouvoir dialoguer à travers ces deux lignes ; et on se souvient que, l'I carré C, nécessite deux résistances de tirage vers le haut. Ce qui est encore plus intéressant, pour réaliser des horloges, c'est de prendre des micro contrôleurs qui intègrent une zone séparée, prévue pour l'horloge en temps réel. On voit ici que, ça c'est donc le bord du circuit intégré, j'ai extrait une partie de la documentation de ce circuit, ici c'est un STM32, de STMicroelectronics, on voit qu'il y a une partie, ici, entourée en rouge, qui est totalement autonome. Certes, elle communique avec le Bus principal du micro contrôleur, mais elle est alimentée séparément, on a les deux pattes pour l'oscillateur à quartz, et on trouve donc cette, RTC, Real Time Clock, et il y a également des registres, qui sont alimentés en permanence par la batterie. Donc, dans ce cas-là , on peut, simplement, éteindre le micro contrôleur lorsque l'enseigne, ou l'afficheur, ne marche plus, mais cette partie là reste allumée, le comptage du temps se fait, et ensuite, lorsque le système fonctionne à nouveau, il est possible d'aller interroger les registres pour connaître les heures, les minutes etc. Nous avons donc vu le principe des horloges électroniques et la nécessité qu'elles soient alimentées par une alimentation permanente, nous avons vu comment programmer une horloge avec un micro contrôleur, nous avons vu les circuits spécialisés, qui, dans certains cas, se trouvent même à l'intérieur d'un micro contrôleur. Une horloge est quelque chose de très pratique, ajouter à une enseigne ou mettre dans un journal lumineux l'horloge qui s'affiche à certains moments, c'est un plus, tout à fait intéressant.