Auteur Sujet: Pont tournant - moteur pas à pas  (Lu 24203 fois)

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Pont tournant - moteur pas à pas
« le: avril 04, 2016, 02:31:04 pm »
Bonjour,

Comme indiqué dans le forum loco-revue, je fut très étonné de ne pas voir tant que ça de sujet ou fil (sur le forum) concernant la commande de pont tournant ici.

Je vais donc indiqué mon petit projet afin d'éclairé sur les paramètres à prendre en compte et surtout montrer que je ne recherche pas à faire une usine à gaz pour un si 'petit' projet.

Donc question inspiration, voici une image (en pièce jointe) qui illustre l'ambiance et le style auquel j'aimerais aboutir.

D'ailleurs, on se rapproche d'avantage d'une plaque tournant que d'un véritable pont.

En fait, le but étant de desservir 3 voies. Une pour l'entrée/sortie et deux vers les voies de la remise à locomotives. Donc pas besoin d'une gestion complexe à 40 voies.

Pour l'heure, ne voulant pas passer par un système de détection ou roue codeuse, j'ai pensé à la méthode suivante :
La position 0 correspond à l'alignement avec la voie entrée/sortie.Chaque pas est alors compté pour ne mémoriser que le nombre correspondant aux deux voies d'accès à la remise.

Ainsi, à chaque marche/arrêt du pont, il faut qu'il soit aligné avec cette fameuse voie entrée/sortie. Si tel n'est pas le cas, alors une action manuelle devra être réalisée pour placer le pont correctement et ensuite, valider le reset du compteur de pas afin d'avoir une situation clear et alignée.

Comme je l'ai dit, juste trois voies pour une utilisation ponctuelle et rare ne justifie pas, à mes yeux, de construire tout un dispositif avec des sécurisations automatiques des positions et autres capteurs. Il faut que ça reste léger (en terme de mécanisme et de logiciel) avec l'utilisation d'un Arduino Nano (+ alimentation du moteur).

D'ailleurs, j'utilise également un moteur pas à pas relativement léger car même en charge, le pont n'accueillera que des petites locos (030 TU, 63000, etc...). Il s'agit d'une remise de petite gare terminus de campagne et non d'un grand dépôt de pleine ligne avec les glorieuses et lourdes machines afférentes.


Il est composé d'un moteur pas à pas quadripolaire (48 pas/tour) + réducteur (1:64) associé à un système de roues et courroie crantées avec 16 dents (axe moteur) pour 36 dents (axe pont) soit un rapport (tour pont:pas:réducteur:dents) 1:48:64:2,25.

Cela donnera pour un tour complet du pont (360°) à 6912 pas moteur ou à l'inverse, un pas moteur = 0,052 degrés d'angle pour le pont. Je pense que la précision reste acceptable.

Je posterais les photos du montage mécanique ce soir car j'en n'ai pas sous la main pour l'heure.

Donc si je reprend mon système, un compteur aura la valeur 0 lorsque le pont sera ligné avec la voie entrée/sortie et pourra ateindre la valeur max de 6911 (la 6912 étant = à la position zéro puisque le tour est complet). Les deux voies de remise auront une valeur correspondante au nombre de pas depuis la position 0. Chaque pas étant ajouté/retiré au compteur lorsque le pont est en mouvement.

En faisant simple mécaniquement, on évite tout décalage ou saut de cran. Sinon, il suffit de faire une remise à zéro de l'alignement de la position zéro avec celle des voies.

Au niveau commande (entrées), 6 boutons sont à prévoir :
- choix de la voie entrée/sortie
- choix de la voie de remise n°1
- choix de la voie de remise n°2
- rotation horaire manuelle du pont
- rotation antihoraire manuelle du pont
- enregistrement de la position actuelle du pont à la voie correspondant a celle qui devra être appuyée par la suite (bouton 1 à 3)

Au niveau sortie :
- 4 ports pour la commande du moteur pas à pas
- 1 voyant rouge (fixe = pont non aligné car en mouvement, clignotant = attente enregistrement position actuelle)
- 1 voyant vert (fixe = pont aligné avec une des trois voies)

Cela fait donc au total un besoin de 6 entrées et 6 sorties (dont 4 en PWM). Un Arduino Nano disposant de 21 entrees/sorties dont 6 en PWM. Il y a donc de quoi faire avec des options possibles à ajouter.


francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #2 le: avril 04, 2016, 04:01:44 pm »
Bonjour Jean-Luc,

J'avais repéré ce projet qui est très intéressant en effet.

Cependant, il n'est pas complètement identique au miens car je suis bien plus light au niveau électronique (et software).

Sinon, j'aurais une question à propos du choix du moteur. Pourquoi prendre si gros ?

Est-ce le couple ou le nombre de pas ou les deux qui  sont entrer en ligne de compte ?

