calibrazione servo

ciao a tutti,
qualcuno di voi sa come poter calibrare in maniera abbastanza corretta un servo?
possiedo un parallax std pm bb ht hs.

ho provato un pò manualmente ma non sono riuscito ad ottenere la precisione che cercavo..

Ciao! sei riuscito a controllare questi servo? anche io ne ho due ma non riesco a farli funzionare con arduino uno, mi puoi dare qualche dritta?

ringrazio anticipatamente

se non sbaglio la libreria servo ti permette di modificare i valori max e min del livello alto nel segnale di controllo dei servo, dovresti controllare anche quello.

e come sono inesperto.......
con questo codice dovrebbe andare da 0 a 180 gradi e viceversa ma in realtà non si ferma per tornare indietro e continua girare all'infinito

#include <Servo.h>
int pos = 0;
Servo myservo;

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);
}
}
con questo dovrebbe funzionare qualsiasi tipo di servomotore giusto?

La sintassi completa del comando attach è la seguente:

servo.attach(pin, min, max)

in cui min e max corrispondono alle ampiezze degli impulsi corrispondenti alla posizione 0° e 180°.

Le ampiezze sono espresse in microsecondi e valgono normalemente 544 e 2400.

Puoi provare a modificare questo valori per modificare le posizioni relative.

e per fargli fare un giro completo?
si può variare anche la velocità di rotazione o quella rimane fissa?
si può scegliere anche da quale parte cominciare a girare? in senso orario o antiorario?

ringrazio per i tuoi suggerimenti utilissimi come sempre

dedracing:
con questo dovrebbe funzionare qualsiasi tipo di servomotore giusto?

Si, ma se quello che hai tu é un servo a rotazione continua và gestito in modo diverso

Ora che ci penso, quel tipo di servo è usato nel robot De Agostini ed è del tipo a rotazione continua.

Quindi fornire 90° (1500 ?s di impulso) dovrebbe corrispondere a motor fermo, 0° (500 ?s) e 180° (2000 ?s) piena velocità in senso orario e antiorario rispettivamente, mentre gli angoli intermedi dovrebbero corrispondere a velocità intermedie nei due sensi.

myservo.attach(9, 500, 2000);

cyberhs:
Quindi fornire 90° (1500 ?s di impulso) dovrebbe corrispondere a motor fermo, 0° (500 ?s) e 180° (2000 ?s) piena velocità in senso orario e antiorario rispettivamente, mentre gli angoli intermedi dovrebbero corrispondere a velocità intermedie nei due sensi.

In realtà basta spostarsi poco sopra, o sotto, dalla posizione centrale (1500 us), che il servo comincia a girare alla massima velocità, questo per via di come funziona il servo visto che è gestito da un pid, anche se l'errore è piccolo in breve tempo spinge il motore alla massima velocità per cercare di compensarlo.

Astro, addirittura un PID?

Pensavo fossero più semplici.

Non hai uno schema sottomano?

cyberhs:
Astro, addirittura un PID?

Per forza devono usare un pid, se non algoritmi ancora più complessi, in fin dei conti è un dispositivo che controlla la posizione di un asse in base ad un segnale di riferimento.
Tieni presente che il pid è stato descritto come tale, anche se ancora non si chiamava così, già nel 1788 da Matthew Boulton in una lettera indirizzata a James Watt dove gli descriveva come realizzare un sistema di controllo automatico della velocità per i motori a vapore, due sfere meccaniche poste all'estremità di bracci mobili, rotanti, collegati all'asse motore.
Il pid, nel corso della storia, è stato implementato sia come dispositivo puramente meccanico che come dispositivo elettronico, i primi erano analogici poi si è arrivati a quelli digitali.
Dei servo RC non è disponibile alcun schema, salvo quello di un vecchio modello che non dice nulla in quanto utilizza un ic custom che fa tutto lui, in compenso puoi consultare il progetto openservo dove hanno realizzato una schedina da inserire nei servo analogici, al posto di quella originale, per trasformarli in digitali, si basa su un ATmega 168 (no Arduino), il software è scritto in C ANSI.

Quindi? mi consigliate di passare ad un altro tipo di servo?

dedracing:
Quindi? mi consigliate di passare ad un altro tipo di servo?

