Go Down

Topic: Servo rcd-645mg (Read 11434 times) previous topic - next topic

nicolasB

Bonjour à tous,

Voilà je viens vous exposer un petit problème, je bosse sur un robot quadripede pour un projet d'entrée en école d'ingé.
J'ai les 13 moteurs (12 + 1 pour la tête) ce sont des rc plus rcd645Mgb.
En voulant tester par un simple programme servo.write(0) puis délay de 2s puis 180 degrés je me rends compte que mon servo ne décrit qu'un angle d'environ 45°...
J'ai testé des delayMicroseconds mais rien n'y fait... Je ne comprends ce qui se passe et pas moyen de trouver la datasheet du moteur...
Si vous avez une idée...

Artouste

#1
Nov 30, 2013, 09:28 pm Last Edit: Nov 30, 2013, 09:42 pm by Artouste Reason: 1

Bonjour à tous,

Voilà je viens vous exposer un petit problème, je bosse sur un robot quadripede pour un projet d'entrée en école d'ingé.
J'ai les 13 moteurs (12 + 1 pour la tête) ce sont des rc plus rcd645Mgb.
En voulant tester par un simple programme servo.write(0) puis délay de 2s puis 180 degrés je me rends compte que mon servo ne décrit qu'un angle d'environ 45°...
J'ai testé des delayMicroseconds mais rien n'y fait... Je ne comprends ce qui se passe et pas moyen de trouver la datasheet du moteur...
Si vous avez une idée...

bonsoir
ça semble etre du servo standard  : course de 180°  mais pourquoi pas limité à une course de 45°  (rcd6[font=Verdana]45[/font]Mgb)
question quasi rituelle avec les servo et arduino , le servo est alimentée par quoi ? repiquage d'alim sur arduino ou alim externe ?

ton programme de test sert bien à ne tester qu'un et un seul servo ?
et tes 13 servos reagissent à l'identique ?

avec un servo.write(90) tu releve quel angle sur le servo ?


on peut voir le code ?

nicolasB

Le servo est alimenté par une Lipo 2s + regulateur 6V... Sur un sensor shield V2.0.

Le code utilisé est celui ci :
Quote

#include <Servo.h>
Servo servoMain;

void setup()
{
   servoMain.attach(0);
}

void loop()
{
   servoMain.write(0);   
   delay(1000);       
   servoMain.write(90);
   delay(1000);       
   servoMain.write(180);
   delay(1000);       
   servoMain.write(90);
   delay(1000);       
}
;