Pour ma part, avec les 6912 pas par tour pour un pont d'environ 20cm (environ 17,5m en réel), ça donne une précision de 20*pi/6912 = 0,09mm. Ca reste moins précis que les 0,075mm de votre projet, mais je pense qu'on reste dans l'acceptable.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Pont tournant - moteur pas à pas
« Réponse #3 le: avril 04, 2016, 04:16:51 pm »
Cependant, il n'est pas complètement identique au miens car je suis bien plus light au niveau électronique (et software).

Les logiciels devraient être similaires pour la version manuelle je pense

Citer
Sinon, j'aurais une question à propos du choix du moteur. Pourquoi prendre si gros ?

Est-ce le couple ou le nombre de pas ou les deux qui  sont entrer en ligne de compte ?

Je suis en N. Je ne voulais aucun jeu mécanique qui puisse nuire à la coincidence du pont et des voies de sortie. Donc pas de réduction, pas de transmission. J'ai donc pris le moteur avec le plus grand nombre de pas possible. J'ai choisis le driver avec le plus grand nombre de micro-pas possible et donc 12800/tour au total. Mais je n'ai pas choisi le taille du moteur  :)

Citer
Pour ma part, avec les 6912 pas par tour pour un pont d'environ 20cm (environ 17,5m en réel), ça donne une précision de 20*pi/6912 = 0,09mm. Ca reste moins précis que les 0,075mm de votre projet, mais je pense qu'on reste dans l'acceptable.

Pour la résolution oui, mais qu'en est-il du jeu ?
Cordialement

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #4 le: avril 04, 2016, 04:46:28 pm »
Il est vrai que le jeu risque de bouleverser la donne. C'est une raison pour laquelle j'ai opté pour un système de courroie souple (dents arrondies) afin d'offrir un minimum de jeu.

Si je passe en prise directe, je passe de 6912 pas/tour à 3072 ! Cela me donnerais une précision de l'ordre de 0,2mm (au lieu des 0,09mm).

Ca reste, je pense, acceptable, mais je risque d'y perdre en couple qui n'est pas extraordinaire sur ce type de modèle.

C'est d'ailleurs la raison pour laquelle je procède à des tests mécaniques avec une première ébauche. Je posterais une photo ce soir.

Sinon, je viens de remarquer qu'il me faudrait avoir 3 boutons de plus afin d'avoir la possibilité d'offrir la même position pour les trois voies, mais en retournant de 180° la locomotive. C'est après tout un but très important de ce pont puisque la gare est terminus.

J'avais posté sur le forum locorevue le schéma de mon projet que je post ici pour le coup :

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #5 le: avril 04, 2016, 04:57:17 pm »
Joli projet.

Je pense qu'avec 0,2mm en bout de pont, tu verras le passage des pas. Mais bon faut essayer.

La réduction n'a pas de jeu ?

Est-ce facile à tourner à la main ?
Cordialement

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #6 le: avril 04, 2016, 10:56:45 pm »
Voici les 2 premières photos comme promis (limitation à 192Ko par message).

Au niveau du jeu, il y a une petite souplesse dû à la courroie en caoutchouc. On sent que ça mort direct dans les dents en tendant la courroie souple. Sinon, en ne forçant pas du tout, il y a un jeu très très minime. On le sent à peine. Le tout est d'avoir une courroie bien tendue.

