Commande d’aiguillage par sevomoteur avec Arduino.

Le choix d’un microcontrôleur pour commander les aiguillages.

Une vidéo est en préparation pour présenter les possibilités de cette carte de commande

Dans l’article consacré à la commande d’aiguillage à mouvement lent avec un servo-moteur l’option de commande du servo par un microcontrôleur a été mentionnée.

La programmation de ces véritables ordinateurs ultra miniaturisés est à la portée de tout un chacun avec les environnements de développement intégrés (IDE) proposés aujourd’hui.

Rappelons pour mémoire le succès de la famille des PIC de Microchip qui avec un circuit intégré et une poignée de composants peut servir à tous les usages possibles et imaginables. L’une des applications les plus connues des PIC de Microchip pour les modélistes ferroviaires reste le décodeur en commande digitale.

Une fois de plus, c’est le monde de l’open source qui nous ouvre en grand la porte pour nous donner accès à la programmation des micro contrôleurs, c’est la solution Arduino.

Arduino, en plus de l’IDE gratuit d’une simplicité et d’une efficacité remarquables offre plusieurs versions de cartes prémontées accessibles à tout un chacun pour des prix défiant toute concurrence.

Un système de cartes à enficher dans la carte du microcontroleur permet de disposer de capteurs et de commandes qui répondent à l’immense majorité des applications.

La communauté Arduino s’appuie aussi sur des plaques d’essais qui permettent de cabler facilement tout type de prototypes.

Des bibliothèques (c’est la traduction un peu plus fidèle de library) sont mises à disposition, gratuitement le plus souvent, pour répondre à toutes sortes de besoins de programmation.

Dans notre cas, nous pouvons citer 2 librairies qui intéresseront les modélistes ferroviaires au plus haut point. Il s’agit bien entendu de la librairie « Servo » présente par défaut à l’installation de l’IDE qui facilite la commande des servo-moteurs dont nous avons besoin pour la commande à mouvement lent dont il est question ici.

Une seconde librairie permet de faciliter la création de décodeurs DCC pour les commandes numériques : c’est la librairie « Loconet ».

Toutes les fonctions élémentaires sont préprogrammées, il suffit d’appeler la fonction voulue. Il ne reste plus qu’à programmer la partie que nous souhaitons personnaliser, à savoir les instructions de commande (bouton, signal, etc.) et les actions souhaitées.

Pour couronner le tout, les fonctions les plus courantes ont souvent déjà été programmées et elles sont partagées gracieusement par les concepteurs.

La documentation disponible est très vaste, notamment en ligne.

D’excellents ouvrages sur l’Arduino sont publiés, ils couvrent tous les besoins depuis ceux du débutant jusqu’à ceux du programmeur confirmé

Le matériel Arduino pour la commande à mouvement lent.

Pour disposer de l’électronique sous une forme très compacte nous opterons pour une carte Arduino nano.

Cette carte dispose des sorties pour commander 6, et même jusqu’à 12 servos. En tenant compte de toutes les broches nécessaires aux commandes du servo telles que les boutons pour changer la position et les informations nécessaires pour les réglages, il est possible de commander facilement jusqu’à 4 servo-moteurs sans le moindre composant additionnel.

Youtube offre de nombreuses vidéos qui présentent comment piloter un sevo-moteur avec l’Arduino telles que celle-ci.

Le programme pour la commande à mouvement lent.

Coder son propre programme

Le plus courageux pourront concevoir un programme permettant de régler par des boutons tous les paramètre du servo :

  • ajustement de la position de repos.
  • ajustement de l’excursion maximum.
  • réglage de la vitesse du mouvement.
  • etc.

Solution commerciale.

Une solution commerciale existe déjà chez Esu avec le Switch Pilot.

Programmes disponibles en partage sur internet.

Voici une suggestion de programme de pilotage de la commande à mouvement lent qui permet de faire appel :

  • à un bouton poussoir pour faire changer la position de l’aiguillage
  • à une centrale DCC puisque le programme gère la communication avec la centrale et se comporte comme un décodeur.

Les paramètres d’ajustement de la position centrale, de l’excursion comme de la vitesse de déplacement se font en modifiant les valeurs des variables dans le programme même. Ces variables sont très faciles à trouver grâce aux commentaires figurant dans le programme.

Le câblage est aussi expliqué dans les commentaires du programme.

L’auteur de ces lignes n’a testé que la solution analogique avec le bouton poussoir. Le lecteur pourra explorer le fonctionnement en tant que décodeur DCC et éventuellement partager ses conclusions en publiant un commentaire sur cette page.

Ce programme est partagé sous licence Creative Commons avec attribution. Il peut donc être utilisé sans restriction à condition d’en mentionner l’auteur.

Lien vers le programme Arduino pour la commande d’aiguillage, le fichier est nommé « Quad_Servo_Arduino_Sketch.zip »

Programme dédié pour la commande à mouvement lent.

