Dernière mise à jour :
05/12/2010
Présentation
Le compte-tours présenté ici est basé sur l'emploi
d'un PIC de type 12F675, tout petit composant à 8 pattes et fort
peu coûteux.
Il permet le comptage d'impulsions logiques issues
d'un capteur quelconque (optique, magnétique, mécanique,
etc), et l'affichage du résultat sur un ensemble de quatre
afficheurs sept segments. L'affichage peut se faire pour un nombre
d'impulsions données à la seconde ou à la minute.
Par exemple, un signal mesuré avec une fréquence de 50 Hz
peut être affiché sous la forme "50 impulsions par
seconde" ou sous la forme "3000 tours par minutes". La plage couverte
par cet appareil va de 1 Hz (60 tours par minute) à 166 Hz (9960
tours par minute) en mode d'affichage "tours par minute". En mode
d'affichage "impulsions par seconde" (fréquence), la plage couverte est
comprise
entre 1 et 7500 Hz, avec une précision de l'ordre du hertz. La
périodicité de la mesure est de une seconde pour les deux
modes d'affichage. Pour ceux qui ne supportent pas l'idée d'utiliser un
PIC avec une horloge interne dans une voiture (températures extrêmes
jouant sur la stabilité de la période - fenêtre - de mesure), il est
toujours possible de jeter un oeil sur le
compte-tours 001b,
qui utilise un PIC 16F628A avec quartz externe et qui en outre permet
de spécifier le nombre de temps et de cylindre. Pour afficher la
vitesse de rotation d'une simple fraiseuse, le montage présenté ici
peut certainement suffire. Et pour les allergiques aux composants
programmables, la page
Compte-tours 002
présente un circuit qui n'en comporte aucun.
Schéma
Le schéma qui suit montre s'il en était besoin, que je suis tombé
amoureux des CD4094.
Fonctionnement général
Il existe plusieurs façons de réaliser un compte-tours, les deux les
plus répandues sont les suivantes :
- conversion fréquence / tension après mise en forme par
un monostable et intégration par un réseau RC;
- comptage du nombre d'impulsion dans un laps de temps donné.
J'ai retenu la seconde solution, plus "linéaire".
Le comptage d'impulsions est réalisé dans une
"fenêtre" de temps précisement calibrée à
une seconde. En mode d'affichage "impulsions par seconde", le nombre
d'impulsions comptées est directement affiché, tel quel.
En mode d'affichage "tours par minutes", la valeur affichée
correspond au nombre d'impulsions comptées, multiplié pa
60 (puisque jusqu'à preuve du contraire il y a 60 secondes dans
une minute). La période de comptage est réellement de 1
seconde, elle n'intègre pas les routines d'affichage. En clair,
le raffraichissement des valeurs n'a pas lieu toutes les secondes, mais
un cheveu plus. Mais quelle importance si ce cheveu dure 1 ms, n'est-ce
pas ?
Affichage des valeurs
L'affichage du nombre d'impulsions mesurées est assurée
sans aucun multiplexage, au moyen de registres à
décallages de type CD4094. Les données à afficher
sont transmises sous forme sérielle en sortie DATA (sortie GP2
du PIC), et les registres sont synchronisés et
verrouillés via les lignes CLOCK et STROBE. Cette façon de faire évite
de procéder au multiplexage d'affichage, ce qui est plus simple
d'un point de vue logiciel mais présente le (petit) inconvénient de
consommer un peu plus de courant au niveau des afficheurs à LED.
Mode d'affichage
Le mode d'affichage est déterminé par la position de l'interrupteur SW1
:
- SW1 ouvert : affichage "nombre de tours par minute" (RPM)
- SW1 fermé : affichage "nombre d'impulsions par seconde" (fréquence)
Etage d'entrée
Sur le schéma présenté ci-avant, l'entrée
du compte-tours s'effectue sur la borne 7 (GP0) du PIC, et on doit donc
y appliquer un signal respectant la norme TTL si l'on veut que tout se
passe bien. En pratique, vous disposerez sans doute d'un signal loin
d'avoir la forme attendue. La forme et l'amplitude du signal disponible
dépend du capteur utilisé, ou de l'endroit où l'on
effectue le raccordement. Le schéma qui suit propose une
interface d'entrée relativement universelle, qui s'accomode d'un
signal d'entrée dont l'amplitude peut être comprise entre
3 V et 30 V, et dont la sortie se fait avec une excursion de 5 V, qui
correspond donc à ce qu'attend le PIC lui-même
alimenté sous 5V.
La résistance R1 limite le courant circulant dans la base du
transistor Q1, et la résistance R2 fixe le potentiel de base de
Q1 à la valeur de 0 V en absence de signal d'entrée. La
diode D1 supprime toute tension négative qui arriverait
là par erreur (des erreurs d'aiguillage peuvent arriver) et le
condensateur C1 forme avec un R1 un filtre passe-bas qui permet
d'absorber d'éventuelles suroscillations ou d'éventuels
parasites superposés au signal d'entrée. La
résistance R3 constitue la charge collecteur de Q1, et permet de
disposer d'un +5 V en sortie quand le transistor n'est pas passant
(tension d'entrée inférieure à 1,2 V). Avec la
valeur donnée à C1, le fonctionnement de cet étage
d'entrée convient pour la plage de fréquence
concernée (max 10 kHz dans le cas présent).
Choix des afficheurs
Les afficheurs utilisés ici sont des modèles à
cathode commune. Sachant cela, libre à vous de choisir le modèle que vous préférez, D350PK ou TDSR5160 par exemple.
Attention
à ne pas choisir des afficheurs à anode commune, ça ne fonctionnerait
pas. Si vos afficheurs sont dotés d'un point décimal (DP, Decimal
Point), pas besoin de le câbler.
Fichier binaire compilé et code source
Comme à mon habitude, l'ensemble des fichiers est disponible
dans une unique archive zip. Ecrit et compilé dans MikroPascal Pro V3.80.
Compte-tours
001 - 12F675 - (05/12/2010)
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 d'expérimentation. Pour la partie affichage, j'ai (ré)utilisé mon circuit d'
affichage LED 7 segments 005.
Ces
photos montrent le PIC 12F675 en action sur sa petite plaque
d'expérimentation sans soudure, l'entrée de mesure reçoit un signal
rectangulaire de 50 Hz / 5 Vcac venant de mon générateur de fonctions
synthétisé. L'affichage devrait être 50 Hz ou 3000 trs/min et non 47 Hz
ou 2820 trs/min, mais la température aidant, la précision n'est pas
trop au rendez-vous ce jour. Il faut vous attendre à ce petit décallage
et l'accepter. Dans le cas contraire, vous devez opter pour une horloge
stabilisée par quartz, ici il n'y avait plus assez de patte libres sur
le PIC. Vous pouvez toujours calibrer la fréquence de l'oscillateur
interne du PIC avec OSCCAL, mais il faut savoir ce qu'on fait. Disons
que ce circuit est un coup d'essai, pas pro mais pas trop mal réussi
non plus. Et puis rappelez-vous, une page
Compte-tours 001b a aussi vu le jour...
Circuit imprimé
Non réalisé. La vue 3D n'existe que pour donner un aperçu des
composants utilisés.
Corrections et remarques
05/12/2010- Portage du code logiciel depuis MikroPascal V8.3 vers MikroPascal Pro V3.80.
-
Correction erreur dans code de transfert des chiffres vers les
afficheurs. Avec la version précédente, la simulation fonctionnait bien
mais pas le proto (j'avais activé l'oscillateur du timer1 et les deux
broches GP4 et GP5 du PIC ne se comportaient pas normalement).
-
Modification logiciel pour meilleur précision de mesure. Tout le code
de mise à jour de l'affichage qui était dans la routine d'interruption
a été déporté dans la procédure principale, ce qui est évidement plus
"pro" (quand j'ai commencé ce compte-tours, je n'avais pas encore une
bonne vision de la meilleure façon de faire). La précision est
maintenant de l'ordre du hertz jusqu'à une fréquence d'entrée de 7 kHz.
-
Désormais, l'affichage est mis à jour même quand aucune impulsion
n'arrive à l'entrée du compte-tours, l'affichage montre bien 0000. Dans
la version précédente, le raffraichissement était bloqué quand la
broche d'entrée ne changeait plus d'état et l'affichage ne montrait
donc jamais la valeur 0000 en absence de signal d'entrée, sauf si
rien n'arrivait lors du démarrage du système.
- Désormais, la sortie
GP1 (point test TP1) ne répercute plus les données d'entrée mais change
d'état toutes les 100 ms, au rythme du Timer1. Cela permet de voir que
le programme tourne toujours même quand aucune donnée n'arrive sur
l'entrée de comptage.