Electronique > Réalisations > Affichage / Mesure > Décompteur / minuteur 002b

Dernière mise à jour : 06/12/2009

Présentation

Le schéma présenté ci-après concerne un décompteur horaire (minuterie) cadencé à la seconde ou à la minute, dont le point de départ peut être fixée à une valeur quelconque entre 00'01" et 59'59" (en mode minutes / secondes) ou entre 00h00' et 99h59' (en mode heures / minutes). Il s'agit d'une version matériellement simplifiée du Décompteur / minuteur 002a, avec affichage sur quatre digits au lieu de six, HH:MM ou MM:SS au lieu de HH:MM:SS.

Avertissements

Ce montage a été simulé avec succès sous Proteus, puis testé assez rapidement via une maquette (voir paragraphe Proto). Son fonctionnement est validé pour les fonctions principales, mais je ne l'ai pas testé sur de grandes périodes. Je mets à disposition le code source et le fichier binaire compilé du PIC, mais ne peux garantir le parfait fonctionnement du système en toute circonstance. Si vous le réalisez et que vous constatez le moindre disfonctionnement, merci de me le signaler pour en faire profiter les autres.

Retour de ggbecool : J'ai réalisé ce décompteur. Pour l'heure il n'est pas exploitable car la précision horaire n'est pas excellente, on constate un écart de 4 secondes au bout de 15 minutes. L'utilisation d'un quartz externe en lieu et place de l'oscillateur interne devrait normalement résoudre le problème.
Ma réponse : Déjà, merci pour le retour d'info. La modification avec quartz externe est désormais faite, voir page Décompteur / minuteur 002c.

Schéma (002b)

Par rapport au Décompteur / minuteur 002a, on doit le nombre plus réduit de composants au fait qu'ici l'affichage est multiplexé. Le montage est articulé autour d'un composant programmable de type PIC 16F628A, entouré de bien peu de composants, même en comptant les quatre afficheurs sept segments et les boutons poussoir de programmation.

decompteur_002b
Décompteur 002b

Fonctionnement général
Lors de la mise sous tension, le décompteur / minuteur affiche la dernière durée programmée par l'utilisateur. S'il s'agit de la première mise sous tension, la temporisation est réglée par défaut à 3 minutes, avec affichage de type MM:SS, et donc 03:00 (brossage dentaire ou oeuf à la coque). L'appui sur le bouton poussoir SW1 (Start / Stop) permet de démarrer la temporisation, et à partir de cet instant l'affichage se décrémente de une unité toutes les secondes. Un nouvel appui sur le même bouton poussoir SW1 provoque l'arrêt du décompte. Un autre appui sur SW1 repositionne le compteur à sa valeur programmée, et un appui supplémentaire relance le décompte.

Procédure de programmation des paramètres utilisateurs
La modification des paramètres utilisateur s'effectue avec les boutons poussoirs SW2 (Select), SW3 (Plus) et SW4 (Moins). SW2 permet de basculer entre le mode de programmation de la durée de la temporisation, et le mode normal d'utilisation, c'est à dire de décompte. SW3 et SW4 permettent respectivement d'augmenter ou de diminuer le nombre en cours de sélection (heures, minutes ou secondes) ou de modifier un paramètre (mode d'affichage et mode de sortie).
Remarque : durant la phase de programmation de la durée de temporisation, le décompte ne peut pas être ammorcé par appui sur SW1 (Start).
En mode normal, les quatres afficheurs montrent le temps en cours, que le décompte soit actif ou non. Dans ce mode, ne peuvent être affichés que des chiffres compris entre 0 et 9.
En mode programmation, le premier afficheur montre un chiffre correspondant à un code "Paramètre", le second afficheur montre un trait d'union, et les deux afficheurs suivant montrent la valeur du paramètre en cours d'ajustage.

Code ParamètreModeExemple d'affichageValeurs possibles
<rien>Normaldecompteur_002b_disp_001a000:00 à 59:59 si mode affichage MM:SS
00:00 à 99:59 si mode affichage HH:MM
1-Programmation Mode affichagedecompteur_002b_disp_001b0 decompteur_002b_disp_001b1MS pour mode affichage MM:SS
HM pour mode affichage HH:MM
2-Programmation Mode sortiedecompteur_002b_disp_001c0 decompteur_002b_disp_001c10 : Activation sortie au terme de la minuterie
1 : activation sortie pendant durée minuterie
3-Programmation Heuresdecompteur_002b_disp_001d000 à 99
4-Programmation Minutesdecompteur_002b_disp_001e000 à 59
5-Programmation Secondesdecompteur_002b_disp_001f000 à 59

Les valeurs spécifiées sont automatiquement sauvegardées en EEProm et sont rappelés à la mise sous tension suivante.

Réglage du mode d'affichage (HH:MM ou MM:SS)
1 - A partir du mode normal (tous afficheurs allumés normalement), appuyer une fois sur SW2 (Select). Le premier afficheur affiche "1", qui est le code du paramètre "Mode affichage", le second afficheur affiche un trait d'union, et les troisième et quatrième afficheurs montre le mode d'affichage en cours : "MS" pour MM:SS, ou "HM" pour HH:MM. Modifier le mode d'affichage si nécessaire avec les boutons SW3 (Plus) ou SW4 (Moins).
Remarque : comme on utilise ici des afficheurs sept segments, les lettres ne sont pas forcement très reconnaissables : la lettre M est représentée par un "pont" et la lettre S équivaut au chiffre 5, seul la lettre H est vraiment un H. Mais le principal est qu'on arrive à s'y retrouver ;-)

