Nouvelles:

4/12/2022 : Nouvelle mise à jour du forum terminée. Si vous trouvez un bug, merci de contacter le Grand Sachem

Menu principal

Commande de deux servomoteurs pour signaux mécaniques

Démarré par Ph Blondé, 06 Octobre 2016 à 22:13:43

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Ph Blondé

Bonjour à tous,
Il me fallait comprendre un peu le pilotage des servomoteurs à partir d'un Arduino, enfin d'un clone de la bête...
Après bien des recherches ce n'était pas clair car peu orienté modélisme ferroviaire.

D'abord que peut-on faire avec ça?
Il s'agit de commander des signaux mécaniques (ben ouai, la plaque qui tourne) avec des servomoteurs ; des petits servomoteurs suffisent, on en trouve pour 1 ou 2 zeuros chez HOBBYKING   ;).

Bon, mais pour donner l'ordre au servomoteur?
Pour le faire tourner : on place un fil sur le +5v.
Pour le laisser reprendre sa position "de repos" : on place le même fil sur du 0v (la masse ou GRD) ou on le "laisse en l'air".

Pour le montage sous le signal : une tite photo.
Philippe Blondé
Un 59 dans le 22

Ph Blondé

#1
Donc, après tout plein de recherches, je suis passé à la méthode "on essaye et on verra bien".

Pour nous, ce qui est important ce sont deux choses :
- contrôler la valeur de l'angle de rotation pour que la tôle soit perpendiculaire à la voie (carré par exemple) et ne vienne pas forcer contre le mat lorsqu'elle passe en voie libre.
- contrôler la vitesse de rotation (c'est pas un ventilo).

Sauf pour la vitesse  :)) voici deux photos de ce que l'on veut obtenir.
Philippe Blondé
Un 59 dans le 22

Ph Blondé

#2
Dans un premier temps j'ai essayé de comprendre avec un servomoteur.

Il y avait un problème lors de la mise en alimentation électrique : le servomoteur prenait une valeur extrême avant de prendre la position de "repos" que j'avais programmé. Problème résolu... par programmation.

Comme ça fonctionnait pour un servomoteur, j'ai essayé avec deux.
Pffff, suffit de faire un copier/coller, trop facile  8) 8) et... de bien nommer avec des A pour le premier servomoteur et des B pour le second.

Sur ce modèle, on peut en mettre autant que l'on veut, Enfin presque...
J'ai pris l'alimentation des deux servomoteurs sur l'Arduino. Au delà, il vaudrait mieux les alimenter avec une alimentation de 5v extérieure à l'Arduino sans oublier de bien joindre tous les 0v (masses ou GRD).
Pour la programmation... Copier/coller puis renommer en C, D, E pour le 3ème, 4 ème, 5 ème servomoteur etc.

Je vous passe le programme en format txt puis de le copier dans l'éditeur de Arduino.
Philippe Blondé
Un 59 dans le 22

Ph Blondé

Moralité de cette histoire :
- Beaucoup de bla-bla sur les microsecondes etc. dans un tas de bouquins ou revues quant aux tutos intéressants, ils sont en anglais (voir en japonais)  :(
- Les valeurs des angles maxi et mini indiquées dans le "septup" vous donnent un angle de +-85° (90° ça tape dans le mat du signal)
- La seule valeur à changer c'est celle de la vitesse ; j'ai mis la valeur 1, c'est la plus rapide pour faire des essais. 3 ou 4 cela donne bien.

Si vous vous grattez la tête, n'hésitez pas, demandez.
Philippe Blondé
Un 59 dans le 22

Ph Blondé

Quelques photos pour illustrer
Philippe Blondé
Un 59 dans le 22

Ph Blondé

Après avoir découvert le logiciel de dessin FRIZTING (libre de tout droit), voici le schéma de câblage d'essais
Philippe Blondé
Un 59 dans le 22

cevenol38

Bonsoir Philippe et à tous,

Beau boulot :AA, moi je n'ai pas encore eut le temps de terminer la programmation de ma gare cachée  :'(.
Cyril

Ph Blondé

Bonsoir Cyril,
Pour la mienne, la programmation est terminée mais j'ai encore un peu d'électronique à faire (détecteurs de présence) et encore deux aiguillages triples. Aujourd'hui, je n'ai que 5 voies de garage opérationnelles sur 10 prévues.

La suite serait une mise en marche de tous les décodeurs (avant, vitesse max et allumage des feux).
Avec une quinzaine de trains c'est pénible de prendre la poignée et de faire toutes les adresses en mettant la vitesse max. J'ai limité la vitesse max avec le CV qui va bien pour chaque engin.
De toute manière, avec les BM1 actifs sur les voies de garage, les locos ne démarrent pas. Seules celles qui sont sur le réseau visible peuvent le faire, à conditio qu'elles ne soient pas en ralentissement ou à l'arrêt avec les BM2 sur les cantons
Pour cela il faut que l'Arduino envoie, en liaison série, des codes à la centrale et ça, c'est pas encore clair dans ma tête.

Bon courage avec ces petites bêtes bien utiles  :)
Philippe Blondé
Un 59 dans le 22

alanya

Bonjour Philippe,

Je suis intéressé par ton programme de commande de signaux.
Malheureusement, je n'arrive pas à le télécharger. Pourrais tu me le remettre à disposition, même par message privé ? Merci.

J'ai moi-même fais quelques test plutôt concluant dans ce domaine. Je te mets ici un lien vers le bout de code original qui m'a permis de "calibrer", en mode console, le servo moteur que j'ai utilisé :
http://eskimon.fr/287-arduino-602-un-moteur-qui-de-la-tete-le-servo-moteur
voir le chapitre Programme de test à la fin de l'article

Et, enfin, voilà le code tel que je l'ai modifié pour mon besoin

#include <Servo.h>
Servo monServo;
int temps = 2050; //entre 1000 et 2000: un point de départ !
void setup() {
  Serial.begin(9600);
  Serial.println("Début du calibrage");

  monServo.attach(2);
  //on démarre à une valeur censé être la moitié de l'execution totale de l'angle réalisé par le servo
  monServo.writeMicroseconds(temps);
}

void loop() {
  // tester la laison série ? (appui sur touche 'a' ou 'd')
  if(Serial.available()){
    char commande = Serial.read();
    if(commande == 'a')
      temps += 10;  // ajout de 10 micro seconde
    else if(commande == 'd')
      temps -= 10;

    //on modifie la consigne du servo
    monServo.writeMicroseconds(temps);

    // console
    Serial.println(temps);
  }
}

Ph Blondé

Bonjour,
C'est justement parce qu'aujourd'hui je ne connais pas trop, donc ne comprends pas bien, les histoires de transmission série et autres que j'ai peut être réinventé l'eau tiède mais au moins, c'est moi qui ai fait le mélange eau chaude / eau froide :) :)

Je t'ai adressé un MP pour récupérer le fichier.
Bon courage
Philippe
Philippe Blondé
Un 59 dans le 22