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 ![]()
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 ![]()
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