Réglage du mode de sortie
Deux modes de fonctionnement sont possibles, avec au repos (décompteur inactif), une sortie toujours désactivée (exemple d'utilisation de cette sortie, un peu plus loin).
Mode 0 : la sortie reste désactivée au démarrage de la temporisation, et n'est activée qu'à la fin du décompte (affichage 00:00).
Mode 1 : la sortie est activée au démarrage de la temporisation, et est désactivée à la fin du décompte (affichage 00:00).
Le choix du mode s'effectue grâce aux boutons poussoir SW2 (Select), SW3 (Plus) et SW4 (Moins), selon la procédure suivante :
1 - A partir du mode normal (tous afficheurs allumés normalement), appuyer deux fois sur SW2 (au premier appui, l'affichage montre le format d'affichage, HHMM ou MMSS). Le premier afficheur affiche "2", qui est le code du paramètre "Mode sortie", les second et troisième afficheurs affichent un trait d'union, et le quatrième afficheur montre le mode de sortie en cours (chiffre 0 ou 1).
2 - Appuyer sur les boutons SW3 (Plus) et SW4 (Moins) pour passer dans le mode désiré (0 ou 1).
Remarque : durant la programmation du mode d'activation de la sortie, le décompte ne peut pas être ammorcé par appui sur SW1 (Start).

Réglage de la durée de temporisation
1 - Appuyer autant de fois qu'il le faut sur SW2 (Select) pour que les deux premiers afficheurs affichent "3-" (code Paramètre Heures).
2 - Appuyer sur les boutons SW3 (Plus) et SW4 (Moins) pour incrémenter ou décrémenter le nombre des heures.
3 - Appuyer une fois sur SW2 (Select) pour que les deux premiers afficheurs affichent "4-" (code Paramètre Minutes).
4 - Appuyer sur les boutons SW3 (Plus) et SW4 (Moins) pour incrémenter ou décrémenter le nombre des minutes.
5 - Appuyer une fois sur SW2 (Select) pour que les deux premiers afficheurs affichent "5-" (code Paramètre Secondes).
6 - Appuyer sur les boutons SW3 (Plus) et SW4 (Moins) pour incrémenter ou décrémenter le nombre des secondes.

Retour au mode normal
Appuyer autant de fois qu'il le faut sur SW2 (Select) jusqu'à ce que l'affichage montre 4 chiffres (plus de trait d'union sur le deuxième afficheur).

Mode de décomptage
La base de temps utilisée pour le décomptage est de une seconde quand l'affichage est de type MM:SS ou de une minute quand l'affichage est de type HH:MM, et dépend de la configuration spécifiée par l'utilisateur, dont la procédure de réglage a été donnée ci-avant.

