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:
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
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
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).
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).
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.
Ok! Più tardi provo e stasera mi farò risentire, grazie intanto!
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.
Ho provato, ma niente, sempre il solito problema.. scrivo ( myservo.write(90) ) e si muove comunque di 180 °, però piu lentamente..
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.
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.
Grazie per la risposta! ma niente da fare..ho scritto questo codice:
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