Un Tachymètre réflectif

A quelle vitesse tourne ce truc là ?

Tachy atmega vu

          Que ce soit pour régler le ralenti de la Mobylette ou pour ajuster la vitesse de coupe du forêt dans la broche de la perceuse, il y a une multitude de cas où l'on a besoin de connaître la vitesse de rotation d'un équipement ou d'un moteur. Voici à quoi sert ce tachymètre sans contact, qui va nous donner le nombre de tours par minute, sur une plage de 60 à 9900 rpm, de tout ce qui présente un mouvement régulier pendant au moins une seconde. Et ceci, simplement par réflexion de la lumière d'une led infrarouge sur un adhésif réfléchissant, collé sur la pièce en mouvement . Un afficheur 4 digits de 7 segments, bien lumineux, donne la vitesse mesurée. Un bouton poussoir "Hold" permet de conserver la valeur tant qu'il est maintenu enfoncé  ! Deux leds, visibles par transparence, nous renseignent sur l'alimentation et, plus intéressant par ses clignotements sur la capture du rayon réfléchis. En effet, il faut impérativement avoir un pas cyclique régulier pour une mesure correcte; un allumage aléatoire révèle un réflecteur ondulé, mal positionné, ou une partie brillante qui renvoie elle aussi, la lumière de la diode IR... Pour l'alimentation, j'ai choisi une fiche USB 5 Volts, disponible maintenant partout, même sur les motos et vélos à assistance électrique. Les piles et batteries sont toujours déchargées lors d'un usage occasionnel (quand on en a besoin). Tachy atmega vu1

 

Le matériel utilisé pour faire tout ça :

Capteur reflectif

          Si le capteur réflectif infrarouge détecte un obstacle devant, le voyant rouge s'allume au niveau de la carte, tandis que le signal de sortie, continuellement de niveau bas, passe au niveau logique haut. Le module détecte sur une distance  de 2 ~ 10cm,  avec un angle de détection 35 °, sans lentille de focalisation. Cette distance peut être ajustée par un potentiomètre de réglage dans le sens horaire pour détecter plus loin; dans le sens antihoraire pour réduire cette distance. Une alternance de surfaces  noires et blanches offre un maximum de réflectivité . Trois pins sur le terminal de sortie ( VCC; GND; OUT)  dont la sortie OUT peut être directement connectée au port IO du microcontrôleur ou piloter directement un relais 5V. Un comparateur LM393 assure la stabilité avec une possibilité d'alimentation CC 3-5Volts.Affi 4dig 7seg

          Module d'affichage numérique à 4 digits, 7 segments (0.36 pouces) avec deux points décimaux d'horloge. Grace à la puce pilote TM1637, il n'a besoin que de 2 lignes de signaux synchronisés pour permettre au MCU de contrôler l'ensemble. Le dispositif d'affichage numérique rouge qui offre 8 niveaux de luminosité réglables par le bus. La plage d'alimentation s'échelonne de 3.3V à 5V avec un courant de 30 à 80 mA suivant le contraste et le nombre de segments allumés. L'interface de contrôle à 4 broches (GND est la masse, VCC est l'alimentation, DIO est la broche d'entrée et de sortie de données, CLK est la broche du signal de synchronisation).Atmega328p

          L'ATMEGA328P-PU est un microcontrôleur de chez ATMEL (maintenant Microchip) de 28 broches, 32K de mémoire et qui peut être cadencé jusqu'à 20MHz. Il est souvent utilisé sur l'Arduino UNO et c'est pour cette raison que je l'ai choisi; en effet l'IDE Arduino permet un développement aisé et la sortie compilée au format hex . Il n'est pas cher et un programmateur, genre Dataman, permet de buriner ses mémoires avec le fichier compilé. Donc pourquoi utiliser un module UNO complet, alors que l'on n'a pas besoin de tout cet accastillage, le volume s'en trouve ainsi bien réduit .

L'examen du schémas:

Tachymetre sch

          Un ATMega328 orchestre l'ensemble du tachymètre. J'ai fais des essais avec un ATTiny 85 mais le programme compilé est trop volumineux pour la place en mémoire offerte. L'alimentation 5 volts est fournie par une simple fiche USB pour tous les éléments . Un condensateur de 0.1µF (C1) bloque les éventuelles transitoires véhiculées et une résistance de 100K (R4) maintient un état logique haut sur l'entrée reset (PC6) pour pouvoir fonctionner . L'horloge externe du microcontrôleur est cadencée par un quartz de 16 MHz (Q1) tiré par deux capas de 18pF (C2-C3). L'entrée PB0 ( pin 14) est tirée au niveau haut par la déclaration d'un pull-up dans le programme et un appui sur le bouton (S2) la met au niveau bas, ce qui a pour effet de maintenir la valeur affichée pendant la durée du maintien. Les impulsions du capteur réflectif sont appliquées sur l'entrée PD2 (pin 4) qui est traitée en interruption pour la remise à zéro et l'extraction de la valeur d'un compteur interne (Timer 0) sur chaque front descendant des créneaux . Sur le capteur un potentiomètre ajustable permet de régler la sensibilité de la réception, par rapport à la lumière réfléchie, et une LED permet de s'assurer de la bonne position du tachymètre pour la mesure ( d'où le boîter translucide ). Deux lignes pilotent l'afficheur : une, pour les datas DIO (PD1) et l'autre, la ligne horloge synchronisée CLK (PD0). Les télégrammes envoyés par logiciel incluent la luminosité, les valeurs, le digit concerné, etc . Une étonnante simplicité ce schéma .

Le Circuit Imprimé :

