Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Arduino - Servomoteurs

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Arduino - Servomoteurs

Publié: Lun 01 Fév 2016, 13:19 
jlb a écrit:... Pour un délai d'acheminement court : http://www.exp-tech.de/pololu-5v-5a-ste ... r-d24v50f5

Effectivement, commande passée jeudi AM reçue ce matin, soit 2 jours ouvrés.

Je pourrai faire de nouveaux tests à partir de demain.
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Mer 03 Fév 2016, 16:10 
Après mise en oeuvre du régulateur 5v conseillé peu d'amélioration, même si je ressens, au touché, plus de "force" dans le palonnier.

A vitesse rapide pas de soucis excepté le réalisme du mouvement et, probablement, une usure prématurée du mécanisme des barrières. Le problème apparait dès l'utilisation "d'artifices" de mouvement lent comme l'usage de la fonction writeMicroseconds ou même write(angle) avec un delay long (outre le phénomène de saccades pour cette dernière).

Il semblerait que ce modèle de servo n'apprécie pas dêtre asservi de cette façon.
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Jeu 04 Fév 2016, 12:30 
Ça ne vient pas du servo.

writeMicroseconds a, contrairement à ce que son nom indique, une résolution de 4µs (1 pas). Grosso-modo, 180° correspondent à 2ms soit 500 pas. Pour lever les barrières, sans démultiplication ou multiplication du mouvement, le servo parcoure un angle de disons 80°. Donc 222 pas, chaque pas correspondant à un angle de 0,36°. En bout de barrière, disons 25cm en 0, ça représente un déplacement de 1,5mm environ si je ne me suis pas trompé. Ça se voit moins qu'avec write(angle) mais ça se voit.

Attention ça va être technique :

Une solution est de ne pas utiliser la bibliothèque servo mais une sortie PWM. Mais, par défaut, la PWM sur l'Arduino est programmé en 8 bits. La résolution est donc insuffisante pour ton application. Il est d'ailleurs impossible d'atteindre une période de 20ms requise pour les servos avec les PWM 8 bits.

2 des sorties PWM correspondent au Timer 1 qui peut être programmé en 16 bits. Les sorties PWM correspondantes de l'Arduino sont les 9 et 10. Si le Timer 1 est branché sur l'horloge à 16MHz (prescaler à 1), le timer s'incrémente toutes les 62,5ns (1/16000000) et la durée du cycle est donc de 62,5 x 65536 ns = 4,096 ms. Ce qui est trop court. La valeur suivante du prescaler est 8. Le compteur s'incrémente alors toutes les 62,5 * 8 = 500ns = 0,5µs. La période est de 32,768ms. Période que l'on peut raccourcir à 20ms en n'allant pas à la valeur max du compteur. Ça donne donc une résolution de 0,5µs, 8 fois meilleure que la bibliothèque servo. En contrepartie, on ne peut brancher que 2 servos sur les sorties 9 et 10. Il faut écrire du code bas niveau.

Avec une résolution de 0,5µs, on a des pas de 0,2mm en bout de barrière. ça devrait aller si les servos ont un asservissement en position de qualité (ce qui n'est pas sûr car dans la doc, je lis « dead zone : 5µs ». Mais c'est testable sans achat supplémentaire de matériel.

Si ça reste insuffisant il existe deux autres pistes :

1) un moteur pas à pas 400 pas par tour piloté en microstepping. Ça permet 12800 pas par tour et donc environ 2800 pas lors du mouvement de la barrière et 0,02° pour un pas, soit 0,12mm au bout de la barrière. L'avantage par rapport au servo est l'assurance que le mouvement est suivi à la lettre.

Voir ce type de mouvement sur une plaque tournante :



2) un moteur à courant continu réducté 1000:1 ou plus avec encodeur permettant un asservissement de position. il faudra également traiter le problème de la détection du zéro.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Jeu 04 Fév 2016, 18:24 
Suite aux explications du concepteur des barrières m'expliquant qu'elles sont lourdes et demandent une certaine "force" pour être manœuvrées, d'où sa recommandation d'un mécanisme à base de moteur, réducteur, cames et contacts de fin de course, je suis donc parti sur l'idée de faire "robuste" d'où le choix de ces servos et de palonniers en aluminium en remplacement de ceux d'origine en plastique. La longueur de ces palonniers (entraxe de 38mm entre l'axe du servo et l'accroche de la tringlerie) combinée à la conception du mécanisme du mouvement (petite roue de 38mm de diamètre sur laquelle s'enroule un minuscule câble, la roue est elle même mise en mouvement par une "bielle", qui devient avec une solution "servo" la tringlerie, a fait que le mouvement complet d'ouverture et inverse pour la fermeture devait s'exécuter par un déplacement circulaire d'à peine plus de 30 degrés.

J'ai depuis mon dernier message utilisé des palonniers (beaucoup) plus courts dont l'entraxe axe/prise de mouvement est cette fois a peu près égale au rayon de la roue décrite ci-dessus. Après avoir repositionné en alignement les servos j'obtiens une amplitude de angle du mouvement bien plus importante et de substantielles avancées dans la maîtrise des mouvements souhaités.

Cependant la tringlerie de commande opérant donc comme une bielle sur la roue entraînant le câble (explications ci-dessus) elle est peu efficace sur les points haut et bas et provoque lorsqu'elle les atteint quelques "à coups" disgracieux.

Après moult réglages et n'obtenant pas un réalisme tout à fait convainquant j'ai imaginé de, peut-être, mettre en œuvre le système préconisé par le concepteur MAIS de remplacer le moteur d'origine par "un pas à pas" afin de rester cohérent avec mon projet (où l'Arduino a aussi comme tâches, en plus des mouvements de barrières, de gérer une sonnerie et des feux rouges clignotants, ces deux fonctions sont résolues depuis quelques temps, reste la détection par consommation de courant dont un ami se charge actuellement de l'électronique suivant les spécifications trouvées dans le forum locoduino).
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Jeu 04 Fév 2016, 18:37 
Une photo du matos peut-être ?
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Jeu 04 Fév 2016, 23:51 
Positions extrêmes et une intermédiaire.

Image

Image

Image

En tournant cette roue entraîne un mini câble qui lui-même fait tourner une petite poulie équipée d'une came évoluant dans une gorge du contre poids en forme de S très allongé : comme les vrais.

C'est élégant, voire bluffant, mais même à l'échelle zéro pas forcément très performant (mécaniquement parlant bien sûr).
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Ven 05 Fév 2016, 15:13 
Voici d'après dessins ce que devrait donner l'amplitude des angles après repositionnement des servos dans le même axe que la roue de commande.

soit +48° en position haute et -42°en position basse.

Image

Image

Image
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Mer 10 Fév 2016, 10:53 
Support des servos refait avec alignement des axes = fonctionnement que l’on peut qualifier de satisfaisant.

La conception (expliquée plus haut) et la fabrication artisanale font que le comportement de chaque barrière n’est pas tout à fait identique à sa jumelle (ce qui est souvent le cas en grandeur nature).

De petits bidouillages dans le programme arrangent, à peu près, ce fait.


Merci pour les aides et conseils reçus.
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Mer 10 Fév 2016, 11:14 
Pourrais-tu poster une petite vidéo du mouvement de tes barrières ? Ca pourrait en inciter d'autres à utiliser des servos. :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1618
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Servomoteurs

Publié: Mer 10 Fév 2016, 13:41 
Arduino a écrit:Pourrais-tu poster une petite vidéo du mouvement de tes barrières ? Ca pourrait en inciter d'autres à utiliser des servos. :wink:


Je suis pas très bien équipé pour la photo et pas du tout pour de la vidéo.

Je vais voir dans mon entourage qui pourrait le faire.
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Mer 10 Fév 2016, 14:21 
smartphone ?
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Mer 10 Fév 2016, 17:08 
En général, un appareil photo numérique permet de faire une petite séquence vidéo, sinon smartphone, tablette ou simplement webcam... Juste la séquence, ne te sens pas obligé de faire un montage avec générique et tout cela... Juste pour montrer.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1618
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Servomoteurs

Publié: Mer 10 Fév 2016, 23:38 
Bonsoir, J'interviens sur ce sujet après avoir suivi le cours de Christian "Démarrer en électronique programmable"
Je suis en train de mettre au point ma commande d'aiguilles par servo et je viens donc de regarder ce fil.
Ma question est pourquoi avoir fait la commande par bouton si compliquée.

Après plusieurs essais (je sais d'ailleurs plus ce qui est de moi et ce que j'ai pompé ailleurs) je suis arrivé à un fonctionnement satisfaisant avec le sketch suivant
Code: Tout sélectionner

void setup()
{
      pinMode(pinBouton, INPUT_PULLUP);
    monServo.attach(pinServo);
    monServo.writeMicroseconds(angle);
       vitesse = 0;     
}
void loop()
{
    if (digitalRead(pinBouton) == LOW && vitesse == 0 && angle == angleMin)
    {
         monServo.attach(pinServo);
          vitesse = 1;
    }
   
     monServo.writeMicroseconds(angle);
     angle = angle + vitesse;
     
     if (angle > angleMax ) 
     {
      angle = angleMax;
      vitesse = 0;
       }
     
      if (digitalRead(pinBouton) == LOW && vitesse == 0 && angle == angleMax)
     {
           vitesse = -1;
           monServo.attach(pinServo);   
     }
     
      monServo.writeMicroseconds(angle);
      angle = angle + vitesse;

      if (angle < angleMin)
      {
        angle = angleMin;
        vitesse = 0;
     
      }

    if (vitesse == 0 && digitalRead(pinBouton) == HIGH)
     { monServo.detach();
      }
     delay(5);


}
     



La seule différence que j'ai trouvé est que dans mon cas, si on rappui sur le bouton pendant le mouvement du servo, il va jusqu'a la fin de course avant de changer de sens... comme dans la réalité d'ailleurs (çà me rappelle mon boulot)

Merci de vos remarques
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 54
Inscrit le: Ven 08 Jan 2016, 23:20
Localisation: 11 Ouveillan
Âge: 63
Echelle pratiquée: N
Prénom: Serge

Re: Arduino - Servomoteurs

Publié: Jeu 11 Fév 2016, 01:22 
Arduino a écrit:En général, un appareil photo numérique permet de faire une petite séquence vidéo, sinon smartphone, tablette ou simplement webcam... Juste la séquence, ne te sens pas obligé de faire un montage avec générique et tout cela... Juste pour montrer.


J'ai bien compris l'objet.

Mais mon APN est un HP d'un peu plus de 10 ans et mon "smartphone" un simple Samsung wave3 (je crois), s'il sait faire des vidéos, moi je ne sais pas comment il les fait et encore moins comment transférer et sur quoi.

En principe j'aurai de l'aide demain (vendredi), un peu de patience ...
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

Re: Arduino - Servomoteurs

Publié: Dim 14 Fév 2016, 12:32 
Chose promise ... voici le lien

https://www.youtube.com/watch?v=bWMKrlR4Hyk

Réalisé par Besson (mais pas Luc), désolé pour la qualité :oops:
R8G for ever
Avatar de l’utilisateur
Stratus
Démonstratif
 
Messages: 1440
Inscrit le: Ven 28 Nov 2008, 14:20
Localisation: Yonne
Âge: 69
Echelle pratiquée: O Epoque III
Club: CDZ

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 3 invité(s)