Servo e 180°

Ciao a tutti
Come mai entrambi i micro servo che ho (uno è il Power HD Micro Servo HD-1800A, l'altro era all'interno del kit di Sparkfun) non raggiungono i 180°ma si fermano un pò prima nonostante da codice li dico di andare a 180°? Devo provare a dargli un angolo maggiore per raggiungere i 180?

La cosa è alquanto strana.. i servi non dovrebbero aver alcun problema a raggiundere i 180°......
sicuro che il codice sia giusto ???

Si, non ci sono errori, il codice è questo:

Servo myservo;
void setup() 
{ 
  myservo.attach(9);
  myservo.write(180);
} 
void loop() {}

Il fatto che sono micro servo da due soldi può contribuire? Qualcuno ha mai avuto questo problema?
Preciso che il datasheet dice 180+-10° e che alimento a 5volt invece che 6 (quindi un pò meno del massimo).

Servo myservo;
void setup() 
{ 
  myservo.attach(9);

} 
void loop() {
  myservo.write(0);
delay(100);
  myservo.write(180);
delay(10000);
}

prova così.....
le istruzioni vanno dentro al loop....
cosi porta il servo a 0°
poi attende 100millisecondi
porta il servo a 180°
poi attende 10000millisecondi
poi riparte :wink:

Raggiungo i 165°, può centrare qualcosa il maximum travel del datasheet? Sinceramente non so cosa vogliano dire i usec del datasheet..
Comunque eccolo qua: http://www.hobbytronics.co.uk/datasheets/HD-1800A.pdf

A circuito spento se provi a girare a mano la squadretta del servo riesce a farteli 180 gradi o si ferma prima?

I servi vengono comandati con una serie di mpulsi simili al PWM che si chiamano PPM e vengono ripetuti ogni 20usecondi ... la differenza del dutycicle del segnale determina il grado :wink:
dal datasheet
5-2 Limit angle

Cosa cambia dal Limit Angle(5-2) al Maximum travel (6-8)? Sperimentalmente prevale il Maximum travel.
Provando a mandarlo ai 180° fa un rumore di sforzo, tenendolo a 160° invece non fa il gracchio.
Ad ogni modo lo userò nel range (0-160) per evitare problemi.
Ho letto su http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1250104685 che in genere non arrivano proprio a 180°.

Ad ogni modo Grazie a tutti

è normalissimo perchè arriva a 180° e poi "spinge" per mantenerli ma dev essere più un ronzio che un rumore forte...

@Pelletta: Scusa ho letto ora il tuo intervento prima mi era sfuggito, no, neanche a mano riesco a fare i 180 completi

Diciamo che spinge forte se provo a mandarlo a 180 perchè per l'appunto non riesce a raggiungerli, si ferma a 160-165 gradi circa

Allora ha seriamente un problema meccanico interno che però potresti risolvere anche te se è per esempio una semplice bava di plastica causata da un problema durante la fusione dell'ingranaggio

Ho 2 servi e mi sembra strano che tutti e due abbiano lo stesso problema,non mi fido ancora a smontarli,ho solo quelli.
Su un thread che ho linkato dicevano che i micro-servo per modellismo non raggiungono proprio i 180 perchè in aeroplanini è pericoloso fare un movimento così ampio, o perlomeno è quello che ho capito.
Comunque usandoli in un range ristretto 0-160 sembra che vadano bene senza fare rumori eccessivi.
Per il futuro qualcuno può consigliarmi una buona marca di servi?

Io ho 2 micro servi un Mistery ed un TowerPro e tutti e due raggiungono io 180°......
se vuoi dei buoni servi senza apendere un occhio della tersta tipo sui 20 euro l'uno ti consiglio GWS,Sanwa,Hitech
e poi si passa ai digitali ma è tutt'altra musica... e costo....

flz47655:
Ho 2 servi e mi sembra strano che tutti e due abbiano lo stesso problema,non mi fido ancora a smontarli,ho solo quelli.
Su un thread che ho linkato dicevano che i micro-servo per modellismo non raggiungono proprio i 180 perchè in aeroplanini è pericoloso fare un movimento così ampio, o perlomeno è quello che ho capito.
Comunque usandoli in un range ristretto 0-160 sembra che vadano bene senza fare rumori eccessivi.
Per il futuro qualcuno può consigliarmi una buona marca di servi?

Io il mio servo standard l'ho smontato e la battuta meccanica stà proprio a 0° e 180° se a te ferma a 160° e senti rumore significa che hai la battuta meccanica li...prova a usare questo codice per muoverlo a step di 1°

#include <Servo.h> 
Servo myservo;  // create servo object to control a servo               
int pos = 0;    // variable to store the servo position 
void setup() 
{ 
  myservo.attach(3);  // attaches the servo on pin 3 to the servo object 
}  
void loop() 
{ 
  for(pos = 90; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  delay(10000);
  for(pos = 180; pos>=90; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);      // tell servo to go to position in variable 'pos' 
    delay(15);
  }
  delay(10000);
  for(pos = 90; pos>=1; pos-=1)     // goes from 90 degrees to 0 degrees 
  {                                
    myservo.write(pos);      // tell servo to go to position in variable 'pos' 
    delay(15);
  } 
  delay(10000);
  for(pos = 0; pos < 90; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  delay(10000);
}

parte dalla posizione cnetrale e va a 180 poi da 180 a 90 e da 90 a 0

Grazie per la risposta, ho già provato l'esempio ma evidentemente come dici è un blocco meccanico