N’ayant pas trouvé de programme de ce type et pour répondre aux besoins spécifiques d’une commande universelle convenant à la commande des aiguillages tout comme à l’ouverture et à la fermeture des portes d’une remise ou au mouvement des barrières d’un passage à niveau en passant par l’articulation d’une grue à eau ou d’une grue de manutention, l’auteur a développé le programme permettant de régler le servo à sa convenance.

Le fonctionnement de base sans composants additionnels est le suivant :

  • Un commutateur à 2 positions permanent ou momentané (ou 2 ILS ou un ou plusieurs contacts de relais ou optocoupleurs) permet de sélectionner la position du servo. Le pole commun de l’interrupteur est branché sur le 0V, chaque position du commutateur est branchée respectivement sur les entrées D7 et D8.
  • Le servo est branché sur l’alimentation +5V et GND (0V) ainsi que sur le signal de commande disponible sur la broche D9.
  • Un témoin de signalisation de la position de l’aiguillage est disponible sur la sortie D13 (visualisation par défaut avec la diode intégrée sur la carte Arduino).
  • La carte arduino est branchée sur une alimentation de 5V, soit sur les broches +5V et GND (0V), soit sur la prise mini USB de la carte avec un chargeur de téléphone portable par exemple. Il est préférable de ne pas utiliser une alimentation par le port USB d’un ordinateur pour prévenir tout risque de détérioration de l’ordinateur. Prévoir une intensité de quelques centaines de milliampères.
  •  En fonctionnement basique :
    le déplacement du servo va de 75° à 105°, soit une excursion de 30° (*).
    le déplacement se fait en 600ms (*).

En forçant certaines entrées de la carte Arduino à 0V, et en ajoutant 3 potentiomètres, il est possible de disposer de fonctionnalités avancées

  • Entrées D7 et D8 branchées sur le 0V (les 2 broches du commutateur à 2 position) : commande du servo par un bouton poussoir simple branché sur l’entrée D2 et le 0V du type va et vient (chaque appui sur le bouton poussoir fait changer la position du servo.
  • Entrée D3 à 0V : choix de la position initiale du servo en cas de commande par un bouton poussoir
  • Entrée D4 à 0V : activation des 3 potentiomètres de réglage de la vitesse, de la butée min et de la butée max du servo.
    •  La limite mini du déplacement est réglable de 0° à 89° par pas de 1° au moyen d’un potentiomètre de 10k branché sur l’entrée A1 (tension de la broche A1 comprise entre 0V et 5V).
    •  La limite maxi du déplacement est réglable de 91° à 180° par pas de 1° au moyen d’un potentiomètre de 10k branché sur l’entrée A2 (tension de la broche A2 comprise entre 0V et 5V).
    •  La vitesse du déplacement est réglable de 10 à 100ms par degré de déplacement par un potentiomètre de 10k branché sur l’entrée A0 (tension de la broche A0 comprise entre 0V et 5V).
    •  Le temps de déplacement mini pour une excursion de 180° est par conséquent 10 x 180 / 1000 = 1,8s.
    •  Le temps de déplacement maxi pour une excursion de 180° est par conséquent 100 x 180 / 1000 = 18s.

Il est aussi possible d’utiliser les potentiomètres de limite de déplacement pour que le mouvement du servo suive le déplacement du potentiomètre sur 90° par défaut (cet angle est modifiable bien sur en modifiant une seule variable dans le programme).

  •  Entrée D5 à 0V : inverser le sens pour le bouton de commande à 2 positions (inversion du déplacement du servo pour les entrées D7 et D8) .

Cette inversion du sens de déplacement selon la commande envoyée permet par exemple de commander un PN en voie unique avec 2 contacts (ILS ou autre) selon la polarité d’alimentation de la voie.

Ce programme fonctionne seulement en commande analogique.

(*) Toutes les valeurs de déplacement et de vitesse sont données à titre indicatif et dépendent du servo utilisé. Les valeurs données correspondent typiquement à un servo ayant une plage de déplacement de 0 à 180°, d’autres paramètres pouvant aussi modifier ces valeurs.

Compte tenu de la simplicité du montage, chacun procédera au câblage comme il l’entend et selon le type de bouton poussoir et de potentiomètres choisis (en volant, sur une plaquette pastillée, en réalisant son propre circuit imprimé, etc.).

Sans plus attendre, voici le schéma de câblage nécessaire pour réaliser toutes ces fonctions.

Pour ne pas surcharger le schéma, le commutateur à 2 positions branché sur les entrées D7 et D8 n’est pas représenté.

Schéma de câblage de la commande de servo avec Arduino nano

Le module Arduino nano programmé est disponible sur ebay.

Et voici un montage de démonstration qui fera prochainement l’objet d’une vidéo explicative pour le fonctionnement de la commande de servo par carte Arduino.

Pour faciliter le câblage provisoire, il est possible d’utiliser une plaque d’expansion standard pour Arduino nano. Une telle carte permet d’utiliser une alimentation jusqu’à 12V sur le connecteur situé sur la carte d’expansion.

Soyez le premier à voter
Partagez cette page.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *