Servomoteur à rotation continue

Bonjour,
après plusieurs rechercher sur ce forum et sur internet, après avoir tester tout ce que j'ai trouvé, je n'arrive pas une solution qui me convient.
J'ai bien compris qu'un servomoteur à rotation continue n'est pas réellement un servo moteur mais un moteur à courant continu, qu'il n'est pas très précis mais je me suis mis en tête de le faire fonctionner.

Pour donner du contexte, je souhaite m'inspirer du projet suivant, il s'agit d'une machine à trier des confiseries. La partie que j'essai de reproduire est la partie carrousel, je souhaite en effet faire tourner le servo moteur pour le faire atteindre 6 position fixe. Sur un cercle, il s'agit des positions à 0°, 60°, 120°, 180°, 240°, 300°, 360°(0°).
Dans un premier temps j'ai étudié le programme du projet qui est fourni sur le site mais il est trop compliqué pour moi, je n'arrive pas à le comprendre.
J'ai ensuite essayé ce programme mais il ne fonctionne pas comme la video fourni.
Puis cette bibliothèque mais toujours sans succès.
Par expérimentation je pense avoir réussir à trouver les valeurs pour faire tourner le servomoteur d'environ 60°.

switch (position) 
    {
      case '1':
        Serial.print("Position 1");
        myservo.writeMicroseconds(2000);  // rotation de 60°
        delay(145);
        position_actuelle = 1;
        break;
    }
            myservo.writeMicroseconds(1500);  // servomoteur à l'arrêt°

  }

Je souhaiterai maintenant réussir à passer d'une position à n'importe quelle autre en fonction de la valeur dans la variable position.
Position 1 correspondant à 60°, position 2 à 120° ... jusqu'à position 6 à 360°(0°).

J'ai bien conscience que je vais avoir un décalage à force car cette méthode de commande du servomoteur n'est pas très précise et va engendrer des décalages mais je me dis que par la suite pourquoi faire une correction ( au bout de x tours réalisé, faire tourner le servo moteur dans l'autre sens pendant x temps pour bien le réaligner).

Le servo moteur utilisé est le suivant

J'espère que j'ai réussi à faire comprendre ma problématique. Je ne suis pas fermé à la solution que j'ai commencé à essayer d'apporter à mon problème, si vous avez une autre méthode pour arriver au résultat.

Merci de votre aide.

A mon avis il est préférable de faire un asservissement en contrôlant la position plutôt que d’espérer corriger une dérive en alternant le sens de rotation.

Tu peux imaginer une détection de la position par un dispositif optique et une roue encodeuse par exemple.

La commande ne sera plus « tourne de 60 deg » mais « tourne jusqu’à la position x »

Cela ne peut pas fonctionner. Un servo à rotation continue fonctionne ainsi:
On donne l'impulsion médiane (par exemple 1500µs) -> il est arrêté
On donne plus -> il tourne dans un sens à une vitesse proportionnelle à l'écart (p.ex avec 2000, il tournera 2 fois plus vite que si on donne 1750µs)
On donne moins -> il tourne dans l'autre sens.

Il n'y a aucun moyen de le faire arrêter à une position donnée sans avoir un capteur de position.

Le bon commentaire c'est // le pmoteur tourne dans un ses sans s'arrêter

Pour atteindre les positions 0°, 60°, 120°, 180°, 240°, 300°, 360°(0°), il faut:

  • un moteur pas à pas
  • un servo 180° et un engrenage pour passer de 0-180° à 0/360°
  • un moteur CC ou un servo continu ET un capteur de position.

Bonjour thibaulthericher

Tu pourrais mettre ce programme en ligne, je n'arrive pas à le télécharger.

L'exemple cont-servo-pot-control.ino s'approche pas mal de ce que tu veux, sauf un léger décalage à la longue.

A+
Cordialement
jpbbricole

J'ai aussi pensé à ça mais vu que la personne à l'origine du projet à réussi à faire son carrousel sans équipement supplémentaire, je me suis dit que dans un premier temps j'allais essayer sans. Si je n'y arrive pas, je peux retenir cette solution.

Merci ta réponse et j'en suis arrivé rapidement au même conclusion mais cependant, dans la vidéo de démonstration du projet, il me semble ne voir qu'un servo à rotation continu (time code de la video).
Il s'agit de ce servo moteur et sont programme est donné ici.
J'en tire aussi la conclusion que ce n'est pas possible mais je demande comment, lui, à réussi. Quelques choses m'échappe ?

Bonjour, voici le lien pour télécharger le programme

Oui cette exemple ressemble à ce que je veux faire sauf qu'il ne fonctionne pas comme sur la vidéo quand je le test, le moteur ne s'arrête pas à une position quand je fais tourner le potentiomètre :confused:

Bonjour thibaulthericher

Une solution pour un positionnement sur un tour avec un servo, est le servo qui fait plusieurs tours ou servo winch:
image
il en ont entre de 1,5 à 6 tours
, 1,5 tours devrait faire l'affaire.

A+
Cordialement
jpbbricole

Il est dit que c'est un servo 1 tour. Au lieu de faire 180°, il fait 360°. Mais ce n'est pas un servo à rotation continue. Celui qui est à rotation continu sert à faire tomer les billes une à une.

Si on regarde la vidéo, on voit bien qu'il ne franchit jamais une ligne. Au lieu de ça, pour aller de la position "1" à "6", il fait presque un tour complet.

@jpbbricole @vileroi Merci pour vos retours, je vais commander un servo moteur winch pour tester.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.