Go Down

Topic: Xbee avec servomoteurs (Read 986 times) previous topic - next topic

Lolo

Bonjour,
je possède un shield Xbee et deux modules v1.
En mettant sur l'arduino un code qui éclaire la led (pin 13) lorsque le SERIE reçoit H et l'éteint lorsuq'il recoit autre chose.
Quand j'envoi H, cela fonctionne, la led s'éclaire sans fil via le XBEE.
Le problème, c'est lorsque je remplace ma LED par un servomoteur ! Ou, simplement, que je fait allumer la LED et que j'active un moteur sur le pin 5 : la led clignote et le moteur saccade.  :-/
Comment y remédier ?
merci, @+

anthology

as tu penser a alimenté en externe ton servo ??
car l'arduino a peut etre pas assez de puissance

Lolo

Euh, l'arduino est alimentée avec une pile 9V, et mes servos sont connectés sur la sortie "+5V" de l'arduino.
Je doit utiliser une alimentation externe pour mes servos ?

Jean-François

Euh... un servo ça fonctionne pas comme un bête moteur DC, le + et le - sont toujours branchés (le + sous 5V et le - sur le gnd), le fil de signal reçois les signaux PWM (les positions / couleurs des fils changent suivant la marque du servo) :




Et ici une très bonne page explicative :

http://www.pobot.org/Bouge-ton-servo.html

;)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Lolo

Oui, c'est de  ça que je parlais, et il est branché correctement !
De plus, en passant par le cable, et avec le meme code, je n'ai pas de problème ! Il y a donc problème avec la liaison xbee  :-/

Jean-François

#5
Jan 26, 2010, 06:59 am Last Edit: Jan 26, 2010, 07:00 am by jfs Reason: 1
Tu as essayé ton programme de commande en direct, sans passer par le Xbee ?

Montre également le code que tu utilises.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Lolo

En utilisant la liaison série, mais avec un cable USB connecté a l'arduino, ça fonctionne nickel ;), mais ne xbee sa ne fonctionne pas
Voila le code qui est sur l'arduino :
Code: [Select]


#define ServoLBPin 3
//  Servos
int RefreshTime  = 20;
int MinPulse     = 0;
int MaxPulse     = 180;
int TurnRate     = 10;
long LastPulseLT = 0;
long LastPulseLB = 0;
long LastPulseRT = 0;
long LastPulseRB = 0;
int CenterPosition = 90;
int PulseWidth;
int Sens;
int Valeur;
int ledState;
void setup()
{
   PulseWidth = 90;
 // Initialisation liaison s[ch65533]rie
 Serial.begin(19200);
 pinMode(ServoLBPin, OUTPUT);  // Pin du servo en SORTIE
 pinMode(13,OUTPUT);
}

// Servo Gauche Bas
void ActiveServoLB(int PulseWidthLB){
 if(millis()-LastPulseLB >= RefreshTime){
   digitalWrite(ServoLBPin, HIGH);
   delayMicroseconds(PulseWidthLB);
   digitalWrite(ServoLBPin, LOW);
   LastPulseLB=millis();
 }
}

void loop()
{

 // test if a new value has been received
 if (Serial.available())
 {
   // update without any control
   int valeur = Serial.read();  


   if (valeur == 'Z') {  //  TOUCHE Z
     ledState = HIGH;
   PulseWidth += TurnRate;
   ActiveServoLB(PulseWidth);
   }
   else{
     ledState = LOW;
   }
   digitalWrite(13,ledState);
 }


}


Je précise que pour faire mes tests, j'ai mis ce code dans un nouveau fichier, afin de tester les différentes fonctionalitées séparément
merci

Go Up