Servo motore oscilla attorno a posizione.

Salve a tutti ho realizzato un piccolo programma test per i servomotori come nell esempio:

#include <Servo.h> 
 
Servo myservo;   
 
int pos = 0;   
void setup() 
{ Serial.begin(9600);
  myservo.attach(9);
} 
 
 
void loop() 
{ 
 pos = 7;
 myservo.write(pos);
  Serial.println(pos);
 delay(1000);
 pos=80;
  myservo.write(pos);
 delay(2000);
 Serial.println(pos);
 
}

I collegamenti sono semplici e gli stessi illustrati qui: http://www.mauroalfieri.it/elettronica/tutorial-arduino-servo.html
Il servo che attacco invece di portarsi a 7° sostarvi per 1 secondo, portarsi ad 80° e sostarvi peer due secondi fa la seguente cosa:

oscilla per un istante nella posizione 7°, si porta ad 80° dove oscilla attorno a quella posizione per circa 2 secondi poi torna indietro ricominciando (le oscillazioni sono di circa trenta gradi...si vede quindi il servo muoversi in maniera casuale durante tutto il programma...). Non capisco perchè il servo non smette mai di muoversi...sembra inoltre molto sensibile a come io tocchi i fili di connessione...

Sapete dirmi cosa sbaglio?

grazie per la disponibilità.

david

Non sono un esperto.
Premesso cio, secondo me
o l'alimentazione dei servo è poca (meglio alimentare i servo in maniera separata da Arduino ma con il GND in comune e di solito i servo vanno almeno a 6V, ma leggi bene le specifiche del tuo. Poi Arduino eroga poca corrente, magari il tuo servo ne vuole di più)
oppure i falsi contatti che riporti danno problemi seri. Ma che fili usi? Dal tutorial infili tutto su Arduino direttamente, tu come hai fatto? Usi dei cavetti apposta?

Una volta mi è accaduta la stessa cosa.
Era colpa dei contatti fatti a cavolo di cane (era un tentativo per vedere come allineare quattro servo).

Non ho guardato il codice ma controlla che il rinfresco dell'impulso di comando sia almeno 50 volte al secondo, se per qualche motivo , un delay o altro , l'impulso non c'è fà questo scherzo

Innanzitutto grazie a tutti per la disponibilità.

Come potrò fare nuovamente delle prove alimenterò il servo da esterno e non da arduino e in seconda istanza proverò a d eliminare dal programma tutte le pause. Vi farò sapere appena posso.

Per curiosità vi dico che arduino era alimentato al momento delle prove sia con seriale che con alimentatore esterno. La cosa bella è che come ho staccato il seriale il servo ha cominciato a comportarsi come doveva. Credo che disogna fare molta attenzione con le interferenze per manovrarli...

Grazie ancora a tutti.

Saluti

David

Volevo inoltre chiedere per ora senza necesità di un altro post...

Intel galileo mi dà molti problemi con la libreria servo...succede anche a voi? Non riesce nemmeno a caricare alcune funzioni...
E' un problema mio opure anche voi state trovando difficoltà?

Grazie

Non conosco le librerie servo di arduino ma per avere una ottima risoluzione e stabilità sui servo ho riscontrato che bisogna usare i timers hardware di atmel, in questo modo si può aggiungere un applicativo impegnativo come un collegamento DMX a 250kbps senza problemi , ma se si usano timers software è impossibile avere risoluzione e stabilità

per buona risoluzione intendo <=4uSec per cattiva risoluzione intendo >16uSec

ho riscontrato che i servo economici non riescono ad apprezzare risoluzioni sotto i 4uSec