Commande de passage à niveau
avec clignotant lent alterné
à base de PIC 12F675
par Jean-Claude Grimaldi
Objectif
Commander la fermeture des barrières d´un passage à niveau et actionner un clignotant lent alterné quand un convoi s´approche.
Le système fonctionne dans n´importe quel sens et un convoi peut entrer dans la zone protégée et en ressortir du même côté après avoir fait une marche arrière.
Composants
(Coût total 7 à 8 euros hors PN.)

1 PIC 12F629 ou 12F675 (maximum 2,20 €)
1 support à 8 pattes (0,10 €)
4 diodes 1N400X (4 x 0,08 €)
1 régulateur 7805 ou 78L05 (0,40 €)
1 condensateur 100 µF (0,25 €)
1 condensateur 100 nF (0,10 €)
4 phototransistors IRE5 (4 x 0,35 €)
2 photodiodes IRES5 (4 x 0,35 €)
4 résistances 220 ohms (0,08 €) et 1 de 10kohms
4 leds rouges 1,8 ou 3 mm (4 x 0,30 ou 0,10 €)
1 morceau de Veroboard ou Cimec de 2 x 3 cm environ
Compléments éventuels pour fermeture du passage à niveau
Implantation des capteurs
La détection se fait par des capteurs à infrarouge, faciles à placer discrètement de part et d´autre du passage à niveau (pas encore camouflés sur la photo ci-dessous ).
Deux groupes de détecteurs optiques A+B et C+D sont placés de part et d´autre du passage à niveau et à une distance suffisante pour permettre la fermeture des barrières.
Principe de fonctionnement
Chaque détecteur est composé de deux  phototransistors placés côte à côte, de manière à détecter le sens de marche. L´angle d´ouverture permet de mettre en face une seule led IR. Le faisceau sera placé de biais pour éviter de voir l´espace entre deux wagons.
entrée dans la zone (de gauche à droite) correspond au front d´occultation de B pendant que A est occulté.
La sortie de la zone (de droite à gauche) correspond au front de désoccultation de B pendant que A est occulté.
La fonction de front montant ou descendant aurait pu être traitée par une logique analogique, mais il est intéressant de tout traiter par le PIC. Chaque barrière consomme deux entrées du PIC, sans aucun autre composant (sur certains réseaux très parasités, il sera peut être nécessaire de mettre une résistance de charge ou de découpler par un transistor).
La fermeture du PN est commandée par l'entrée dans la zone, par l'une ou l'autre extrémité.
L'ouverture du PN est commandée par la sortie de la zone, par l'une ou l'autre extrémité.
Nota1  : Il aurait été envisageable, comme dans la réalité, de commander l´ouverture des barrières dès que le convoi est sorti du PN en plaçant un capteur supplémentaire sur le passage à niveau, pour commander l´ouverture dès sa désoccultation. Mais, dans ce cas, rien n´aurait permis, en cas de marche arrière, de refermer les barrières avant l´arrivée du convoi.
Nota2  : Si le faisceau arrive à passer au travers du train, parfois le signal bascule un court instant (B se désocculte alors que A est réoccultée, ce qui est interprété par la logique comme une marche arrière, mais B se réocculte ensuite et tout revient dans l'ordre). C'est assez court pour ne pas perturber le fonctionnement global, ce qui laisse penser que, si l'on est limite, il n'y aurait peut-être pas vraiment besoin de mettre le faisceau en biais. En revanche, il existe un risque de dysfonctionnement - peu probable, mais on ne sait jamais, par exemple avec des objets étroits sur un wagon plat - si les longueurs du trou puis de l'occultation du dernier élément du wagon de queue sont toutes les deux inférieures à la distance entre les faisceaux reçus par les deux phototransistors (B se désocculte alors que A est réoccultée, laissant croire que le convoi est sorti en marche arrière, mais quand B se réocculte A est désoccultée, ne corrigeant pas l'interprétation erronnée).
Schéma électrique
Difficile de faire plus simple !
Grâce aux résistances intégrées au PIC, les phototransistors sont branchés directement sur les entrées du PIC et polarisés par les résistances de tirage intégrées dans le PIC (l'entrée GP3 n'en comprenant pas il faut une résistance externe de 10kohms).
Le système n´utilisant pas de lumière modulée, il pourra éventuellement être nécessaire de protéger les phototransistors pour qu´ils ne reçoivent pas directement la lumière du soleil (en général un petit tube ou un bout de gaine thermorétractable suffit).
Le clignotement alterné des feux utilise la sortie 1 en mode “tri-stable” (isolée au repos ou alternativement + 5 V et 0 V).
Les sorties du PIC fournissent 25 mA sous 5 V. Une interface de puissance (phototransistor ou phototriac) sera en général nécessaire pour la commande du passage à niveau.
Structure du programme
Voir aussi les commentaires dans le programme lui-même, qui est disponible ici dans son intégralité .)
Détection de présence : Pour détecter le sens du convoi, il a fallu traduire en algorithme séquentiel une combinatoire dynamique.
Détection du front montant de B pendant que A est occultée (tête de convoi entrant du côté de A) :
La Boucle Principale attend que A ou D soit occulté. La suite ne décrit que ce qui se passe à l´entrée AB (identique pour CD).
Si A et B sont occultés retour à la boucle d´attente.
Si A est occulté mais pas B, le programme avance et attend que B soit occultée, tout en vérifiant que A l´est toujours.
Si A n´est plus occulté retour à la boucle d´attente. Si A avait été occulté par un parasite (ou un doigt !), la perturbation n´aura donc duré qu´un cycle.
Si B s´occulte pendant que A l´est, c´est que la tête d´un convoi vient de franchir successivement A puis B : commande du PN.
Détection du front descendant de B pendant que A est occultée (queue de convoi sortant du côté de A) :
Après que la commande PN a été activée, une boucle attend que A (ou D de manière identique à ce qui suit) soit occulté. Voir la remarque ci-dessus relative au fait qu´en sortie l´état des phototransistors n´est scruté que chaque demi-période de clignotement.
Si A est occulté mais pas B retour à la boucle d´attente.
Si A et B sont occultés, le programme avance et attend que B soit désocculté, tout en vérifiant que A l´est toujours.
Si A n´est plus occulté retour à la boucle d´attente. Si A avait été occulté par un parasite (ou un doigt !), la perturbation n´aura donc duré qu´un cycle.
Si B se désocculte pendant que A est occulté, c´est que la queue d´un convoi vient de franchir B vers A : ouverture du PN.
Clignotant alterné
Clignotement progressif par modulation de phase (PWM) 
Le mode PWM permet un clignotement lent assez réaliste avec allumage et extinction progressifs.
Pour ne pas occuper le processeur par la gestion du clignotement au risque de rater la détection lors du passage d´une fin de convoi devant les capteurs, j´ai repris certains principes décrits par Psi pour sa commande Pic´Train2 : le clignotement est géré par le Timer sur la base de paramètres stockés en mémoire qui ne sont mis à jour que périodiquement. Le sous-programme de mise à jour ne dure que quelques millisecondes et peut donc être appelé à chaque boucle du programme de détection de sortie.
Le sens d´évolution est mis en mémoire et inversé lorsque l´intensité atteint 255 ou zéro.
Avec une valeur d´intensité qui oscille entre 0 et 255, il n´est pas nécessaire de faire évoluer l´intensité à chaque cycle mais il suffit d´ajouter ou d´enlever plusieurs unités (cran) à l´intensité tous lesn cycles, ce qui allège le traitement et facilite le réglage.
Comme dans Pic´Train2, pour la commande de hachage en mode PWM, la période est fixée à 255 tops d´horloge (après division par 16) et la valeur de l´intensité varie de 0 à 255. C´est astucieux car le temps de conduction est égal à la valeur de l´intensité, suivi d´un temps de repos égal à (255 — Intensité).