Et oui en testant tout les moteurs ça me parait pareil... (j'ai regardé la butée est elle me semble beaucoup plus loin).
En tout cas le 0 et le 180 ne correspondent pas et le 90 à peu près. J'obtiens le juste milieu à 1560us.

Merci en tout cas de m'aider.

Super_Cinci

Salut,

Il semble qu'il soit limité à 60°, il est donné à 0,14s/60°. le problème de la lib servo, c'est qu'il faut définir les angles, car pour chaque servo, la plage d'impulsion varie...

nicolasB

Je pensais que c'etait un ordre de vitesse. du coups je me retrouverai avec 13 moteurs inutilisables ?  :smiley-eek-blue:

Super_Cinci


Je pensais que c'etait un ordre de vitesse. du coups je me retrouverai avec 13 moteurs inutilisables ?  :smiley-eek-blue:
Pas forcément, mais peut-être va-t-il falloir repenser ton système pour l'adapter à ton projet. Essaie de tester tes moteurs, en ajoutant par exemple un poussoir qui incrémente d'1° à chaque appui en envoyant la valeur su le terminal, tu pourras mesurer les déplacements valides de tes moteurs

Par contre, dis pas que t'as dépensé 200€ pour des produits que tu ne connaissais pas, car c'est refoulage direct! La moindre des choses quand on achète, c'est de se renseigner avant sur les caractéristiques du / des bestiaux...

nicolasB

#6
Dec 01, 2013, 09:11 am Last Edit: Dec 01, 2013, 09:18 am by nicolasB Reason: 1
Le soucis c'est que je pensais que les servos etaient quasiment tous à 180° sauf ceux modifiés et pour me renseigner aucune datasheet et le site constructeur www.rcplus.eu n'est pas encore utilisé...
Bref il faut que je demande au vendeur pour savoir si il a des infos supplementaires car pour lui ils avaient une course à 180°...
et bizarrement les butées sont bcp plus loin...

nicolasB

#7
Dec 01, 2013, 09:26 am Last Edit: Dec 01, 2013, 09:27 am by nicolasB Reason: 1
Nouvelle info je teste ce programme :
Code: [Select]
#include <Servo.h>

Servo myservo1;

void setup () {
  myservo1.attach (0);
 
}

void loop () {
  for(int i = 500;i<2500;i++){
  myservo1.writeMicroseconds(i);
  delay(2);
  }
}

Le servo a une course d'environ 100 à 110° bizarrement et donc n'est pas limité à 60°...ça donne peut etre une piste.

haifger


Code: [Select]

void setup () {
  myservo1.attach (0);
 
}



Brancher un servo sur la broche #0 c'est quand même un peu chercher les ennuis... Si ce n'est pas juste une erreur de recopie du code sur ce forum, tu devrais plutôt faire tes essais sur une autre broche, la 9 par exemple.

nicolasB

Essai effectué et idem sur la broche 9...

Artouste

#10
Dec 01, 2013, 10:39 am Last Edit: Dec 01, 2013, 10:51 am by Artouste Reason: 1


Le servo a une course d'environ 100 à 110° bizarrement et donc n'est pas limité à 60°...ça donne peut etre une piste.

bonjour
meme si ce n'est pas orthodoxe ça donne quoi avec cette modif ?
le debattement angulaire change ?
Code: [Select]

for(int i = 350;i<3500;i++){
 myservo1.writeMicroseconds(i);
 delay(15);

nicolasB

Bonjour,

toujours le meme débattement de 110° mais il reste plus longtemps sur la fin (à mon avis on a du dépasser la valeur max)...

Artouste


Bonjour,

toujours le meme débattement de 110° mais il reste plus longtemps sur la fin (à mon avis on a du dépasser la valeur max)...


ok
servo deconnecté et en forçant la rotation à la main, tu a quelle amplitude angulaire entre butée mecanique ?
lorsque ton servo atteint les ~ 110° que tu le deconnecte , il te reste un angle ~ de combien  pour atteindre "à la main" la butée meca ?

nicolasB

#13
Dec 01, 2013, 12:00 pm Last Edit: Dec 01, 2013, 12:04 pm by nicolasB Reason: 1
en butée méca c'est ce que je disais j'ai 220° voilà pourquoi je ne comprends pas. il me manque une donnée quelque part...
avec un myservo1.writeMicroseconds(350); il me reste 50° pour aller en butée 0°...

Artouste


en butée méca c'est ce que je disais j'ai 220° voilà pourquoi je ne comprends pas. il me manque une donnée quelque part...
avec un myservo1.writeMicroseconds(350); il me reste 50° pour aller en butée 0°...

Je ne suis pas assez specialiste, et a partir de là tres humblement je seche

mais de ce que je determine
butées meca 220°
en general le potentiometre de recopie à une course de 270°, les butées meca sur 220° utile  empeche de les exploser, et la course est limitée à 180° par l'electronique.

en regardant rapidement les servo modelisme avec une course de 110° ça ne semble pas courir les rues
intuitivement je vois bien un facteur 2 entre 220° et 110° , mais ce n'est peut etre qu'une coincidence fortuite.
Peut etre poser ta question sur un forum serieux de modelisme, il y a dans chaque domaine des gens qui connaissent par coeur les caracteristiques de tel ou tel "truc".

si tu obtiens des reponses pertinentes, il serait sympa que tu en fasse part ici, c'est le genre d'info toujours bonnes à prendre



Go Up