Dipende da quello che devi fare, se necessiti del controllo posizione devi usare un normale servo non modificato, se necessiti dell'equivalente di un motoriduttore (rotazione continua) completo di ponte H e un minimo, molto minimo, controllo sulla velocità di rotazione va bene il servo modificato.

si mi serve farlo posizionare su delle posizioni in gradi circa 10° negativi e positivi

questo come ti sembra?

Servomotore SG92R Tower Pro
KIT Servomotore analogico per modellismo Tower Pro SG92R.
Cablaggio:
Rosso: Positivo Batteria
Marrone: Negativo Batteria
Arancio: Segnale.
Per controllare il motore con Arduino, si suggerisce di connettere il cavo di segnale arancione ai pin 9 o 10 della scheda ed usare la libreria Servo inclusa nell’IDE di Arduino.
Posizione "0" (impulso 1.5ms) è nel mezzo, posizione "90" (impulso ~2ms ) tutto a destra, posizione "-90" (impulso ~1ms) tutto a sinistra.

Specifiche Tecniche:
Tipo SG92R Tower Pro
Peso 9g
Dimensione 23 * 12.2 * 27 millimetri
Coppia di stallo 2.5kg/cm (4.8V)
Velocità 0.1sec/60° operativa (4.8V)
Tensione di funzionamento 4.8V
Campo di temperatura 0 ? _ 55 °C
Larghezza di banda 10us

dedracing:
si mi serve farlo posizionare su delle posizioni in gradi circa 10° negativi e positivi

Allora devi usare un normale servo RC, attenzione che la rotazione massima è +/-90° (totale 180°), esistono alcuni servo digitali per robotica che arrivano fino a 300°.

questo come ti sembra?

E' la solita cinesata, se ti va bene dipende dall'applicazione, è un micro servo pertanto dispone di poca coppia.

astrobeed:

dedracing:
si mi serve farlo posizionare su delle posizioni in gradi circa 10° negativi e positivi

Allora devi usare un normale servo RC, attenzione che la rotazione massima è +/-90° (totale 180°), esistono alcuni servo digitali per robotica che arrivano fino a 300°.

questo come ti sembra?

E' la solita cinesata, se ti va bene dipende dall'applicazione, è un micro servo pertanto dispone di poca coppia.

Che tipo mi consiglieresti allora, dove posso trovarlo

dedracing:
Che tipo mi consiglieresti allora, dove posso trovarlo

Senza sapere cosa devi farci, carico meccanico, etc, è impossibile dirti quale servo prendere.

astrobeed:

dedracing:
Che tipo mi consiglieresti allora, dove posso trovarlo

Senza sapere cosa devi farci, carico meccanico, etc, è impossibile dirti quale servo prendere.

Devo far ruotare un braccio orizzontalmente dal peso di circa 2 Kg, ovviamente il servo lo monto in maniera da non supportare il peso del braccio ma solo per il movimento, il braccio è auto portante.

dedracing:
Devo far ruotare un braccio orizzontalmente dal peso di circa 2 Kg, ovviamente il servo lo monto in maniera da non supportare il peso del braccio ma solo per il movimento, il braccio è auto portante.

Che intendi con autoportante ? Hai un disegno dell'assemblaggio meccanico ?
Questo braccio si deve muovere solo occasionalmente per brevi periodi (pochi minuti) oppure lavora per lunghi periodi ?

astrobeed:

dedracing:
Devo far ruotare un braccio orizzontalmente dal peso di circa 2 Kg, ovviamente il servo lo monto in maniera da non supportare il peso del braccio ma solo per il movimento, il braccio è auto portante.

Che intendi con autoportante ? Hai un disegno dell'assemblaggio meccanico ?
Questo braccio si deve muovere solo occasionalmente per brevi periodi (pochi minuti) oppure lavora per lunghi periodi ?

per autoportante intendo che il peso non grava sul servo, ancora non ho un disegno, è solo un'idea che in qualche modo credo di riuscire a realizzare, in sostanza devo comandare uno scudo di protezione in una mini turbina eolica, il braccio si deve muovere per parare il vento se troppo forte, quindi penso che non deve fare molti cicli in 24 ore, l'utilizzo è nell'ordine dei 10° aperto chiuso....