Electronique > Réalisations > Affichage / Mesure > Chronomètre 001

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

Présentation

Le présent chronomètre permet un comptage entre 00h00'00'' et 23h59'59'', en utilisant six afficheurs à LED sept segments câblés pour fonctionner en mode multiplexé. Il est possible de ne conserver que quatre afficheurs sur les six si l'affichage souhaité ne nécessite pas la présence des secondes ou des heures : suppression des deux afficheurs des secondes pour un affichage compris entre 00h00' et 23h59', ou suppression des deux afficheurs des heures pour un affichage compris entre 00'00'' et 23'59''. Version avec PIC 16F628A associé à un décodeur TTL sept segments de type SN7447.

Caractéristiques principales
- Entrée START, pour démarrage depuis zéro ou pour reprise sur pause.
- Entrée PAUSE pour arrêt avec mémorisation valeur en cours.
- Entrée MR (Memory Reset) pour remise à zéro générale.
- Entrée LT (Light Test) pour test affichage

Avertissement

Cette version est intéressante pour se faire la main avec un montage qui fonctionne bien dans le principe mais qui n'est pas vraiment utilisable en pratique, pour cause de précision temporelle insuffisante. Pour une version plus sérieuse et plus précise, merci de vous reporter à la page Chronomètre 001b pour une résolution de 1 seconde ou à la page Chronomètre 001c pour une résolution au centième de seconde.

Schéma

Usage de deux circuits intégrés fonctionnant tous deux sous 5 V, de six afficheurs sept segments et de six transistors courants qui n'attendaient que ça.

electronique_chronometre_001

-

Fonctionnement général
Il est vraiment très simple ! Le PIC est programmé pour délivrer une interruption toutes les secondes (en fait une interruption toutes les 50 ms, qui sont ensuite comptées par paquets de 20). Si le chronomètre est démarré (appui sur la touche SW1 / START ou commande via un transistor à collecteur ouvert par exemple), les interruptions incrémentent un compteur et l'affichage est mis à jour. Si le chronomètre est en mode pause (appui sur le poussoir SW2 / PAUSE), le compteur ne reçoit plus rien mais conserve sa valeur en cours, qui reste affichée. Un nouvel appui sur SW1 / START redémarre le comptage là où il était arrêté. L'appui sur le bouton SW3 / MR (RAZ) remet le compteur à zéro. Un appui sur le poussoir SW4 / LT (Light Test) permet de vérifier le bon fonctionnement de l'ensemble des segments de tous les afficheurs, en les allumant tous à la fois. Si le mode "Test Lampes" est activé durant un comptage, ce dernier n'est pas affecté et tourne toujours "au fond".

Multiplexage
L'affichage est de type multipléxé, les afficheurs sont allumés les uns après les autres, ce qui permet d'économiser de l'énergie et de limiter le nombre de fils de câblage. Pour plus de détails, merci de vous reporter à la page Affichage et multiplexage. La fréquence de raffraichissement est de l'ordre de 30 Hz pour chaque afficheur (environ 200 Hz pour les six), ce qui permet de ne pas voir les segments scintiller trop.

Choix dy type d'horloge
Vous noterez rapidement, je pense, l'absence de quartz pour la section horloge. La raison en est simple, c'est l'horloge interne du PIC (4 MHz) qui est utilisée. La précision de l'horloge interne est moindre (un peu plus sensible aux variations de température ambiante) que celle que l'on pourrait obtenir avec un quartz externe de 4 MHz, auquel on pourrait en plus ajouter un petit condensateur ajustable pour peaufiner le tout aux petits oignons. Cela est bien sûr possible, mais pour cela il faut libérer les deux broches OSC1 et OSC2, et donc déporter les deux fils de commande des deux derniers afficheurs sur d'autres broches du PIC. La borne RA5 n'est utilisable qu'en entrée, donc pas possible. Déporter une des entrées du port B vers cette entrée RA5 ? Oui, c'est possible. Ne plus utiliser la sortie Dépassement / OVL et libérer ainsi une ligne supplémentaire ? C'est aussi possible. Bref, la solution existe et elle n'est pas difficile à mettre en oeuvre. Une version Chronomètre 001b avec quartz externe peut donc voir le jour, si toutefois il y a de la demande. Tiens, il y a justement demande, je vous donne donc rendez-vous à la page Chronomètre 001b dès maintenant.

Logiciel du PIC

Code source (format MikroPascal V8.3) et fichier binaire compilé *.hex disponible dans l'archive suivante.
Chronomètre 001 - 16F628A (16/09/2009)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Prototype

Réalisé sur plaque sans soudure, avec ma carte Afficheur leds 7 segment 003, le tout en liaison avec ma carte EasyPic4.
Lors de la première mise en route, le proto ne fonctionnait pas correctement : d'un point de vue comptage - Start, Stop et Reset - tout était OK, mais les chiffres ne s'allumaient pas tous avec la même intensité, alors qu'ils étaient sensés se partager des tranches de temps égales. Le premier chiffre s'allumait toujours plein pot et les autres, presque pas.

chronometre_001_proto_001a chronometre_001_proto_001b

J'ai tout d'abord pensé à une erreur dans le code logiciel du PIC, bien que le simulateur Proteus m'indiquait que de ce côté là tout était OK (aucun afficheur n'avait à priori un temps d'affichage plus long que celui attribué aux autres). J'ai passé au moins deux heures à chercher le problème dans le logiciel, tellement jétais sûr qu'il venait de là. Et puis tout d'un coup, je me suis dit qu'il ne serait pas bête de changer les transistors pilotant les afficheurs... juste pour voir. Bingo ! Un des quatre transistors (celui qui pilotait l'afficheur N° 1 sur la photo) était en court-circuit entre émetteur et collecteur, ce qui faisait que l'afficheur était toujours alimenté. Je l'ai changé, et là tout allait nettement mieux !

chronometre_001_proto_001c chronometre_001_proto_001d

Etre têtu comme je le suis, c'est tout de même quelque chose !

Circuit imprimé

Non réalisé.

Corrections et remarques

16/09/2009
- Correction logiciel PIC. Avec le code publié le 13/09/2009, les heures n'étaient pas incrémentées et les minutes étaient incrémentées de deux points toutes les heures. C'est bête, mais je m'étais contenté de faire les tests sur une périodes de quelques minutes, ce que j'avais jugé suffisant. Comme quoi...