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

Dernière mise à jour : 29/01/2017

Présentation

Voici enfin la version du décompteur 002 avec horloge stabilisée par quartz externe ! Vous êtes plusieurs à me l'avoir réclamé et je me devais d'avancer un peu sur le sujet. Les deux versions précédentes (décompteur 002a et décompteur 002b) utilisaient l'oscillateur interne d'un PIC 16F628A et la précision temporelle n'était pas toujours au rendez-vous. Le minuteur présenté ici reprend les fonctions du décompteurs 002b et est toujours cadencé à la seconde ou à la minute, avec un point de départ qui 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). L'affichage se fait sur quatre digits, HH:MM ou MM:SS.Pour changer un peu, j'ai laissé de côté le 16F628A au profit d'un 16F88 (la raison principale en sera donnée plus loin). Et comme après évolution il restait une broche de libre sur le PIC, je me suis dit que c'était le moment d'ajouter une fonction...

Schéma (002c)

On retrouve l'affichage multiplexé de son ancètre, pas de raison d'en changer. Cette fois le montage est articulé autour d'un PIC 16F88.

decompteur_002c
Décompteur 002c

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.

Différences par rapport au décompteur / minuteur 002b
Les lignes de code logiciel du PIC écrites pour ce décompteur 002c sont dans leur globalité les mêmes que celles écrites pour le décompteur 002b. Les différences résident dans les points suivants :

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ètre Mode Exemple d'affichage Valeurs possibles
<rien> Normal decompteur_002b_disp_001a0 00:00 à 59:59 si mode affichage MM:SS
00:00 à 99:59 si mode affichage HH:MM
1- Programmation Mode affichage decompteur_002b_disp_001b0 decompteur_002b_disp_001b1 MS pour mode affichage MM:SS
HM pour mode affichage HH:MM
2- Programmation Mode sortie decompteur_002b_disp_001c0 decompteur_002b_disp_001c1 0 : Activation sortie au terme de la minuterie
1 : activation sortie pendant durée minuterie
3- Programmation Heures decompteur_002b_disp_001d0 00 à 99
4- Programmation Minutes decompteur_002b_disp_001e0 00 à 59
5- Programmation Secondes decompteur_002b_disp_001f0 00 à 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, on n'utilise pas l'oscillateur interne mais un quartz externe de 8 MHz pour stabiliser au mieux la fréquence d'oscillation de l'horloge principale. Si une plus grande précision est requise, vous devez utilisez un oscillateur amélioré type TCXO (oscillateur à quartz compensé en température). La configuration du PIC devra dans ce cas être modifiée pour n'utiliser que la seule broche d'entrée d'horloge externe.

Utilisation de la sortie Out
La sortie Out se fait sur la ligne RB7 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 à RA4 et RB4 à RB5, chaque sortie alimentant de façon individuelle un segment (segment A à G). Les afficheurs à LED sept segments utilisés ici sont de type Anode Commune (AC en français ou CA en anglais), vous pouvez choisir le modèle de votre choix, par exemple D350PA ou TDSR5150 qui ont le même brochage que celui indiqué ci-après.

d350pa_brochage

Prototypes / réalisations

De mon côté, réalisé pour une application particulière : une bombe constituée de quelques batons de dynamite et d'un minuteur pour déclanchement retardé, le tout posé dans une malette pour les besoins d'un film. Le décompteur est vrai mais le reste est évidement factice ;-)
Ca fait un peu carton-patte mais je n'avais ni les moyens ni le temps de faire mieux. Trois feuilles de papier carton rouge coupées en deux pour un total de six batons, un peu de fil électrique blanc et un peu de fil noir rigide pour la mèche, et du papier essuie-tout pour bloquer le fil dans le tube, avec de la colle pour que ça tienne un minimum.

decompteur_002c_dynam_001a decompteur_002c_dynam_001b decompteur_002c_dynam_001c decompteur_002c_dynam_001d decompteur_002c_dynam_001e decompteur_002c_dynam_001f decompteur_002c_dynam_001g

