|
A.M.F.N. |
|
Association
des Modélistes Ferroviaires de Nice
Commande
des aiguilles par servomoteur
depuis
un Arduino, via des modules PCA9685
(cliquez sur
les imagettes pour les agrandir)
Les
photos seront mises à jour à la fin du confinement
Notre réseau HO date du début des
années 70. À l'origine, les aiguilles étaient motorisée
par de gros relais 48V.
(À titre muséographique, voici un
exemplaire encore en place).
La gare
terminus a été refaite dans les années 80 en utilisant
pour la commande des aiguilles des moteurs GB Electronics.
Les moteurs GB sont collés sur une planchette
fixée verticalement sous le réseau.
Le petit relais jaune est commandé en 48V
et assure l'inversion de polarité du moteur.
La plaquette coulissante est entrainée par
une vis sans fin. Elle comporte en dessous des frotteurs qui établissent
les contacts sur le circuit imprimé.
Elle entraine également une tringle qui
bascule autour de la cornière en Meccano pour actionner la traverse
mobile des aiguilles.
Après quelques années, le manchon
de caoutchouc sèche et patine, et les contacts glissants finissent
par se rompre et n'établissent plus le contact. |
|
L'exploitation de la gare étant devenue
problématique, nous avons décidé de re-motoriser toutes
les aiguilles.
Les quelques moteurs
Tortoise utilisés étaient trop encombrants et trop chers
à généraliser, et le câblage devait être
mis au propre.
Nous avons donc cherché une solution facile
à mettre en oeuvre et surtout économique, compte tenu qu'il
y avait 31 aiguilles à traiter.
Finalement nous avons choisi d'utiliser de petits
servomoteurs très répandus dans le monde de la radiocommande.
Pour leur mise en oeuvre, nous avons conservé
le principe de fixation des moteurs GB.
Montage:
Les aiguilles sont par endroit très proches
les unes des autres. Il fallait donc minimiser l'encombrement horizontal
des moteurs. Mais nous ne sommes pas limités verticalement, le réseau
se présentant un peu comme une table.
Après nombre d'essais, voici le design
auquel nous sommes arrivés:
Un moteur comprend:
• une pièce principale en contreplaqué
de 15mm (hachurée).
• deux petits morceaux de contreplaqué de
10mm Cette épaisseur permet de fraiser plus facilement les trous
de fixation. Le trou oblong est indispensable pour faciliter l'ajustement
du moteur.
• un morceau d'équerre en PVC 15x15x1,5mm
de 25mm de long (en bleu).
• une tringle en corde à piano de 0,8mm
ou 1mm, de 115mm de long (en rouge).
• et un servomoteur type MG90S.
Les pièces en bois sont collées à
la colle à bois, et le servomoteur à la colle néoprène.
L'équerre en PVC est fixée par deux vis M4.
Les dimensions, relevées sur nos moteurs,
ne sont données qu'à titre indicatif. Toutes les pièces
ne sont pas représentées sur ce dessin.
La course du servomoteur (coupe en bas du dessin)
étant de 180°, il n'est soumis à aucun couple lorsqu'il
est en fin de course. On peut alors le mettre hors tension sans qu'il bouge
de sa position.
|
|
La tringle de commande de la traverse mobile est
en corde à piano de 0,8mm pour les aiguilles souples et de 1mm pour
les plus dures. Elle est dotée d'une tête qui la fait ressembler
à une grosse épingle. Cette tête est réalisée
en soudant une spire de fil de 0,5mm autour de l'extrémité.
Une fois en place, la tringle repose sur la traverse
mobile, la tête l'empêchant de passer au travers.
Lors du fonctionnement, la tête de la tringle
entraîne la traverse sur 2 à 3mm. L'autre extrémité,
qui suit le palonnier du servomoteur, décrit un demi-cercle. C'est
pour cette raison que l'équerre comporte une fente plutôt
qu'un trou.
Le servomoteur est collé à 90°
du support pour permettre à la tringle de dépasser suffisamment
par en dessous sans qu'on doive en régler la longueur de façon
précise. Il est parfois nécessaire d'ajouter un dispositif
de blocage à cet endroit (morceau de domino ou autre) pour empêcher
la tringle de remonter. |
|
Les
contacts:
Notre réseau étant "conventionnel",
il faut mettre les sections de voie sous et hors tension en fonction des
itinéraires établis.
Les servomoteurs ne comportant pas de contact
auxiliaire comme les moteurs d'aiguille traditionnels, nous avons utilisé
des relais séparés, disponibles sur Internet par blocs de
8.
Commande
de l'ensemble:
Les servomoteurs devant être commandés
par une électronique numérique quelconque, nous avons adopté
une carte Arduino Mega pour commander l'ensemble de la gare.
La commande se fait via quatre modules PCA9685
à 16 canaux. Ces modules se connectent sur le bus I2C de l'Arduino,
et chacun commande 16 servomoteurs ou 16 relais.
Les modules PCA9685 et les relais sont installés
sur une planchette sous le réseau:
|
L'Arduino est connecté au bout du câble
plat visible tout à fait en haut à gauche.
Le circuit en Veroboard est décrit plus
bas.
Les deux modules PCA9685 de gauche commandent
les servomoteurs, les deux autres les relais.
Les connexions sur les modules sont faites par
câbles Dupont en ce qui concerne le bus USB, par connecteurs DIL
"wrappés" en sortie des modules, et par bornier à vis en
ce qui concerne les relais.
En fonctionnement, l'ensemble est protégé
par un capot en Forex de récupération. |
Ce schéma (cliquer dessus) montre l'ensemble
des interconnexions, ainsi que le contenu de la petite carte en Veroboard.
Celle-ci assure plusieurs fonctions:
• protection par fusible et distribution des alimentations,
• séparation du 5V électronique
et servomoteurs,
• contrôle de la mise sous tension des relais,
• supervision du fonctionnement des servomoteurs.
|
|
Fonctions de la carte en Verobard:
• protection: les modules de relais fonctionnent
en 12V afin de minimiser le courant consommé. La partie logique
des PCA9685 et les servomoteurs fonctionnent en 5V. Chacune de ces alimentations
est protégée par un fusible de 2A.
• découplage du 5V: les servomoteurs
génèrent au démarrage un appel de courant susceptible
de perturber les circuits électroniques. C'est pourquoi le 5V des
servomoteurs est isolé du 5V des circuits par une diode et un condensateur.
• séquence de démarrage: les
modules de relais, qui comportent leur propre électronique, ont
des commandes actives à l'état bas. Mais à la mise
sous tension, les PCA9685 ont leurs sorties au niveau bas. Pour éviter
que tous les relais ne soient activés, même fugitivement,
les barrettes ne sont alimentées qu'après que l'Arduino ait
mis toutes les sorties des PCA9685 à l'état haut. C'est le
rôle du relais.
• supervision du fonctionnement des servomoteurs:
Lors de son fonctionnement, un servomoteur consomme
un "certain" courant. Lorsqu'il arrive à la position choisie, la
consommation devient très faible, sauf s'il est en butée
(limite externe) ou en fin de course (limite interne).
En supervisant la consomation de courant on peut
détecter que le servomoteur est en butée ou en fin de course,
et également en chronométrer le fonctionnement. C'est
bien sûr l'Arduino qui s'en charge. On ne le fait qu'une fois, lors
de l'installation.
En pratique tous nos moteurs ont les mêmes
caractéristiques, aussi ce circuit n'est plus d'une utilité
primordiale.
Câblage des servomoteurs:
Les servomoteurs sont câblés via
de petits modules de distribution
prenant en charge 8 servos.
Ces "répartiteurs" sont installés
au centre des groupes de 8 servos. Il sont réalisés à
partir d'une plaque
de "prototyping" qu'on croirait faite pour ça.
Les servos trop éloignés pour être
connectés directement à un répartiteur le sont par
des rallonges classiques à 3 conducteurs.
Le signal de commande est acheminé depuis
les PCA9650 aux répartiteurs par des groupes de 8 fils wrappés
d'un coté et de l'autre (petits fils blancs).
L'alimentation 5V est acheminée séparément
(borniers). |
|
Longueur des câbles:
C'est une question qui nous tracassait depuis le
début. En définitive:
• Bus I2C: il y a 1,10m entre l'Arduino
et la carte en Veroboard. Chaque module PCA9650 est 30cm plus loin.
Le bus I2C atteint donc 2,30m. Il n'y a pas de
terminateur coté PCA9650.
• commande des servomoteurs: le câble
le plus long entre PCA9650 et répartiteurs mesure 2,50m. Le servomoteur
le plus éloigné est à 1,50m de ce module, soit 4m
du PCA9650 qui le commande.
En dépit de ces longueurs inhabituelles,
l'ensemble fonctionne très bien.
Des essais de sensibilité aux parasites
génèrés par les locomotives restent néanmoins
à faire.
Pupitre
de commande:
Dans une première étape, nous avons
récupéré tel quel le pupitre de commande existant.
Nous avons seulement remplacé les lampes
témoin par des LEDs.
La partie "alimentations traction" est inchangée.
(photo provisoire). |
|
Comme on le devine sur la photo, la partie "voyageurs"
de la gare est gérée sur le principe des itinéraires,
dont on voit les boutons origine et destination ( jaunes) et les boutons
de destruction (rouges).
Les aiguilles des zones de remisage "voitures"
et "autorails" sont commandées directement par le biais d'interrupteurs.
Nous avons conservé ces interrupteurs, mais
ils posent des problèmes de logique et d'ergonomie. Aussi nous envisageons
de les remplacer plus tard par des boutons comme pour les autres voies.
L'Arduino Mega, caché sous son shield à
borniers, est fixé sur une planchette collée au dessous du
pupitre.
Les boutons, les interrupteurs et les voyants à
LED lui sont connectés directement.
Le câble plat assure la liaison avec le circuit
en Veroboard décrit plus haut, et achemine entre autres l'alimentation
5V et le bus I2C.
(photo provisoire). |
|
Programmation:
Le "sketch" Arduino est d'une architecture classique:
le microcontrôleur lit en permanence l'état des boutons et
des interrupteurs, et en cas de changement d'état, fait "le nécessaire".
Quelques détails:
• pour éviter des appels de courant trop
importants (certains itinéraires doivent commander jusqu'à
9 servomoteurs), les commandes de servomoteurs sont échelonnées
toutes les 200ms. Ainsi, le courant consommé ne dépasse
pas 1,2A.
• pour éviter une sur-consommation
si un servomoteur vient en butée, les servomoteurs sont désactivés
1s après utilisation.
• lors de la destruction des itinéraires,
les servomoteurs sont mis en point milieu, de sorte qu'aucune force ne
s'exerce plus sur eux. Cette option est due à notre incertitude
sur la tenue dans le temps du collage des servomoteurs à la colle
néoprène. En cas de problème, nous utiliserons une
autre colle, ou un autre mode de fixation.
• le programme comporte de nombreuses commandes
pour la mise au point. Elles sont bien entendu inutilisées en fonctionnement
normal.
• Concernant la commande des modules PCA9685, voir
la
page d'Aranacorp.
Bilan:
L'ensemble fonctionne parfaitement et l'objectif
de prix de revient est atteint.
La seule petite surprise désagréable
est le bruit que font les servos lors de leur fonctionnement, car nous
les espérions plus silencieux. Mais c'est un inconvénient
mineur, compte tenu du niveau sonore général (conversations,
roulement des trains) dans le local.
Et puis, s'ils sont plus bruyants qu'un Tortoise,
ils le sont quand même moins qu'un Lemaco, ou que les moteurs précédents.
Concernant la tenue dans le temps, seul l'avenir
nous dira ce qu'il en est. Le premier système de motorisation à
relais a vecu dix ans, le second à moteurs GB, vingt cinq ans,
celui-ci fera-t-il mieux?
|
page précédente:
utilisez la touche "PRÉCÉDENT(E)" de votre navigateur
|
|
|