Aiuto su precisione della rotazione del servo

Salve ragazzi, ho un problema sul servo, ho realizzato tramite Arduono nano e il modulo HC-06 un programma che permette tramite App smartphone di farmi ruotare il servomotore di 180°, ovviamente seguendo una guida su youtube, perchè sono nuovo nel mondo di Arduino. Ho notato che il servo non è preciso, sul grado 180° va oltre e non si ferma precisamente a 180°, a me servirebbe che sia quanto più preciso possibile… è fattibile?
componenti sono:

  1. Arduino nano

  2. modulo HC-06

  3. Servo Tower Pro SG90

  4. Arduino nano

  5. modulo HC-06

  6. Servo Tower Pro SG90

ed il programma è questo:

[color=#a52a2a]#include <SoftwareSerial.h>
[/color]


[color=#a52a2a]#include <Servo.h>
[/color]


[color=#a52a2a]Servo myservo;
[/color]


[color=#a52a2a]int bluetoothTx = 10;
[/color]


[color=#a52a2a]int bluetoothRx = 11;
[/color]


[color=#a52a2a]SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
[/color]


[color=#a52a2a]void setup()
[/color]


[color=#a52a2a]{
[/color]


[color=#a52a2a]myservo.attach(9);
[/color]


[color=#a52a2a]Serial.begin(9600);
[/color]


[color=#a52a2a]bluetooth.begin(9600);
[/color]


[color=#a52a2a]}
[/color]


[color=#a52a2a]void loop()
[/color]


[color=#a52a2a]{
[/color]


[color=#a52a2a]if(bluetooth.available()> 0 )
[/color]


[color=#a52a2a]{
[/color]


[color=#a52a2a]int servopos = bluetooth.read();
[/color]


[color=#a52a2a]Serial.println(servopos);
[/color]


[color=#a52a2a]myservo.write(servopos);
[/color]


[color=#a52a2a]}
[/color]


[color=#a52a2a]}
[/color]

Grazie mille

Ciao VinDiesel,

immagino tu stia utilzzando la libreria servo standard!?

hai datp una letta a Questo

Ciao ORSO2001, sono onesto mi sto cimentando ora con arduino, proprio perchè mi serve realizzare questo progetto, quindi non saprei la questione delle librerie, come faccio a vedere quale libreria, io abbia usato? :)

Posta lo sketch (SECONDO IL REGOLAMENTO)

Ciao, P.

ciao…per cortesia modifica il tuo primo post togliendo il codice così com’è ed inserendolo nuovamente ma tra i tag code (pulsante </> sopra le faccine)…poi quandi scrivi:

#include <Servo.h>

vuol dire che stai includendo/facendo riferimento ad una libreria e più precisamente alla Servo.h

Ecco, scusa ma prima non trovato il tag code :) ho fatto :) per quanto riguarda il mio progetto, si può risolvere il problema che non ruoti perfettamente a 180° a me servirebbe più precisione possibile, pensavo che fosse dovuto al servo, ma prima di fare acquisti inutili, volevo un parere da voi esperti :)

quando dici "volevo un parere da voi esperti" mi guardo dietro le spalle se c'è qualcuno... :D

vedo che scrivi anche sulla seriale il valore letto dal BT ....sei sicuro di ricevere 180? sei sicuro che gli altri valori vengono "eseguiti" correttamente?...nel senso...il problema c'è solo con 180 o anche con altri valori?

ahaha si siete esperti tutti dal più novizio per me siete tutti esperti ahaha :slight_smile: io sono super nuovo mai mai usato, ho ancora visto in questi gg come si carica lo Sketch e la sua interfaccia :slight_smile: avevo bisogno di questo progetto e ho seguito passo passo una guida su yuoutube

“vedo che scrivi anche sulla seriale il valore letto dal BT …sei sicuro di ricevere 180?
sei sicuro che gli altri valori vengono “eseguiti” correttamente?..nel senso…il problema c’è solo con 180 o anche con altri valori?”

Non lo so, vedendo però il funzionamento il problema maggiore è sul grado 180 e si vede ad occhio propio, a me serve che ruota da 180 a 0 e da 0 a 180° solo questo deve eseguire

ciao...ricordandomi di aver acquistato tempo fa un kit della ELEGOO ho trovato esattamente quel servo...ho fatto due prove e sbaglia un po' su tutti i gradi....anche provando a variare un po' i valori di min e max sull'attach() non ottengo i risultati voluti....chineseria progettata male. il risultato migliore l'ho ottenuto mettendo:

myservo.attach(pin,559,2250)

fa "bene" lo 0 ed i 180 sbaglia di brutto i 90...e tutti quelli in mezzo...se cambio 559 con 560 in su...schifezza e non so perchè...non ho guardato la libreria come calcola il tutto...

Grazie mille, anche se è leggermente arabo perchè sono agli inizi :( sono disposto anche ad acquistare servo migliori, lo so che costano di più, ma voglio raggiungere l'obbiettivo di far ruotare il servo precisamente, dite che è fattibile?

Non tutti i servi possono ruotare esattamente di 180°, il motivo è che nascono per uso modellistico e li appunto non serve una rotazione così ampia, il servo che hai tu come ti ha fatto notare Orso2001 è una cineseria da 10 euro al Kg, Se vuoi un buon servo preciso devi prendere un sanwa, futaba o hitech, è che sia digitale. Tu di preciso che devi fare e necessiti proprio di una rotazione di 180°, magari si può risolvere in modo diverso.

ciao zef

si avevo letto che servono servo più precisi, ho utilizzato questo perchè me lo sono trovato :) in pratica a me serve la precisione perchè sopra sara montata un action cam che deve fare due inquadrature, fronte e retro, ovviamente senza doverla smontare ogni volta a mano, voglio tramite servo che faccia queste due rotazioni, quindi mi serve che sia preciso in modo che l'inquadratura non sia sbagliata come accade ora con il servo attuale :)

Come spiegato molte volte i servo, a secondo di marca e modello, hanno delle lievi differenze nel modo di comando, non esiste un vero e proprio standard adottato da tutti i costruttori, ognuno fa come gli pare.
In linea di massima i servo stanno al centro con un segnale di 1500 us, si posizionano a -45* con un segnale di 1000 us, si posizionano a +45° con un segnale di 2000 us, però questi sono solo valori indicativi perché poi a seconda del servo che hai in mano risultano spesso e volentieri leggermente diversi.
Non tutti i servo possono ruotare di 180°, sia perché può esserci il blocco meccanico che lo impedisce, sia perchè la corsa viene limitata elettronicamente, vale solo per i servo digitali dove spesso e volentieri di fabbrica ruotano solo per +/- 60°, valore che può essere modificato tramite un apposito programmatore per servo se il produttore fornisce questa possibilità, solitamente presente solo su i servo di fascia medio/alta.
Per farla breve, i servo possono posizionarsi con buona precisione, migliore di 0.2° per i servo di buona qualità, fornendo il giusto impulso, basta vedere il loro datasheet per sapere quanto, però il servo in tuo possesso è una cineseria di infima qualità, scordati i movimenti precisi, fluidi e sopratutto scordati il ritorno a zero (il centro) preciso.
Se vuoi precisione devi prendere un servo decente, p.e. questo non costa molto e ha l’albero di uscita su cuscinetto, caratteristica di vitale importanza se il servo deve lavorare con elevati carichi radiali.

Ciao grazie mille per la spedizione :) si il servo in mio possesso, fa ca... re, sono disposto a spendere anche oltre 15€ basta che il servo ruoti perfettamente dei gradi indicati, non essendo del campo, non conosco quali servo sono quelli che facciano al caso mio, ecco xke mi sono permesso di disturbarvi e chiedo scusa se non conosco determinate funzioni :(

Quindi acquistando questo risolvo?

Se il servo che ti ho linkato è compatibile come dimensioni e coppia necessaria alla tua applicazione sicuramente risolvi la questione precisione, ripetibilità, ritorno a zero, dei movimenti, però devi comunque scrivere il codice in modo che rispetti le specifiche di durata impulso dei servo Hitech. In particolare: posizione centrale 1500 us, deviazione di 45° ogni 450 us, estremi (0-180°) 600us - 2400us, può essere necessario variare leggermente questi valori tramite un fine tuning con prove pratiche.

e quello non saprei farlo :( perchè ho seguito una guida passo passo, è la prima volta in questo mondo :(

Guarda l'esempio "servo knob", presente di serie nel IDE di Arduino, al posto di myservo.write() usa myservowriteMicroseconds(), con valori compresi tra 600 e 2400, 1500 = servo al centro, e ottieni movimenti compresi tra +/-90° molto precisi.

Secondo Loro non arriva a 180°

secondo me ti conviene abbandonare l'idea del servo è utilizzare un motore passo passo, anche un piccolo motore senza riduttori riesce a ruotare una actioncam e la precisione di un passo passo è sicuramente migliore di un servo, se non ti serve una velocità elevata nello spostamento anche uno di questi va più che bene