Servo si muove da solo

Ciao a tutti,
sto facendo qualche prova con il mio nuovo servo (da 5V).
L'ho collegato ad Arduino con l'alimentazione esterna nel seguente modo:

  • Servo <-> + Alimentatore
  • Servo <-> GND Arduino
  • Alimentatore <-> GND Arduino
    Dati Servo <-> Pin 6 Arduino

Ho provato un semplice sketch e non ho alcun problema. Ho però visto che se utilizzo uno sketch che non fa nulla, il servo si muove pianissimo in senso antiorario. Lo sketch che da questo problema è il seguente:

#include <Servo.h>
Servo myservo;

void setup() { 
myservo.attach(6);
}

void loop(){
}

Come vedete non c'è alcuna istruzione, se non il "attach" con cui collego il servo al relativo pin.
Sapreste dirmi perché il servo si muove dopo aver installato questo sketch su Arduino Uno?

Sbaglio qualcosa? Il servo è difettoso? E' normale?

Grazie in anticipo :wink:

Aggiornamento: ho provato un altro servo e da lo stesso problema quindi non credo sia un problema riguardante un eventuale difetto di fabbrica.

Sapreste spiegarmi il motivo di questo bug?

Hai un link al tuo servo quanto meno?

docdoc:
Hai un link al tuo servo quanto meno?

http://www.robotstore.it/product/384/Servo-Robot-Power-HD-AR-3603HB-Rotazione-continua.html

Ora sapresti dirmi il motivo di quel comportamento?

Dal datasheet non vedo indicata la presenza di un trimmer di regolazione della posizione di "fermo" (... cosa che è presente su altri servo).

Probabilmente il segnale che manda di base la libreria servo() quando fai attach() è interpretato comunque come un segnale di movimento, quindi, dopo la attach(), devi trovare il valore da dare con la write() che corrisponde alla posizione di "fermo".

Hai comunque letto il datasheet ? Perché quel servo, sotto sforzo, richiede molta più corrente di quella che Arduino possa dargli, quindi, per alimentarlo, dovrai usare un'alimentazione esterna separata mettendo i GND in comune.

Guglielmo

Non avendoli mai usati attendevo anch'io chiarimenti ipotizzando un problema di "offset analogico" che nei normali servocomandi PPM non esiste, o di "drift digitale" dell'uscita di Arduino (piuttosto improbabile e che una misura all'oscilloscopio ha confermato inesistente).

Ma se si tratta di rotazione continua le cose cambiano... e si può trovare qualche info in più su questa pagina: mauroalfieri.it/elettronica/df15hsr-360-gradi-arduino.html.

arduinopro44:
Sbaglio qualcosa? Il servo è difettoso? E' normale?

Con quei servo cineseria qualunque bug è una feature. :slight_smile:
Se non mandi il corretto valore di PPM, circa 1500 secondi, al servo è normale che può muoversi per i fatti suoi, il corretto valore in us da inviare, per tenere il servo fermo, lo devi trovare con qualche prova, tipicamente è compreso tra 1480 e 1520 us.
Tieni presente che su quei servo il controllo della velocità è un concetto molto aleatorio, in pratica basta che ti sposti di +-/ 100 us dalla posizione di fermo per avere la massima velocità nei due sensi.

arduinopro44:
Ora sapresti dirmi il motivo di quel comportamento?

Ma hai provato a mettere un "myservo.writeMicroseconds(1500);" per comandare il fermo?

gpb01:
Hai comunque letto il datasheet ? Perché quel servo, sotto sforzo, richiede molta più corrente di quella che Arduino possa dargli, quindi, per alimentarlo, dovrai usare un'alimentazione esterna separata mettendo i GND in comune.

Come ho scritto ad inizio discussione utilizzo un'alimentazione esterna! Grazie comunque :slight_smile:

astrobeed:
Con quei servo cineseria qualunque bug è una feature. :slight_smile:
Se non mandi il corretto valore di PPM, circa 1500 secondi, al servo è normale che può muoversi per i fatti suoi, il corretto valore in us da inviare, per tenere il servo fermo, lo devi trovare con qualche prova, tipicamente è compreso tra 1480 e 1520 us.
Tieni presente che su quei servo il controllo della velocità è un concetto molto aleatorio, in pratica basta che ti sposti di +-/ 100 us dalla posizione di fermo per avere la massima velocità nei due sensi.

Grazie! Il valore che tiene fermo il servo è proprio 1480!

Comunque in un post precedente avevo chiesto consiglio alla community riguardo un decente servo da acquistare e l'unica risposta che mi è stata data è che "un servo vale l'altro": adesso però mi parlate di "cineseria" ed altro :\ quindi ne approfitto per chiedervi quali sono dei buoni servi (ovviamente a me servono per "piccoli usi": dimensioni ridotte e tensione di alimentazione bassa, come quello che sto utilizzando adesso insomma).

Scusa ardu44, se non ricordo male tu avevi proposto i link a due servo (tra cui uno quello che hai comprato) e chi ha risposto (forse Brunello) ti ha solo detto che tra quei due non c'era differenza, si equivalevano. Quindi non un servo vale l'altro in generale ma tra quei due, uno vale l'altro.

nid69ita:
Scusa ardu44, se non ricordo male tu avevi proposto i link a due servo (tra cui uno quello che hai comprato) e chi ha risposto (forse Brunello) ti ha solo detto che tra quei due non c'era differenza, si equivalevano. Quindi non un servo vale l'altro in generale ma tra quei due, uno vale l'altro.

Avevo scritto che vagando per la rete quelli che mi sembravano migliori erano quei due ma comunque avevo chiesto qualche suggerimento (mediante link o sigla prodotto) per altri prodotti visto che, come scritto, non ne ho mai acquistato uno.
Comunque la mia non vuole essere una polemica, semplicemente visto che è stato riaperto il discorso ne approfitto per riformularvi la domanda :wink:

Neppure la mi, era solo una precisazione. Probabilmente non vi siete intesi. :slight_smile:
Pazienta, qualche esperto ti risponderà. Purtroppo io non lo sono. @astro è unoi quelli che ne sa molto di servo, se legge penso ti darà qualche consiglio.

arduinopro44:
Avevo scritto che vagando per la rete quelli che mi sembravano migliori erano quei due ma comunque avevo chiesto qualche suggerimento (mediante link o sigla prodotto) per altri prodotti visto che,

Dipende da quanto puoi spendere, un servo decente non costa meno di 30 E, uno buono non meno di 50 E, uno ottimo oltre 100 E. :slight_smile:

astrobeed:
Dipende da quanto puoi spendere, un servo decente non costa meno di 30 E, uno buono non meno di 50 E, uno ottimo oltre 100 E. :slight_smile:

Uno decente (sui 30 euro) dove posso trovarlo? Saresti così gentile da indicarmi un modello, marca o sito? Così capisco supergiù che prodotti cercare.

Grazie mille!

Per esempio questo, è un servo digitale, dotato di cuscinetti sull'asse, è in offerta a 22E.

astrobeed:
Per esempio questo, è un servo digitale, dotato di cuscinetti sull'asse, è in offerta a 22E.

Ti ringrazio!