Comme on peut le voir sur les trois photos centrales précédentes, le fil électrique ne peut pas sortir si on tire dessus, grâce à un noeud. On peut bien sûr pousser le fil vers l'intérieur mais vu sa longueur, il faudrait vraiment le vouloir pour gâcher le plaisir. Vint ensuite la fabrication du boitier électronique décompteur, alimenté par pile (mais testé avec alim secteur) et câblé sur une plaque d'expérimentation à pastilles.

decompteur_002c_proto_001a decompteur_002c_proto_001b decompteur_002c_proto_001c

Les quatre boutons poussoir pour programmation et pour démarrage du décompte sont bien alignés sur la partie droite du circuit imprimé. Il s'agit de poussoirs à souder sur CI et c'est pourquoi je les ai soudés. Pas vraiment question de ranger le circuit dans un boitier, ça fait plus "artisanal" en laissant tel quel. Le résultat final est celui rendu par les photos qui suivent, qui montrent que l'ensemble a été testé avec des afficheurs rouges et avec des afficheurs bleus (ces derniers étant bien plus lumineux).

decompteur_002c_proto_001d decompteur_002c_proto_001e

Je n'ai finalement pas gardé la longueur initiale des fils blancs, qui étaient trop souples et refusaient de rester boudinés. Après les avoir coupés, j'ai soudé dessus du fil noir rigide pour donner un côté un peu plus "standard" et reconnaissable à l'ensemble. Ca fait peur si on ne sait pas d'où ça vient, n'est-ce pas ?

Vidéo de démonstration
Petite vidéo sans fioriture pour voir le montage en action. Je n'y montre pas comment l'engin se programme, c'est indiqué avant.

video_electronique_decompteur_002c_proto_001_tn 
http://www.youtube.com/watch?v=HPGSWv-Jdko

Cela a-t-il bien marché du premier coup ?
Hi, hi... j'en rigole encore.

Réalisation de Ludovic L.
Merci à lui pour ses retours et la photo !

decompteur_002c_proto_ll_001a

Prototype de Jean-Paul
Sur plaque sans soudure - breadboard ou planche à pain comme disent "les autres" ;-)

decompteur_002c_proto_jp_001a

Commentaire de Jean-Paul :
Ce montage fonctionne très bien, après avoir ajouté sur la ligne d'alimentation de la paque sans soudure, un condensateur de 100 uF. Sans ce condensateur, le fonctionnement était erratique.

Réalisation de David L.
Sur plaque d'expérimentation avec soudure, comme pour le mien ;)

decompteur_002c_proto_dl_001a decompteur_002c_proto_dl_001b decompteur_002c_proto_dl_001c decompteur_002c_proto_dl_001d

Amusant à faire, les liaisons sous le circuit, n'est-ce pas ?

Réalisation de Alain
Jolie mise en boîte ! J'aime beaucoup !

decompteur_002c_proto_aa_001a decompteur_002c_proto_aa_001b decompteur_002c_proto_aa_001c

Il faut absolument que j'apprenne à faire de belles choses comme ça... mes circuits m'en seront reconnaissant.

Circuit imprimé

Non réalisé.

Logiciel du PIC

Fichier compilé pour PIC (binaire *.hex) et codes sources complets (mikroPascal Pro V3.80)
Décompteur 002c - 16F88 - version à quatre afficheurs (21/11/2010)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Historique

29/01/2017
- Ajout photos des réalisations de David et Alain.
22/02/2015
- Ajout photo et commentaire de Jean-Paul pour son prototype de décompteur 002c réalisé sur plaque sans soudure.
16/10/2011
- Ajout précisions concernant les types d'afficheurs à LED sept segments utilisables.
- Ajout vidéo YouTube.
15/05/2011
- Ajout d'un condensateur de 100 nF sur l'entrée analogique RB6/AN5 du PIC pour éviter les disfonctionnements avec des boutons poussoir de basse qualité produisant plein de rebonds. J'avais bien prévu le coup des rebonds au niveau logiciel (délai de 100 ms), mais ça ne suffisait pas.