Pour ce qui est du réducteur intégré au moteur (boitier intégré), il n'y a pratiquement rien comme jeu. Impossible de tourner l'axe au repos. Le petit pignon bouge à peine (j'ignore de combien de degrés, mais ça reste très très faible la aussi).

Pour l'heure, je fais mes tests avec un Arduino Uno classique, car il me permet d'avoir une alimentation 5V provenant d'une alimentation autre que via l'USB (sinon, la puissance demandée par le moteur ne serait pas possible je pense).

Au niveau du code, ça reste du classique via la bibliothèque Stepper. Je n'ai pas encore codé les boucles avec prise en compte des boutons et voyants, mais il n'y a rien de bien compliqué avec cette partie.

Durant mes tests, j'utiliserais la liaison série USB pour faire un retour sur le compteur de pas afin d'obtenir une valeur confirmant bien le total pour un 360°. Pour la calibrage, comme indiqué, il y aura une phase manuelle.

Mais j'y pense, il ne me semble pas que le Nano dispose d'une EEPROM ou de quoi stocker en dur certaines valeurs. Je vais donc devoir coder en dur les écarts entre chaque voie pour que ça fonctionne (une fois le pont en place). Ca ne sera pas très propre, mais au pire, je pourrais faire des modifications in situe via l'USB et un PC portable si besoin.

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #7 le: avril 04, 2016, 10:57:14 pm »
La suite des deux dernières photos.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Pont tournant - moteur pas à pas
« Réponse #8 le: avril 05, 2016, 07:46:48 am »
Mais j'y pense, il ne me semble pas que le Nano dispose d'une EEPROM ou de quoi stocker en dur certaines valeurs. Je vais donc devoir coder en dur les écarts entre chaque voie pour que ça fonctionne (une fois le pont en place). Ca ne sera pas très propre, mais au pire, je pourrais faire des modifications in situe via l'USB et un PC portable si besoin.

Le nano a une EEPROM de 1ko. Pas de soucis de ce côté là.

Ca a l'air bien parti cette affaire. La commande sera manuelle ou bien penses-tu piloter le pont autrement ?
Cordialement

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #9 le: avril 05, 2016, 05:26:14 pm »
Vu que le tout s'inscrit dans un projet de trois modules facilement transportable (pour être dispo lors des réunions du club), ça sera juste manuel.

Après, rien n’empêchera de passer par un décodage DCC en plus pour manipuler le pont. Mais ça reste dans un éventuel upgrade si jamais l'occasion s'en fait sentir. C'est l'une des forces des Arduino, leur compatibilité pour des évolutions sans changer la mécanique ou certains hardwares.

Pour l'EEPROM, je viens de regarder et il existe une bibliothèque dédiée :
#include <EEPROM.h>

Après, une simple commande permet d'écrire et une autre de lire :
EEPROM.write(address, value);
value = EEPROM.read(address);

C'est très simple. Arduino ne cessera jamais de m'étonner par sa simplicité.

Au niveau de la taille, tout dépend du chipset :
EEPROM : 512 bytes (ATmega168) or 1 KB (ATmega328)

L'ATmega168 est pour un Arduino nano V2.x. L'ATmega328 pour un V3.x.

Je pense faire le code ce soir. Je tiens au jus sur l'avancé du projet.
« Modifié: avril 05, 2016, 05:37:09 pm par francis8 »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #10 le: avril 05, 2016, 05:42:00 pm »
On trouve encore des Nano avec un 168 ?  ???
Cordialement

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #11 le: avril 05, 2016, 11:43:50 pm »
Bon, je n'achèterais plus de matériel Arduino Chinois.

J'ai beau installer le bon pilote, ça ne veut pas téléverser le programme sur mon Nano. J'ai ce message d'erreur :
Le croquis utilise 1 066 octets (3%) de l'espace de stockage de programmes. Le maximum est de 30 720 octets.
Les variables globales utilisent 9 octets (0%) de mémoire dynamique, ce qui laisse 2 039 octets pour les variables locales. Le maximum est de 2 048 octets.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xaf

Pourtant, d'après les recherches sur le net, il faut un pilote que j'ai bien installé et qui ne change rien à l'affaire (voir pièce jointe).

Si l'un de vous a été confronté à ce type de problème et qu'il a réussit à le résoudre, je suis preneur.

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #12 le: avril 06, 2016, 12:03:28 am »
A croire qu'il suffit de poster un message pour que ça fonctionne.  :o

Bon, je retourne à mon code après avoir perdu toute ma soirée à tenter de faire fonctionner ce truc tout niaisé !

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #13 le: avril 06, 2016, 10:00:21 am »
Plus un problème côté Windows que côté Nano chinois dirait-on  :)
Cordialement

francis8

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Pont tournant - moteur pas à pas
« Réponse #14 le: avril 06, 2016, 12:56:33 pm »
Et bien c'est étrange car j'ai eu un fonctionnement OK (avec téléversement opérationnel) durant plusieurs minutes. Du coup, j'ai retiré l'USB du Nano le temps de le monter sur ma plaque d'essais avec les résistances de pull-up pour les boutons + LED et lorsque j'ai tout rebranché, hop, c'était reparti pour un blocage.

Le port COM est le même vu par Windows et l'IHM Arduino. D'ailleurs le port COM monte bien tout seul lorsque je branche le Nano, mais rien à faire, impossible de téléverser le moindre programme.

Comme il était au delà de minuit, je n'avais pas envie de me lancer dans une étude avec reboot du PC et autres manipulations. Je verrais donc ce soir pour isoler le problème afin de le contourner.

Sinon, une petite confirmation, vu que pendant le setup, je déclare mes entrées/sorties au niveau des broches du Nano, je pense qu'il est inutile de déclarer les 4 broches pour le moteur car elles doivent être automatiquement mis en sortie par la bibliothèque STEPPER (initialisation du moteur en indiquant justement les broches) ?

Autre point, il me faut faire un diagramme de fonctionnement en repérant les étapes (machine d'Etat) afin de structurer mon programme principal. J'avoue avoir eu un moment de solitude lorsqu'est venu de placer une tempo anti-rebond des boutons poussoirs sans que cela ne dérange une éventuelle rotation en cours du pont. Je suis même parti dans une idée d'utiliser un timer pour attendre la prise en compte à nouveau d'un état. Bref, ça cogite.