Un afficheur de vitesse pour trains miniatures à microcontrôleur PIC16F84 - 04 / P-ML501



La vitesse d’un train miniature, ramenée à l’échelle réelle, est une donnée très difficile à apprécier. Elle intéresse pourtant de nombreux modélistes, autant par son aspect "ludique" que par le désir d’augmenter le réalisme de leur réseau en respectant les diverses limitations de vitesse sur leurs rames. Il devient, dans ces conditions, nécessaire de disposer d’un compteur de vitesse, fonction que réalise le montage à microcontrôleur PIC présenté dans cet article.



La photographie de la figure1 donne une idée de notre ensemble d’affichage de la vitesse.
L’électronique tient sur un circuit imprimé de 5 x 8 cm (voir figure 6). Le microcontrôleur PIC16F84-ML501 gère la détection, le calcul, et la sortie des données d’affichage du compteur.
La vitesse est représentée sur trois afficheurs électroluminescents, sur une plage allant de 000 à 999 km/h.
Le montage dispose d’une sortie active lorsque la vitesse calculée dépasse une valeur préprogrammée.
Le principe de calcul de la vitesse est basé sur l’intervalle de temps séparant deux impulsions sur une distance donnée (la formule bien connue v = d/t).
Les détecteurs sont un couple d’Interrupteurs à Lames Souples (ILS), dont le contact se ferme sous l’effet d’un aimant placé sous la locomotive (voir figure 11).
L’alimentation du montage sera fournie par une source de tension continue entre 5 V et 16 V, 100 mA minimum (bloc secteur, par exemple).
Par l’intermédiaire du logiciel VITESSE.EXE (Windows 95/98), l’utilisateur peut paramétrer le compteur selon ses propres souhaits (voir figure 13) :
- échelle du modèle : Z (1/220), N (1/160), HO (1/87), O (1/43.5), I (1/22.5) ;
- distance entre capteurs de détection (valeur maximale donnée dans le programme) ;
- choix de la vitesse de comparaison, au-delà de laquelle une sortie devient active à +5 V ;
- durée d’affichage : de 1 s à 240 s ou permanent jusqu’au prochain calcul de la vitesse.
L’échelle est fixée à HO par défaut lors de la programmation du PIC, la distance à 100 mm, la vitesse de comparaison à 100 km/h et la durée d’affichage à 10 s.

Figure 1 : Vue d’ensemble de l’afficheur de vitesse pour trains électriques. A gauche, remarquez le câble de liaison 2 fils avec le PC pour la programmation du microcontrôleur embarqué sur la carte.

Le schéma synoptique du montage et le principe de fonctionnement

Figure 2 : Schéma synoptique de l’afficheur de vitesse pour trains électriques.

Voir la figure 2. Un couple de détecteurs ILS en parallèle est connecté à un circuit anti-rebond afin qu’une et une seule impulsion soit transmise au microcontrôleur lors du passage du train sur chaque détecteur (les interrupteurs à lamelles métalliques ont tendance à générer de multiples et brefs rebonds à la fermeture du contact).
Le signal issu de l’anti-rebond est appliqué sur l’entrée RB0/INT du PIC16F84-ML501.
Lorsque cette entrée détecte un front descendant (événement au passage sur le capteur), un processus logiciel de comptage temporel est initié (voir paragraphe "Le PIC16F84 et son programme ML501"). Le calcul de la vitesse est, quant à lui, exécuté au deuxième front détecté sur la même entrée RB0/INT.
En permanence, le PIC16F84-ML501 sort les données pour l’affichage de la vitesse sur les lignes RB1 à RB7.
L’affichage est multiplexé : les afficheurs sont activés l’un à la suite de l’autre, en boucle, mais si rapidement que l’oeil les perçoit simultanément allumés. Les trois lignes RA0 à RA2, activées séquentiellement, contrôlent alors l’illumination synchronisée de l’afficheur relatif à la donnée du digit émise sur RB1 à RB7, en connectant, par un transistor, le commun de l’afficheur à la masse.
Concernant le paramétrage du montage par la liaison série du PC, un simple translateur de niveaux à résistance série convertit les niveaux +/–12 V de la liaison RS232 en niveaux compatibles TTL 0/5 V.

Le PIC16F84 et son programme ML501
Lors de la mise sous tension, le PIC teste le niveau sur l’entrée RA4. S’il détecte 0 V, alors la liaison série est connectée et le microcontrôleur se met en attente de réception de six octets depuis le PC, paramétrant l’échelle, la distance, la vitesse de comparaison et la durée d’affichage (émis par le programme VITESSE.EXE).
A leur réception, il dispose ces données dans sa mémoire EEPROM de données puis exécute le programme principal de comptage en boucle, dans lequel il ira lire ces données. En l’absence de liaison série, le PIC exécute directement le programme principal du compteur.
Dans le programme principal, le PIC exécute en boucle le multiplexage des afficheurs.
Chaque détection par ILS génère une interruption qui déroute le PIC sur une routine spécifique : à la première détection, le PIC initialise une variable COUNT 16 bits à 0. Cette variable est par la suite incrémentée automatiquement toutes les 2 ms, à chaque débordement du timer TMR0. A la deuxième détection, le PIC stoppe l’incrémentation de cette variable 16 bits et procède au calcul de la vitesse :

