Go Down

Topic: Problema con servo (Read 1 time) previous topic - next topic

Ithos92

Buongiorno a tutti!
In questi giorni ho provato a comandare un servo con arduino, però non riesco a muoverlo come desidero io..
Il servo è un Graupner Servo C 577  http://www.graupner.de/en/products/4101.LOSE/product.aspx
Vorrei capire se sono io che sbaglio con il codice oppure è il mio servo che è diverso da quelli standard..
Innanzitutto ho usato il codice standard che ci offre il programma di arduino:

Code: [Select]


#include <Servo.h>

Servo myservo; 
               
int pos = 0;

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


void loop()
{
  for(pos = 0; pos < 180; pos += 1) 
  {                                 
    myservo.write(pos);             
    delay(15);                       
  }
  for(pos = 180; pos>=1; pos-=1)     
  {                               
    myservo.write(pos);             
    delay(15);                       
  }
}



E fin qua tutto ok, il mio servo gira di 180° e poi torna a 0° senza nessun problema..
Il problema nasce quando io voglio posizionarlo a mio piacimento, non riesco..
se ad esempio scrivo: myservo.write(90) lui fa tutti i 180°
o sennò, se con le debite sostituzioni, sostituisco sul ciclo for i valori 0 e 180 con 60 e 120, mi dovrei aspettare che compia una rotazione meno ampia..e invece niente, gira comunque di 180°!!
Mi potreste aiutare?
Grazie mille per l'ascolto

ratto93

Molto strano, non dovrebbe darti alcun problema...
Se corri veloce come un fulmine, ti schianterai come un tuono.

Ithos92

So che è strano, ma mi serve per far girare le ruote di una macchinina, e per me è essenziale poterlo muovere a piacere, da tastiera ad esempio..
Ma quando ruota, lo fa solo di 180°, oppure sforza verso la direzione opposta dove non può andare

niki77

Interessante.
Hai alla mano documentazione specifica del servo?
Uno volta mi sono imbattuto in un servo che aveva un range di utilizzo diverso dagli altri e sostituendolo nella scheda questo si comportava diversamente.

Carta alla mano dovresti vedere i valori di minimum pulse width e maximum pulse width.
Una volta recuperati usa il costruttore servo.attach(pinnumber,min,max).

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Ithos92


Interessante.
Hai alla mano documentazione specifica del servo?
Uno volta mi sono imbattuto in un servo che aveva un range di utilizzo diverso dagli altri e sostituendolo nella scheda questo si comportava diversamente.

Carta alla mano dovresti vedere i valori di minimum pulse width e maximum pulse width.
Una volta recuperati usa il costruttore servo.attach(pinnumber,min,max).




Purtroppo non ho documentazioni su questo servo e per ora su internet non ne ho trovate..
Su che valori possono variare solitamente min e max? cosi se non trovo un valore su qualche sito, almeno provo ad indovinarlo :)

niki77

Nel mio caso era da circa 700 (min) a 1800(max) ma non ricordo ne marca ne modello.
Il default della libreria arduino è da 544 a 2400 se non sbaglio.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Ithos92


Nel mio caso era da circa 700 (min) a 1800(max) ma non ricordo ne marca ne modello.
Il default della libreria arduino è da 544 a 2400 se non sbaglio.



Ok! Più tardi provo e stasera mi farò risentire, grazie intanto!

Ithos92


Nel mio caso era da circa 700 (min) a 1800(max) ma non ricordo ne marca ne modello.
Il default della libreria arduino è da 544 a 2400 se non sbaglio.



Ho provato, ma niente, sempre il solito problema.. scrivo ( myservo.write(90) ) e si muove comunque di 180 °, però piu lentamente..

niki77

Ma se provi a fare qualcosa tipo myservo.write(10) di quanto si sposta?

Su che pin l'hai collegato?
un pwm spero!
Se il codice che hai allegato è lo stesso lo hai collegato al 9, prova a fare la stessa cosa su un altro pin pwm, non il 10 però.
Prova sul 3 e sul 5 e facci sapere.
Se risolvi allora hai lo stesso problema che ho avuto io tempo fà con i pwm collegati al tmr1.
Problema software per fortuna che poi ho risolto.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Ithos92


Ma se provi a fare qualcosa tipo myservo.write(10) di quanto si sposta?

Su che pin l'hai collegato?
un pwm spero!
Se il codice che hai allegato è lo stesso lo hai collegato al 9, prova a fare la stessa cosa su un altro pin pwm, non il 10 però.
Prova sul 3 e sul 5 e facci sapere.
Se risolvi allora hai lo stesso problema che ho avuto io tempo fà con i pwm collegati al tmr1.
Problema software per fortuna che poi ho risolto.



Grazie per la risposta! ma niente da fare..ho scritto questo codice:
Code: [Select]

#include <Servo.h>

Servo myservo;

void setup()
{
  myservo.attach(5);
}
void loop()
{
  myservo.write(90);
  delay(1000);
  myservo.write(120);
  delay(1000);
}


ma la rotazione è comunque di 180°, qualsiasi cosa io scrivo su write(), sia sul pin 3 che sul pin 5..

niki77

Ma hai provato uno psostamento minimo come ti avevo detto io?
tipo

myservo.write(10);
delay(2000);
myservo.write(15);
delay(2000);

che risultato hai ottenuto?

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

paverik

saluti a tutti,
leggevo questo post e dato che anche io armeggio con i servi ti posso dare solo questa dritta per quello che vale.
Probabilmente codice a parte, tutti i servi che io sappia sono limitati per un arco di 180 gradi, sicuramente quelli destinati al modellismo.
Infatti per alcune applicazioni particolari esistono dei servi appositi.
Non è un grosso problema, in rete c'è un video che ho visto circa un anno fa che ti insegna come togliere il dentino di blocco nel servo.
Spero di esserti stato utile.
ciao

smasho

come alimenti il servo? ricorda che tutto deve essere messo a massa comune per avere un riferimento di potenziale!

niki77


come alimenti il servo? ricorda che tutto deve essere messo a massa comune per avere un riferimento di potenziale!


Quoto di brutto!!!
Questo è alla base!!!
Spero tu abbia seguito gli esempi di collegamento del playground...
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Ithos92

Per il collegamenti ho seguito quest'immagine che ho trovato su una guida (però io ho un arduino mega):





Domani provo a fargli fare lo spostamento minino e vi dirò l'esito..
Vi ringrazio ancora per la disponibilità

Go Up