Dernière mise à jour :
01/01/2012
Présentation
Ce compteur est un compteur / décompteur doté d'un ensemble
de 6 digits 7 segments, spécialement développé pour un mordu de
vidéo qui se reconnaitra. Il peut bien sûr aussi servir à d'autres.
Ce compteur dispose de deux modes d'affichage :
- Mode "horaire" selon format "HH:MM:SS",
min 00:00:00
et max 23:59:59.
- Mode "image" selon format "888888",
min 000000
et max 999999.
La gestion de l'ensemble se fait au moyen d'un microcontrôleur dont la
référence restera secrète pendant quelques lignes
vidéo de
texte.
Avertissement
Schéma simulé avec succès mais pas encore entièrement testé pratiquement.
Schéma
Un seul circuit intégré programmable de type PIC 16F886,
un autre ne nécessitant aucune programmation (ça compense), 6 afficheurs, 6 transistors
PNP classiques et quelques résistances. C'est votre banquier qui va
être content.
Sélection mode d'affichage
Entrée AFF en broche 23 du PIC (RB2).
- entrée AFF = 0 -> mode "horaire"
- entrée AFF = 1 -> mode "images"
Cette
broche doit impérativement être portée à un état logique bas (masse) ou
à un état logique haut (+5 V) et ne doit pas être laissée en l'air.
Horloge de cadencement
Le
comptage ou décomptage peut être assurée au moyen d'une horloge interne
au PIC volontairement réglé à la seconde (via Timer1), ou par une
horloge externe qui vient d'un équipement électronique quelconque, du
moment que les signaux d'horloge soient au format TTL (0 V et +5
V). Dans le second cas, le signal d'horloge externe doit être appliqué
sur la ligne RB0 du PIC (broche 21).
Remarque
: l'horloge interne au PIC de 1 Hz peut aussi être utilisée en mode
d'affichage "images". A priori sans grand intérêt, mais puisqu'on peut
se le permettre, pourquoi donc se refuser à le prévoir. Après tout cela
permet un affichage de 000000 à 999999 avec cadencement à la
seconde, on ne sait jamais ça peut servir.
Mode affichage "horaire"
Entrée AFF en broche 23 du PIC (RB2), entrée CLK-INT en broche 24 du PIC (RB3), entrée CLK-EXT en broche 21 du PIC (RB0).
Entrée AFF = 0. Mode "horaire" selon format "
HH:MM:SS",
min
00:00:00
et max
23:59:59.
- entrée
CLK-INT = 1 -> mode "horloge interne". Un des timers du PIC est
configuré pour se déclancher toutes les secondes. Dans ce cas l'entrée
CLK-EXT détermine si oui ou non le comptage ou décomptage doit
avoir lieu.
- entrée CLK-EXT = 0 -> comptage / décomptage inactif
- entrée CLK-EXT = 1 -> comptage / décomptage actif (comptage si UD = 1 ou décomptage si UD = 0) - entrée
CLK-INT = 0 -> mode "horloge externe". Dans ce cas l'évolution du
comptage / décomptage est lié aux impulsions d'horloge qui arrivent sur
l'entrée CLK-EXT.
- entrée CLK-EXT 0-1 (front montant) -> comptage / décomptage (comptage si UD = 1 ou décomptage si UD = 0)
- entrée CLK-EXT 1-0 (front descendant) -> aucune action
Les trois broches 21, 23 et 24 du PIC doivent impérativement être portées à un état logique bas (masse) ou à un
état logique haut (+5 V) et ne doivent pas être laissées en l'air.
Mode affichage "images"
Entrée AFF = 1. Mode "image" selon format "
888888",
min
000000
et max
999999.
Dans
ce mode d'affichage, l'entrée CLK-INT n'est pas mise à contribution. L'incrément ou le décrément de la
valeur affichée se fait via les deux entrées de commandes CLK-EXT et UD (Up / Down, incrément / décrément).
- entrée CLK-EXT 0-1 (front montant) -> comptage / décomptage (comptage si UD = 1 ou décomptage si UD = 0)
- entrée CLK-EXT 1-0 (front descendant) -> aucune action
Remise à zéro du compteur
L'entrée
MR est en temps normal portée à un état logique haut via la résistance
de rappel R15 reliée au +5 V. En amenant un état logique bas (0 V) sur
cette entrée, le compteur est réinitialisé et est remis à la
valeur "000000".
Prépositionnement à une valeur de départ autre que zéro
Non
prévue à l'origine, cette option devrait pouvoir être implémentée sans
trop de difficulté si le besoin s'en faisait sentir. Les broches RB5 à
RB7 pourraient ainsi servir pour les fonctions "SET", "INC" et "DEC".
Affichage
Les 6 afficheurs sept segments à LED de type Anode Commune sont alimentés à tour de rôle selon le principe du
multiplexage d'affichage,
l'afficheur de droite (AFF1) étant allumé en premier, suivi du second à
partir de la droite (AFF2), jusqu'à arriver à l'afficheur le plus à
gauche (AFF6). La commande de chaque afficheur est assurée par un
transistor PNP de type 2N2907 (d'autres types basse puissance peuvent
convenir). Si on prend l'exemple de l'afficheur AFF1, on voit que sa
broche Anode commune est reliée sur le collecteur du transistor Q1. Ce
transistor Q1 ne peut conduire que si sa base se trouve à un potentiel
nul, ou pour être plus précis inférieur au +5 V d'au moins 0,6 V.Ici,
Q1 entre en conduction si la ligne C0 qui est reliée à la broche 2 du
PIC 16F886 (RA0) passe à l'état logique bas. Si cette ligne C0 est à
l'état logique haut, le transistor Q1 reste bloqué et aucun segment de
l'afficheur AFF1 ne peut s'allumer. Cette condition bien sûr n'est pas
suffisante pour illuminer l'afficheur ainsi activé. Il faut aussi que
les lignes qui correspondent aux segments à allumer soient portées
à un état logique bas. Si on veut afficher le chiffre 1 sur l'afficheur
AFF1, il faut d'une part que C0 soit à l'état logique bas et d'autre
part que les points notés B et C sur le schéma le soient également.
Comme entre le PIC et les segments des afficheurs il y a des
amplificateurs en courant de type darlington (ULN2803), les signaux de
commande issu du PIC sont donc inversés et doivent prendre un état
logique haut pour allumer les segments. Si on reprend l'exemple
précédent de l'affichage du chiffre 1 sur l'afficheur AFF1, les broches
12 et 13 du PIC (RC1 et RC2) doivent être à 1 pour que les segments B
et C s'allument. Avec le code logiciel fourni, le temps d'allumage de
chaque digit est de 3 ms, il faut donc 18 ms pour afficher tous les
digits. Cette durée de 18 ms correspond aussi à la fréquence de
rafraichissement de chaque chiffre, qui est donc voisine de 50 Hz et
suffit donc pour éviter tout scintillement gênant (fréquence voisine de
330 Hz pour passer d'un digit au suivant).
Remarque
concernant le nombre de "colonnes" : on commence avec la ligne C0
(broche RA0 du PIC) et on termine avec la ligne C6 (broche RB4 du PIC).
Cela fait 7 lignes de commande pour six afficheurs... erreur ? Non, la
commande C6 est montée en prévision d'une extension d'affichage avec
des LED séparées. Toujours grâce au multiplexage, on peut par ce moyen
disposer de huit points de visualisation supplémentaires, qui ne sont
pas mis à profit pour le moment. On pourrait ainsi mettre deux LED en
forme de flèche "haut" et "bas" qui indiqueraient si le compteur est en
mode comptage ou décomptage. Et d'autres LED indiquant le mode
d'affichage en cours (images ou horaire), sans avoir à se repiquer sur
les inverseurs de configuration. On peut bien sûr avoir d'autres idées,
je n'y ai pas plus réfléchi que ça.
Alimentation et régulation
L'alimentation
du circuit s'effectue en 5 V. Le courant est limité à 10 mA environ
dans chaque segment par les résistances R1 à R8 de 330 ohms. Si tous
les segments sont allumés (avec le point décimal qui ne nous sert pas
particulièrement ici), le courant total côté affichage n'excède pas 80
mA. Avec tout le reste du circuit, on peut miser sur une consommation
globale de 100 mA. De façon assez classique, on pourra donc utiliser un
régulateur de tension de type LM7805 en boîtier TO220, le petit frère
78L05 en boîtier plastique TO92 serait un peu limite. La tension
appliquée à l'entrée du régulateur devra être de 8 V au moins, n'allez
pas trop au delà pour limiter l'échauffement du composant (limitez-vous
à 12 V si possible, sinon ajoutez un petit dissipateur thermique sur le
régulateur).
Logiciel du PIC
Le fichier binaire compilé *.hex à flasher dans le PIC est
disponible dans l'archive zip ci-après (code source MikroPascal non disponible
pour ce projet). MikroPascal V5.30 utilisé pour le développement et la
compilation.
Compteur 009 - 16F886 - (01/01/2012)
Si vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Circuit imprimé
Non réalisé.