Go Down

Topic: [Résolu] Contrôle de servomoteurs (Read 2478 times) previous topic - next topic

Zuran

Jul 26, 2012, 12:26 am Last Edit: Jul 28, 2012, 12:01 am by Zuran Reason: 1
Bonjour le monde,

D'abord il faut savoir que je débute en électronique, j'ai quelques notions de programmation en C++ ce qui j'espère me permettra de progresser rapidement.

Je veux construire un robot assez simple composé de 6 servomoteurs dont le contrôle est effectué par la reproduction de la position de 6 autres servomoteurs qui eux sont bougés manuellement (je sais pas si je suis clair...).

Quelqu'un peut me dire ce qu'il faut que j'achète comme matériel en faisant au plus simple et de préférence au moins cher comme microcontrolleur et si j'ai besoin d'un contrôleur de moteurs, etc...

Merci d'avance pour vos réponses :)

skywodd

Bonjour,

Tout d'abord quelques remarques pour être bien sûr qu'on parle de la même chose ;)

Un servomoteur = un moteur qui peut tourner de manière relativement précise dans la limite d'un angle ~60°(dépend du modèle).
J'ai bien vu des hacks permettant de se servir d'un servomoteur pour "lire" un angle mais ce n'est pas du tout son but premier !

A mon avis tu confond moteurs DC (ou moteurs bipolaires), servomoteurs et potentiomètres.
(Potentiomètre = un composants qui sort un tension proportionnelle à l'angle de son "curseur")

Quelques points reste à éclaircir :
- ton robot doit rouler (avec des roues ? chenille ? ... ?)? ou juste faire bouger les moteurs ?
- tu veut une rotation à 360° au niveau des moteurs ou non ?
- le positionnement des moteurs doit il être précis, relativement précis ou peu importe ?
- y a t'il un contexte d'application particulier ou c'est juste pour le fun ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Zuran

J'aurai du directement expliquer mon projet, en fait je veux faire deux bras articulés dans le genre des bras industriels qui servent notamment pour la fabrication des voitures mais en plus simple et plus léger :)
Hop une image pour illustrer:


Je voudrai que lorsqu'on déplace un des deux bras en le forçant à la main, l'autre fasse le même mouvement en temps réel et cela peu importe lequel des deux bras l'on fait bouger à la main, donc ce que je pensais faire au début c'est construire deux bras identiques avec des servos (pas de problème pour les 60° max) et que le microcontrôleur récupère en permanence la position des servos qui ont bougés et l'envoi à l'autre bras pour que les mêmes articulations se mettent dans les mêmes positions. Désolé je peux pas faire plus clair :)

D'après ce que tu me dit, il n'est pas possible de récupérer la position d'un servo sans le modifier, est-ce que je peux faire autrement ou est-ce qu'il faut que je le bidouille.


Blizzard27

#3
Jul 26, 2012, 09:52 am Last Edit: Jul 26, 2012, 10:26 am by Blizzard27 Reason: 1
Salut, il n'est pas si compliqué que cela de récupérer la position d'un servomoteur moyennant comme dit plus haut un petit hack.
Exemple : http://smartrobotics.wordpress.com/2011/11/22/transformer-un-servomoteur-en-capteur-de-position/

Cependant j'imagine que tu veux réaliser un genre de manche qui lorsqu'il sera actionné a la main permettra de commander le bras motorisé en fonction de la position du manche, cependant comme cela a été dit, ce n'est pas sa fonction première.

Ce que tu peux envisager cependant pour te servir de capteur de position ce sont des potentiomètres comme celui-ci :

Prends les en linéaire cela sera plus simple d'interpréter la position, tu appliques une tension sur celui-ci et en fonction de la tension que tu lis tu peu en déduire la position de celui-ci.

L'avantage de la grande tige de ces potentiomètres, c'est qu'en bricolant un peu tu va pouvoir t'en servir assez facilement dans les articulations de ton manche.
Rien ne sert de chercher à tout savoir, mieux vaut savoir où tout chercher

jihelbi

Ton projet n'est pas possible sous cette forme. En effet on ne peut pas utiliser en commande un servomoteur asservi. Il faut d'abord le débrayer de l'asservissement. Tu dois prévoir un système de basculement des servos en mode lecture (ce qui nécessite une électronique appropriée).

Si tu essaies de tourner un servo il retournera obstinément à sa position de consigne.