V (km/h) = 3,6 x Echelle x D (mm) / T (ms) =>
V (km/h) = 1,8 x Echelle x D (mm) / COUNT

La valeur maximale de COUNT étant de 65 535, la durée maximale entre les deux détections sera de 2 min 11 s. Au-delà, la vitesse affichée sera nulle.
Une fois la vitesse calculée, le PIC décompose la vitesse sur trois digits (unités, dizaines, centaines), les dispose en mémoire volatile RAM pour utilisation lors du multiplexage des afficheurs.
Le PIC compare aussi la vitesse calculée avec la vitesse de comparaison spécifiée par l’utilisateur et positionne la sortie RA3 en conséquence. Pendant la phase de comptage, le PIC affiche "– – –", clignotant au rythme de 1 Hz. L’affichage maximal est de 999 km/h, même si la vitesse calculée est supérieure. Pour les vitesses inférieures à 100 km/h, l’extinction du zéro des centaines est automatique.
Le programme ML501 pour le PIC16F84 et le programme de gestion VITESSE.EXE sont téléchargeables à l’adresse : http://www.electronique-magazine.com/telechargement.asp

La description du schéma électrique

Figure 3 : Schéma électrique de l’afficheur de vitesse.

Voir la figure 3. L’alimentation +5 V de l’électronique est assurée par le régulateur de tension REG1. La tension +V à appliquer en entrée pourra être issue d’une alimentation stabilisée ou d’un bloc secteur. C1 est une capacité de lissage tandis que C2 et C3 sont des capacités de découplage.
Si l’on dispose déjà d’une source externe régulée +5 V, il suffit de retirer le régulateur, de relier les connexions VI et VO à son niveau et d’appliquer la tension d’entrée.
L’ensemble Q1, C4 et C5 forme l’oscillateur 4 MHz du PIC16F84-ML501. L’anti-rebond relié à RB0/INT est réalisé avec R3 et C6.
Les 7 sorties RB1 à RB7 alimentent les afficheurs via des résistances de 330 Ω, limitant le courant pour chaque segment à environ 7,5 mA.
L’activation séquentielle des afficheurs est assurée par les sorties RA0 à RA2, qui connectent la cathode commune de chaque afficheur à la masse par un transistor NPN 2N2222.
La sortie OC est à 5 V lorsque la vitesse détectée est supérieure à la vitesse de seuil programmée, 0 V sinon.
La liaison série est connectée sur l’entrée RS232 TXD. En absence de liaison, la résistance R2 tire l’entrée RA4 à 5 V.
En présence de la liaison, le potentiel de –12 V (ligne RS232 au repos) génère une tension de 0 V sur l’entrée RA4 via le diviseur résistif R1 et R2 : le PIC16F84-ML501 détecte alors sa présence. Pendant la transmission de données, le potentiel de la ligne RS232 passe alternativement de –12 V à 12 V. Le potentiel de 12 V génère sur l’entrée RB0 une tension de 5,6 V via la résistance de limitation R1 et la diode interne de protection à VDD de l’entrée RB0.

Figure 4 : Schéma d’implantation des composants.

Figure 5 : Photo d’un des prototypes du régulateur de vitesse pour trains électriques. Au premier plan, sous C3, R3 et C6, remarquez le connecteur de liaison au PC.

Figure 6 : Dessin, à l’échelle 1, du circuit imprimé de l’afficheur de vitesse pour trains électriques. Pour faciliter la mise en boîte, il est possible de séparer la partie "affichage" de la partie "compteur". Dans ce cas, il faudra raccorder les deux parties avec du câble en nappe à 11 conducteurs.

Figure 7 : Pour l’esthétique, les ILS pourront être inclus dans des supports en bois tendre peints en noir (voir aussi figures 8 et 9). L’espacement entre les deux ILS est de 10 centimètres.

Liste des composants
R1, R3 = 22 kΩ 1/2 W
R2 = 10 kΩ 1/2 W
R4, R5, R6 = 2,2 kΩ 1/2 W
R7 à R13 = 330 Ω 1/2 W
C1 = 220 μF 25 V électrolytique
C2 = 4,7 μF 10 V tantale
C3 = 100 nF 63 V polyester
C4 - C5 = 22 pF céramique pas 5,08 mm
C6 = 220 nF 63 V polyester
REG1 = Régulateur LM7805
T1, T2, T3 = NPN 2N2222A
CI1 = μcontrôleur PIC16F84-04/P-ML501
AFF1 à AFF3 = Afficheur CC D201PK, TDS 3160-K
Q1 = Quartz 4 MHz
ILS1 - ILS2 = Interrupteur à lame souple 1 contact Travail

Divers :
1 Support "tulipe" 2 x 9 broches
1 Connecteur mâle 2 points pour c.i.
1 Connecteur femelle 2 points
1 Connecteur DB9 femelle à cosses Aimant miniature pour ILS (1 par locomotive) Visserie Ø 3 mm pour régulateur (vis + écrou) Fil de câblage souple Circuit imprimé 5 cm x 8 cm


