Electronique > Réalisations > Affichage / Mesure > Compte tours 001

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.

compte_tours_001_pcb_3d_a

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.

compte_tours_001

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.

compte_tours_001_entree_001

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.

d350_brochages_001a
d350_brochages_001b

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.

afficheur_leds_7_seg_005_proto_001a afficheur_leds_7_seg_005_proto_001b afficheur_leds_7_seg_005_proto_001c

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.