Base de temps
Afin de disposer d'une très bonne précision sur les secondes, il est fait usage d'une interruption du timer 1 et non de la simple fonction Delay_ms(1000), insuffisement précise pour une programmation sur longue durée. Comme il est impossible d'avoir une base de temps de précisement une seconde directement avec le compteur 16 bits du timer 1, la fréquence de répétition des interruptions est fixée à 10 Hz, c'est à dire que l'on a droit à une interruption toutes les 100 ms. Chacune de ces interruptions incrémente un compteur additionnel (une simple variable ajoutée dans le code) qui est remise à zéro toutes les dix interruptions (en mode d'affichage MM:SS) ou toutes les 600 interruptions (en mode d'affichage HH:MM), afin de constituer la base de temps de une seconde ou de une minute voulue. Cela complique un tout petit peu le code mais garantit une bonne précision sur long terme.
Stabilité de la base de temps
Pour cette réalisation, j'ai choisi de faire fonctionner l'oscillateur interne de 4 MHz (INTOSC FAST), ce qui permet de se passer d'un quartz externe additionnel et surtout de libérer les deux broches d'entrée / sortie RA6 et RA7. La précision n'est certes pas aussi bonne que celle d'un quartz externe, et peut fluctuer légèrement en fonction de la tension d'alimentation et de la température ambiante. J'ai fait ce choix (discutable pour certains) simplement pour disposer d'assez de lignes de ports et éviter des circuits intégrés additionnels. Pour ce qui est de la tension d'alim, pas de soucis majeur si on utilise un régulateur de tension +5 V du style LM7805 ou 78L05 (version 100 mA max en boitier plastique TO92).

Utilisation de la sortie Out
La sortie Out se fait sur le port RA7 du PIC, capable d'absorber ou de débiter un courant maximal de 25 mA. Vous pouvez y raccorder un relais basse consommation (max 20 mA) avec une diode en parallèle sur la bobine, un relais "normal" avec un transistor intermédiaire, un opto-triac si l'appareil commandé s'alimente sur le secteur 230 V, ou mettre tout simplement un petit buzzer électromécanique - ou électronique avec oscillateur intégré - si un avertisseur sonore suffit.

Section Affichage
La partie supérieure laisse apparaître les quatre afficheurs permettant de visualiser le temps programmé ou restant. Du fait du faible nombre de pattes disponibles sur le PIC, et pour réduire la consommation électrique globale, il est fait appel au multiplexage temporel. Les afficheurs sont allumés à tour de rôle à grande vitesse, et c'est la persistance rétinienne qui nous fait croire que tous sont allumés en même temps. La mise en service de chaque afficheur, de type anode commune, est réalisée par les transistors Q1 à Q4, eux-même commandées par les sorties RB0 à RB3 du PIC. Les valeurs affichées en elles-mêmes dépendent de l'état des sorties RA0 à RA7 (en excluant la borne RA5 qui ne peut qu'être une entrée), chaque sortie alimentant de façon individuelle un segment (segment A à G). 

Prototype

Réalisé avec ma platine EasyPic4 et quelques composants annexes montés sur une platine d'expérimentation sans soudure.

decompteur_002b_proto_001a decompteur_002b_proto_001b

Vous aurez peut-être reconnu mon module d'affichage à quatre afficheurs multiplexés, dont je me sers désormais régulièrement. Les chiffres semblent ne pas s'éclairer beaucoup sur la photo, c'est vrai que ce n'est pas de la haute luminosité, il s'agit de vieux afficheurs de luminosité 1 mcd, avec en plus des résistances de limitation de série fixées ici à 300 ohms (que l'on peut descendre sans soucis à 150 ou 220 ohms). Alors forcement, avec le multiplexage par-dessus... Choisissez de préférence des modèles d'afficheurs 5 mcd ou plus pour 10 mA, bien que cela n'ait rien d'obligatoire.

Remarque : à la première mise sous tension, le segment "E" des quatre afficheurs restait toujours allumé. Je ne comprenais pas très bien car la sortie qui pilote ce segment est la sortie RA4 du PIC, qui est de type collecteur ouvert. Quand cette sortie est inactive, elle est à l'état haute impédance et non à zéro volt. Le segment "E" devrait donc être éteint quand la sortie RA4 est inactive. J'ai résolu ce petit problème en ajoutant une résistance de 2K2 entre la sortie RA4 et le +5 V, en déduisant qu'un "zéro volt suffisant" arrivait à atteindre le segment. C'est un comportement que j'aurais tout à fait compris s'il s'était agit de commander un circuit logique, mais ce n'est pas le cas ici (on pilote un segment d'afficheur, donc une led). Pas grave, ça fonctionne comme ça.

Circuit imprimé

Non réalisé.

Logiciel du PIC

Fichier compilé pour PIC (binaire *.hex) et codes sources complets (mikroPascal Pro V2.50)
Décompteur 002b - 16F628A - version à quatre afficheurs (06/12/2009)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.