La réalisation pratique
Le dessin du circuit imprimé est donné en figure 6.
Son perçage se fera avec un foret de diamètre 0,6 mm pour les trous des afficheurs, et 0,8 mm pour tous les autres éléments.
Les broches de connexions du régulateur nécessiteront un perçage à 1 mm.
Les trous de fixation en coin de plaquette et celui du boîtier du régulateur seront percés à 3 mm. Si l’on souhaite dissocier l’affichage de la carte, découper celle-ci selon les repères disposés côté cuivre (il faudra alors réaliser les connexions entre les deux cartes avec 11 fils de câblage souples ou en nappe).
L’implantation des composants est donnée sur la figure 4.
La photo de la figure 5 vous permettra de bien vous rendre compte de l’emplacement des composants.
Reportez-vous à la liste des composants pour la valeur des éléments.
Une fois le perçage terminé, on installera les 2 straps, puis les résistances, les condensateurs (attention au sens pour les deux condensateurs polarisés), les transistors, le régulateur, les afficheurs, le support de circuit intégré, le connecteur RS232 et enfin le quartz.
Si l’on dispose déjà d’une alimentation continue externe 5 V, ne pas souder le régulateur REG1 et ponter les connexions comme indiqué sur l’implantation.

La réalisation des détecteurs
Les deux détecteurs ILS seront disposés au milieu de la voie et connectés en parallèle (voir figure 7). Si les pattes de connexion doivent être courbées, on utilisera une pince à bec afin d’éviter toute contrainte sur l’ampoule de verre, extrêmement fragile (voir figure 8).
On pourra améliorer l’esthétique des capteurs en plaçant les ILS dans une pièce de bois ou de plastique ouverte dans sa longueur et biseautée à ses extrémités (voir figures 9 et 10).
L’aimant disposé sous la locomotive devra être suffisamment proche de l’ILS pour activer le contact (tranche de l’aimant en regard et perpendiculaire à l’ILS comme le montre la figure 11), et placé plus haut que les rails afin de ne pas provoquer de blocage lors du passage sur les appareils de voie.

Figure 8 : Les pattes des ILS seront pliées avec précaution.

Figure 9 : Un ILS inséré dans son support (dimensions HO 1/87e).

Figure 10 : La loco arrive sur le capteur. L’aimant qui se trouve dessous va le faire coller.

Figure 11 : Détails de la mise en place des ILS sur la voie et de l’aimant sous la locomotive.

La mise en route et la programmation personnalisée
La première étape consiste à programmer le PIC16F84-ML501, c’est-à-dire transférer le code de gestion du compteur (ML501.HEX) dans la mémoire de programme du microcontrôleur.
Pour cela, vous devez, bien entendu, disposer d’un programmateur de PIC ! Si ce n’est pas le cas, vous pourrez vous procurer ce microcontrôleur, déjà programmé en usine, chez certains de nos annonceurs (voir publicités dans la revue).
Avant d’insérer le PIC16F84-ML501 programmé sur son support, appliquer la tension d’alimentation et vérifier la présence du 5 V entre les broches 5 et 14 du support. Si la tension est correcte, débrancher l’alimentation, insérer le microcontrôleur et réalimenter le montage.
Dès lors l’activation des ILS doit conduire à un changement de l’affichage ("– – –" clignotant à la première détection et visualisation de la vitesse à la deuxième détection). Si la vitesse affichée est supérieure à 100 km/h, la sortie OC doit être active à 5 V. On rappelle que les paramètres par défaut du compteur sont : une distance entre capteurs de 100 mm, une échelle HO et une vitesse de comparaison de 100 km/h.
Pour un paramétrage personnalisé du compteur, la carte sera connectée à un PC par une liaison série dont le câblage du connecteur (côté PC) est représenté sur la figure 12.
Pour la programmation, débrancher le montage, connecter la liaison série PUIS réalimenter le montage et exécuter le programme VITESSE.EXE (fenêtre principale du programme visible sur la figure 13).
Entrer les paramètres et appuyer sur le bouton de programmation.
Les données sont alors programmées en EEPROM de données.
Retirer le connecteur série de la carte. Le montage est opérationnel avec la nouvelle configuration.
La figure 14 illustre un exemple d’application du montage en limiteur de vitesse (le dispositif de contrôle de l’alimentation n’est pas décrit dans cet article).
Bonne réalisation et ne faites pas trop d’excès de vitesse avec vos trains !

Figure 12 : Câblage du connecteur DB9 femelle de raccordement au PC vu côtésoudures.

Figure 13 : La fenêtre du programme VITESSE.EXE. Ce programme, tout comme celui du microcontrôleur, est téléchargeable à l’adresse : http://www.electronique-magazine.com/telechargement.asp.

Figure 14 : Utilisation possible du compteur en régulateur sur une zone à vitesse limitée. La vitesse de comparaison sera celle indiquée par le T.I.V (Tableau Indicateur de Vitesse).
Commentaires



Font Size
+
16
-
lines height
+
2
-