Tachy atmega ci

          Le circuit imprimé est en backélite simple face, avec juste un strap, réalisé suivant la méthode décrite dans mes pages . Quelques composants, résistances et condensateurs sont en CMS (soudés de cette manière) . Le quartz, le strap et le bouton poussoir sont traversants . Les pistes sont en 8/10ème et le perçage en diamètre 1mm. 

 

La mise en boîte :

          Comme d'habitude, l'habillage est fait à l'imprimante 3D et en trois pièces :

  • le fond, en PLA, dessiné avec Designspark Mechanical, sans jeu excessif pour maintenir le (les) circuit(s). Deux trous, de diamètre 5 mm laissent la saillance à l'émetteur IR et  au photorécepteur, sans en gêner l'angle. Un passage de 4 mm est aménagé pour le fil de l'alimentation.
  • Le dessus: lui, est réalisé en PLA translucide pour avoir une vue sur l'état de la led d'alimentation et surtout sur celle qui visualise l'information, lors du passage de la bande réfléchissante. L'ensemble est fermé grâce à des pattes prolongées sur le couvercle, qui s'enchâssent dans la partie inférieure et assurent le plaquage du circuit au fond.   Une découpe affleure la surface de l'afficheur et un trou laisse passer le bouton en saillie.
  • Un troisième élément occupe l'espace entre le poussoir et le dessus du boîtier pour pouvoir garantir la liaison mécanique. 

Tachy atmega box

Les particularités du programme :

           Les nombreux commentaires permettent de suivre ligne par ligne ce que j'ai voulu faire ... La version complète est dans le zip ci-dessous . 

Ca commence par la bibliothèque de pilotage de l'afficheur. On ne va pas refaire le monde avec ce qui a le privilège d'exister .

 #include <TM1637Display.h> //Gestion CI de l'afficheur

Le raccordement électrique de l'afficheur

#define CLK 0 //Synchro horloge de l'afficheur
#define DIO 1 //Données de l'afficheur

Les variables du Timer qui seront comptées à chaque interruption validée

unsigned long lastDebounceTime = 0; // dernier temps depuis l'action sur la sortie
unsigned long debounceDelay = 1000; // incrémentation du temps si la sortie est activée

Le sous-programme d'incrémentation du compteur à chaque détection de niveau bas

void onChange()
{
  if ( digitalRead(pininterrupt) == LOW ) //Si interruption validée ...
    Count++; // incrémentation
}

Dans le setup, on déclare la validation de l'interruption au passage de l'état haut vers l'état bas
  attachInterrupt(digitalPinToInterrupt(pininterrupt), onChange,FALLING); //Validation de l'interruption 

Réglage de la luminosité de l'afficheur
  display.setBrightness(5);  //Réglage contraste afficheur 

 

Calcul dans la boucle du temps en milli-secondes soustrait d'une seconde et multiplié par 60 pour avoir des tours par minutes 
  if ((millis() - lastDebounceTime) > debounceDelay) { // Soustraction des milisecondes manquantes pour faire 1 seconde
    lastDebounceTime = millis();
    display.showNumberDec(Count * 60); // Affichage tours par minutes
    }
    Count = 0;

Blocage de l'affichage, si il y a appui sur le bouton et tant qu'il y a appui 

  holdStop : // maintien du blocage de l'afficheur tant que le bouton est appuyé 
    if ( digitalRead(holdButton) == LOW ) {
     goto holdStop;
     delay(1000);  
    }  


Les fichiers pour la réalisation :

          Dans ce fichier zip vous allez trouver 3 répertoires:

  • L'un dédié à la réalisation mécanique par Eagle Cadsoft (version gratuite ) ainsi que les schémas et le fichier Gerber pour faire fabriquer le circuit en industrie, si vous le souhaitez.
  • Le second, c'est le programme développé sous l'IDE Arduino et avec les fichiers compilés en BIN ou HEX pour être chargés dans l'ATMega avec un programmateur, genre Dataman.
  • Et le dernier, c'est la création du boîtier en format de sortie RSDOC et STL pour générer le G-CODE de l'imprimante 3D.

TachymetreTachymetre (621.53 Ko)

 

Et pour finir, l'utilisation:

          Pour s'en servir, il suffit de coller une bande d'aluminium bien lisse et pas trop large sur la partie tournante à mesurer. Un réflecteur adhésif en nid d'abeille donne une meilleure stabilité. Puis on alimente le tachymètre avec un USB quelconque; on l'approche la partie tournante jusqu'à observer un clignotement régulier de la led d'impulsion pendant au moins 1 seconde et on lit la valeur marquée . L'appui sur le bouton va maintenir cette valeur aussi longtemps que nécessite le confort de lecture.

          Pour les plus mécaniciens d'entre nous, pas de difficulté majeure à transformer ce tachymètre réflectif en tachymètre rotatif ! Il suffit de remplacer le circuit IR Reflex par une simple fourche caudine dont le rayon est coupé par un masque double, ce qui permet, après modification de la ligne de calcul dans le programme, de ne plus être tributaire des rebonds et défauts du réflecteur . Idem si on veut en faire un compte tours capacitif pour moteur thermique : il suffi d'utiliser une pince croco sur l'isolant du bougie-cord du cylindre 1 et de calibrer les impulsions à 5 volts via résistances et diodes zener puis de les appliquer en lieu et place du photo récepteur après l'avoir dessoudé ...  

         Les tachymètres du commerce ne valent pas très cher, mais là, on a le pouvoir de séduction en disant :"C'est moi qui l'ai fait !"

 

 

Ajouter un commentaire