Auteur Sujet: à-coup servomoteur  (Lu 185 fois)

Patrice59

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
à-coup servomoteur
« le: janvier 08, 2017, 05:22:21 pm »
Bonjour a tous

Je n'arrive pas a régler le problème suivant: Des la mise sous tension le servomoteur donne un accoup avec ou sans le fil de commande branché que ce soit avec un servo faller 180726 ou reely S-0403 c'est pareille . Par contre j'ai essaye un tower pro sg90 et là pas de problème sauf qu'il est trop gros. Les servos sont commandés par une UNO et le tout pilote un PN qui n'apprecie pas ces accoups .Quelque soit la position du servo le problème est là.
Y a t-il un moyen de parer au probleme ??? ou faut il passer impérativement par le module faller 180725 ??
« Modifié: janvier 10, 2017, 10:18:30 am par Dominique »

Dominique

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 431
    • Voir le profil
Re : à-coup servomoteur
« Réponse #1 le: janvier 08, 2017, 09:45:02 pm »
Bonjour,

Je pense que la solution existe et elle est logicielle à priori.

Mais je ne suis pas chez moi et transmettrai dans 2 semaines environ ce que j'ai trouvé si ça marche de façon concluante.

En attendant je pense que d'autres modélistes pourront relever le défi !

Amicalement
« Modifié: janvier 10, 2017, 10:18:45 am par Dominique »

PhB22560

  • Jr. Member
  • **
  • Messages: 80
    • Voir le profil
Re : à-coup servomoteur
« Réponse #2 le: janvier 09, 2017, 06:43:26 pm »
Bonsoir Patrice,
J'ai eu ce cas et l'ai résolu, tu peux le voir dans  "vos projets" et dans "Commande de signaux mécaniques - Servomoteurs".

Bonne soirée
Philippe
« Modifié: janvier 10, 2017, 10:19:00 am par Dominique »

Patrice59

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : à-coup servomoteur
« Réponse #3 le: janvier 09, 2017, 09:36:14 pm »
Bonsoir phB22560
J' ai essayé ton prog +resistance pulldown 10k
Les servos s'initialisent et bagottes mais c'est toujours pareil
j'ai essayé avec une alim externe sans arduino, dés que je branche + et - mon copain accoup est là !!!!!
la seul différence entre le reely et le tower pro et que l'un est analogique et l'autre digital(le faller je sais pas)
est-ce important ???
A+
« Modifié: janvier 10, 2017, 10:19:14 am par Dominique »

Dominique

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 431
    • Voir le profil
Re : à-coup servomoteur
« Réponse #4 le: janvier 10, 2017, 09:26:56 am »
Bonjour à tous,

Ce sujet est très intéressant car on y est tous confrontés un jour ou l'autre.

J'ai l'impression que certains servos bougent dès que l'alim 5v est appliquée même en l'absence de signal PWM.
Comme ce signal PWM n'arrive qu'après l'initialisation du bootloader jusqu'au SETUP, il s'écoule une bonne seconde voire plus avant que le servo prenne sa place.

Quelqu'un a-t-il regardé si l'ordre des séquences d'initialisation du servo à de l'importance ?

Merci d'avance.
« Modifié: janvier 10, 2017, 10:19:29 am par Dominique »

PhB22560

  • Jr. Member
  • **
  • Messages: 80
    • Voir le profil
Re : à-coup servomoteur
« Réponse #5 le: janvier 10, 2017, 09:55:12 am »
Bonsoir phB22560
J' ai essayé ton prog +resistance pulldown 10k
Les servos s'initialisent et bagottes mais c'est toujours pareil
j'ai essayé avec une alim externe sans arduino, dés que je branche + et - mon copain accoup est là !!!!!
la seul différence entre le reely et le tower pro et que l'un est analogique et l'autre digital(le faller je sais pas)
est-ce important ???
A+
Dans le setup, tu fais varier les valeurs d'angle max et mini.
Au lieu de 900, tu places 700.
Au lieu de +800, tu places +500.
Suivant les servos, on n'a pas le même résultat.

« Modifié: janvier 10, 2017, 10:20:29 am par Dominique »

Dominique

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 431
    • Voir le profil
Re : à-coup servomoteur
« Réponse #6 le: janvier 10, 2017, 10:16:45 am »
J'utilise la bibliothèque Servo intégrée.
Comme il y a beaucoup d'aiguilles (ce n'est pas mon réseau), j'ai créé des objets intégrant le servo, les 2 leds qui affichent sa position et l'inter de commande.  Comme cela va au delà du sujet, j'ai mis cette classe à la fin.