Sortie tristable pour avoir un allumage alterné de chaque groupe de leds 
La signalisation autorisée par le montage comporte deux clignotants en mode alterné de chaque côté de la voie (la réglementation actuelle en France ne rend plus qu´un seul clignotant obligatoire pour les trains – il y en a deux pour les avions – mais ce n´est pas le cas partout et les puristes pourront toujours n´en mettre qu´un). Il y a donc quatre leds, commandées deux par deux, mais on peut n´en mettre que deux pour remplacer le clignotement alterné par un seul feu en clignotement lent.
Pour réaliser un clignotement alterné, la sortie du PIC est utilisée en mode tristable, l´éclairement de l´un des groupes de leds étant exactement à l´opposé de celui de l´autre groupe.
Un des groupes de deux leds est branché entre le + 5 V et la sortie au travers d´une résistance limitant le courant, l´autre groupe de deux leds étant branché entre le 0 v et la sortie, également avec une résistance de limitation.
Au repos la sortie est paramétrée comme entrée, donc avec une haute impédance et son potentiel est libre. Comme il y a quatre leds rouges en série entre le + 5 V et le 0 V, la chute de tension dans les leds (environ 4 fois 1,6 volt) est trop forte pour que les leds soient allumées lorsque la sortie est à l´état neutre (pas de convoi détecté dans la zone du passage à niveau).
Quand une présence est détectée dans la zone du passage à niveau, le programme affecte le port en sortie : selon la commande état haut ou état bas du PWM, la sortie est soit à 0 V soit à + 5 V. Lorsque la sortie est à l´état haut, les deux leds branchées entre la sortie et le 0 V sont allumées, lorsque la sortie est à l´état bas, les deux leds branchées entre la sortie et le + 5 V sont allumées.

J.-C.
Grimaldi
10-05-2009

N.B. — Textes, schémas, programmes © JC Grimaldi pour Ptitrain. — Toutes vos remarques et commentaires sont bienvenus, et les pages de Ptitrain ne sont pas statiques : les erreurs sont corrigées sitôt connues, les améliorations, éclaircissements, etc. feront l´objet de mises à jour fréquentes.
Ptitrain, l´e-magazine du train éclectique. — Directeur de la publication : Christophe Franchini.
Rédacteur en chef : Jean-Denis Rondinet