Par contre il est tout à fait possible de connaître la position d'un servo sans le démonter. Il faut capter la fermeture du circuit moteur mais avec une intensité qui ne permette pas au moteur de tourner et envoyer des pulses de références qui permettront par mesure du temps de fermeture du circuit moteur de connaître indirectement la position du potar interne. Cela nécessite évidemment un dispositif de commutation électronique sur les 3 fils du servo et une détection (analogique) de courant.

JLB


vassi974



Je voudrai que lorsqu'on déplace un des deux bras en le forçant à la main, l'autre fasse le même mouvement en temps réel et cela peu importe lequel des deux bras l'on fait bouger à la main,

Salut Zuran,
est il possible dans ton projet qu'un bras soit "maitre" et l'autre "escalve" ou la réversibilité est obligatoire ? Si elle n'est pas obligatoire, mon avis est de contruire un bras avec des capteurs de position (potentiomètres par ex.), l'autre avec servomoteurs,et le programme qui va bien et hop le tour est joué. :D
Et si réversibilité obligatoire: comme les autres te l'on dis , le couple de resistance en position des servo risque de t'empêcher de bouger le bras, voir meme de la casse, en tous cas sa ne sera pas ergonomique.
Il te faudrait a se moment la, une commande pour désactiver l'alimentation du bras manipulé (un BP + led par ex.) qui te permette de "prendre la main" sur le bras de ton choix.Et meme là, sa risque de forcer un peu sur les servo a cause des engrenage de démultiplication qui n'aime pas trop qu'on les force.
Merci !!!!!

Zuran

Merci pour vos réponses.
Je pense que je vais vous écouter et faire un premier bras constitué à partir de servos et un second qui asservira le premier avec des potentiomètres, j'ai un peu lu quelques articles et si j'ai bien compris je peux brancher directement les potentiomètres sur une arduino uno mais il me faut une carte de contrôle des servos en plus ?

skywodd


je peux brancher directement les potentiomètres sur une arduino uno mais il me faut une carte de contrôle des servos en plus ?

Tu n'as besoin de rien pour controler les potentiomètres ou les servo ;)
Exemple avec 1 servo + 1 potentiomètre :
http://arduino.cc/it/Tutorial/Knob
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Zuran

D'accord, je peux brancher combien de servo au maximum ? si j'en branche trop cela ne risque t-il pas de griller l'arduino ?

Pour ce projet je n'ai besoin que de 6 servo Dagu RS001A qui étant tout petit ne doivent pas consommer beaucoup, mais pour un futur projet j'aurai certainement besoin de servo beaucoup plus gros (genre énorme...), j'imagine que je ne pourrai pas les brancher directement sur mon arduino et qu'il me faudra un contrôleur distinct ?

Encore merci pour vos réponses, ça fait plaisir de voir des gens prêt à aider les débutants, vous touchez des royalties ?  ;)

skywodd


D'accord, je peux brancher combien de servo au maximum ? si j'en branche trop cela ne risque t-il pas de griller l'arduino ?

12 avec une carte classique, 48 avec une carte mega :
http://arduino.cc/en/Reference/Servo

Aucun risque de griller l'arduino, par contre il faut une alimentation +5v solide ;)
(C'est pas la broche +5v de l'arduino qui pourra fourni suffisamment de courant pour 12 servomoteurs, 2-3 ok, plus non)


Pour ce projet je n'ai besoin que de 6 servo Dagu RS001A qui étant tout petit ne doivent pas consommer beaucoup, mais pour un futur projet j'aurai certainement besoin de servo beaucoup plus gros (genre énorme...), j'imagine que je ne pourrai pas les brancher directement sur mon arduino et qu'il me faudra un contrôleur distinct ?

Pas besoin de contrôleur avec les servomoteurs, mais une alimentation +5v solide.
Les servomoteurs ont toute l'électronique de controle qui va bien avec eux, faut juste leur donner suffisamment de courant.


Encore merci pour vos réponses, ça fait plaisir de voir des gens prêt à aider les débutants, vous touchez des royalties ?  ;)

C'est du 100% bénévoles, le plaisir de partager, on gagne pas un centime ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Zuran

Ok merci, je vais de ce pas commencer à faire plein d'expériences :)

UniseV

Tu peux aussi acheter des servo déjà modifiés, avec retour d'information :
Servomoteur standard S3003 avec Retour d'informations(easyrobotics.fr)

Dans ce cas il peuvent servir dans "les deux sens" ton bras peut bouger, et il peut aussi servir de "capteur de position".

Attention, il te faudra couper l'entrée du signal servo avant de bouger le servo à la main, sinon il va tenter de résister.

Il faut s'attendre à de longues phases de calibrage (notament mécanique) avec ce genre de système....
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

Go Up