Mais revenons à nos moutons !

J'ai essayé d'attacher l'objet servo à sa pin après l'initialisation de sa position :

void InitServo() {
    objetServo.writeMicroseconds(posInitiatle);  // position initiale
    objetServo.attach(pinServo);
  }

Mais n'étant pas sur place, je vous donnerai les résultats à mon retour.

Pour ceux que cela interesse, voici la classe complète

class CommandeAiguille {
  Servo  objetServo;
  Bounce objetInter;
  byte   etatAutomate;      // 0 fixe, 1 bouge
  int    etatInter;         // O directe, 1 dévié
  int    taillePlage;       // pas utilisé pour le moment
  int    posMin;            // position droite
  int    posMax;            // position déviée
  int    posCourante;       // posotion courante
  int    delta;             // saut de position = pas
  int    pinServo;
  int    pinInter;
  int    pinLedDirecte;
  int    pinLedDeviee;
  unsigned long tempo;      // pour l'automate

public:
  CommandeAiguille() {      // constructeur
    etatAutomate = 0;
  }
 
  void SetpinServo(int p) { // définir la pin Servo
    pinServo = p;
  }
  void SetpinInter(int p) { // définir la pin Inter
    pinInter = p;
  }
  void SetpinLedDirecte(int p) { // définir la pin led
    pinLedDirecte = p;
  }
  void SetpinLedDeviee(int p) { // définir la pin led
    pinLedDeviee = p;
  }

  void SetPosMinMax (int pm, int PM) { //définir les butées
    posMin = pm;
    posMax = PM;
   
  }
  void InitCommandeAiguille() {                 // initialisations
    pinMode(pinInter,INPUT_PULLUP);
    pinMode(pinLedDirecte,OUTPUT);
    pinMode(pinLedDeviee,OUTPUT);
    objetInter.attach(pinInter);
    objetInter.interval(50);
    etatInter = digitalRead(pinInter); 
    digitalWrite(pinLedDirecte, !etatInter);
    digitalWrite(pinLedDeviee, etatInter);
    if (etatInter) posCourante = posMin; else posCourante = posMax;
    objetServo.writeMicroseconds(posCourante);  // position initiale en fonction de l'inter
    objetServo.attach(pinServo);                // attaches the servo on servo_pin to the servo object
  }

  void InterUpdate() {                    // test de l'inter
    if (objetInter.update( )) {           // 1 si changement sinon 0
      objetServo.attach(pinServo);
      etatInter = objetInter.read();
      digitalWrite(pinLedDirecte, !etatInter);
      digitalWrite(pinLedDeviee, etatInter);   
      //objetServo.attach(pinServo);
      if (etatInter==HIGH) {
        delta = -5;                         // position passe à droite
      } else {
        delta = +5;                         // position passe à devié
      }
      etatAutomate = 1;                     // en mouvement
      tempo = millis();
    }
  }

  void ServoUpdate() {                      // mouvement du servo
    if (etatAutomate == 1) {
      if ((tempo+pas) < millis())  {        // fin du pas de tempo       
        posCourante = posCourante + delta;
        objetServo.writeMicroseconds(posCourante);
        if ((posCourante <= posMin) || (posCourante >= posMax)) { // arret
          etatAutomate = 0;
          //objetServo.detach();
        } else {
          tempo = millis();
        }
      }
    } 
  }

}; // fin de la classe CommandeAiguille
« Modifié: janvier 10, 2017, 10:19:55 am par Dominique »

PhB22560

  • Jr. Member
  • **
  • Messages: 80
    • Voir le profil
Re : à-coup servomoteur
« Réponse #7 le: janvier 10, 2017, 10:47:54 am »
Je viens de reprendre le sketch.
Tout fonctionne et pas d'accoup.
Je n'ai même pas mis de résistance de 10k entre le fil blanc de commande du servo et la masse.
J'ai ajouté quelques commentaires et je te redonne le point ino

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 533
    • Voir le profil
Re : à-coup servomoteur
« Réponse #8 le: janvier 10, 2017, 04:14:26 pm »
Bonjour,

Il faut mettre une résistance de 10kΩ entre le signal de PWM du servo et l'alimentation du servo (pas la masse, le +5V)


Patrice59

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : à-coup servomoteur
« Réponse #9 le: janvier 10, 2017, 07:41:01 pm »
Bonsoir à tous

Ca y est  :D
ca va beaucoup mieux avec la resistance au +5v
La solution à Jean-Luc est nikel .
un grand merci de partager vos connaissances
Amicalement