Commande moteur d'aiguillage

Publié le par jml

Le principe de commande du servomoteur est simple mais nécessite quand même une electronique de pilotage. 

La position angulaire de l'axe du servo est déterminée par la largeur d'une impulsion (de 750 à 2250µs).

La rotation maximum est d'environ 180°.

J'ai conçu une carte supportant un maximum de 6 servos. Chaque carte est installée sur le réseau au plus proche des servos. 

Elle est connectée au reste du réseau par 3 fils uniquement. Alim 12V et 1 fil loconet.

Elle possède son propre régulateur de tension 5V afin de ne pas véhiculer cette tension sur l'ensemble du réseau (risque de captation de parasites)

un connecteur pour servo et 3 fils pour le relais de polarisation du coeur d'aiguille.

Un arduino nano assure la gestion de l'ensemble.

Shéma fonctionnel de la carte

Shéma fonctionnel de la carte

La carte électronique assure les fonctions suivantes :

* Interfacage Loconet

* Interfacage USB

* Commande (course limitée et progressive) des servo-moteurs

* Relais de réalimentation des coeurs d'aiguille. Le changement d'état se fait à la position médiane de l'aiguille pour éviter les court-circuit.

* Mémoriser (en EEProm) les différents réglages de configuration et la position mécanique de l'aiguillage.

* Une interface de dialogue utilisant le port USB de la carte arduino et la fenêtre de terminal du système de developpement arduino. (ou un autre terminal compatible)

Cette interface permet de :

- Définir les positions angulaires de chaque servo et leurs vitesses de déplacement.

- Attribuer un numéro d'aiguillage à chaque servo (numéro LocoNet unique utilisé par RTTC)   

- Visualiser les messages LocoNet.

- Lancer des tests d'endurance.

Implantation des éléments sur la carte contrôleur

Implantation des éléments sur la carte contrôleur

Fabrication des cartes

Puisque je n'ai besoin que de 4 cartes pour couvrir tous mes besoins, elles sont réalisées simplement sur des cartes proto.

Cette solution est acceptable sur un petit réseau. Sur un réseau plus important il faudra envisager de fabriquer des circuit-imprimés.

 

 

Les cartes contrôleur aiguillages en cours de câblage.
Les cartes contrôleur aiguillages en cours de câblage.

Les cartes contrôleur aiguillages en cours de câblage.

A combien ça revient ?

A combien ça revient ?

Le soft

Le soft

Shémas et Logiciel.

Pour ceux que cela intéresse, voici un .ZIP contenant tous les fichiers.

http://vulatrain.fr/images/ln_access.zip 

 

 

Utilisation

Connecter le cable USB, lancer le soft Arduino et ouvrir la fenêtre terminal en 115200 bauds.

A l'invite, taper 'H' pour avoir l'aide sur les fonctions. On doit obtenir ceci :

** Help ** LN_ACC V6 jml 110616 Vers 6
Chg pos Aig: A <Aig_log> <pos> 0=Droit 1=devie
Valeurs en EEP: C
Info: I
Maj Cvs: D <Aig> <DelProg> <PasDeProg>
Maj TypeObj: O <Aig> <TypeObj>
Maj Cvs: P <Aig> <ValMoy> <val_droit> <val_deviee>
Maj Aig_log: L <aig> <Aig_log>
Milieu: M <Aig> <ValMoy> 75-225
Trace Tram: N TrameLn MsgLnEtat (0 ou 1)
Mode test: T <NuTst> <param>
Raz CVs: Z 99

 

La commande 'i' permet d'afficher le paramètrage de chaque servo :

Info
CV Obj 1 TObj 2 logi 22 ValMoy 150 ValPosDt 140 ValPosDv 160 DelaiProg devie  DelaiProg 6 PasDeProg 1
CV Obj 2 TObj 2 logi 0 ValMoy 126 ValPosDt  116 ValPosDv 136 DelaiProg devie  DelaiProg 6 PasDeProg 1
CV Obj 3 TObj 2 logi 3 ValMoy 150 ValPosDt 143 ValPosDv 157 DelaiProg devie  DelaiProg 6 PasDeProg 1
CV Obj 4 TObj 2 logi 4 ValMoy 150 ValPosDt 143 ValPosDv 157 DelaiProg devie  DelaiProg 6 PasDeProg 1
CV Obj 5 TObj 2 logi 5 ValMoy 150 ValPosDt 143 ValPosDv 157 DelaiProg devie  DelaiProg 6 PasDeProg 1
CV Obj 6 TObj 2 logi 6 ValMoy 150 ValPosDt 143 ValPosDv 157 DelaiProg devie  DelaiProg 6 PasDeProg 1

 

'Obj' est le numéro physique du servo

'Logi' est le numéro logique du servo (c'est le n° loconet, il doit être unique sur le réseau)

'ValMoy', 'ValPosDt' et 'ValPosDv' détermine les valeurs angulaires pour les positions Milieu, Dévié et Droit de l'aiguille.

'DelaiProg' précise la vitesse de déplacement, plus il est élévé, plus le déplacement de l'aiguille sera lent.

 

notes:

* La valeur angulaire est exprimée en dizaine de micro-seconde (150 génère une impulsion de 1500 micro-seconde).

* Il faut commencer par définir (par tatonnement) la position milieu de l'aiguille grace à la commande 'M' puis programmer les 3 valeurs (Moy, Dt, Dv) grace à la commande 'P'. La valeur du point milieu est importante car c'est à ce point que le relais de polarisation du coeur d'aiguille est changé.

Avec le montage mécanique du servo que j'ai utilisé et des aiguillages N peco, un delta de 100 micro-secondes (voir moins) par rapport au point milieu est suffisant. exemple: si le point milieu est à 150, le droit est à 140 et le dévié à 160 (ou l'inverse si le servo est monté en sens opposé). Ces valeurs seront différentes en fonction du servo, du type de montage, du modèle d'aiguillage, etc ...

* La commande 'L' permet d'assigner un numéro logique à chaque servo. 

* La commande 'A' permet de tester l'aiguillage avec son N° logique.

 

Une petite vidéo résumant cette article.

Publié dans Electronique

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article