Go Down

Topic: Continuous servo - writeMicroseconds() vs write() (Read 850 times) previous topic - next topic

GigiG

ciao a tutti,
ho uno SpringRc SM-S4315R a rotazione continua, per un progetto di testa panoramica motorizzata. Ho fatto una ricerca nel web su come pilotarlo ma non mi è chiaro quale dei due metodi citati nel subject sia il più indicato o se sono equivalenti (a parte i valori da assegnare ai comandi, ovviamente). Inoltre, nel caso di writeMicroseconds(), ci sono dei valori massimi in microsecondi oltre i quali si potrebbe eventualmente danneggiare il servo? (1000-2000, 1300-1700 ..., non ho trovato valori limite per il mio servo sul web). In ultimo, per effettuare il ramping (accelerazione/decelerazione) è corretto utilizzare codice tipo:

  for(int speed = 100; speed >= 0; speed -= 2)
  {
    servoLeft.writeMicroseconds(1500+speed);   
    servoRight.writeMicroseconds(1500-speed); 
    delay(20);                                 
  }

Gigi

lesto

non esistono dei valori standard, devi cercarteli a mano.

per il ramping mi pare corretto. Usa la wrireMicroseconds che è più precisa della write (che in realtà trasforma il valore 0-255 in writeMicrosecods
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

uwefed

Non ci sono valori che danneggiano il Servo. normalmente 1000 e 2000 sono i valori estremi ( 0 e 180) ma alcuni modelli di Servo si posizionano a dei angoli maggiori con pilotaggio sotto /sopra 1000/2000.
writeMicroseconds() e write() sono equivalenti dai solo dei valori diversi come posizione (durata impulso in microsecondi o angolo in gradi)

Code: [Select]
for(int speed = 100; speed >= 0; speed -= 2)
  {
    servoLeft.writeMicroseconds(1500+speed);   
    servoRight.writeMicroseconds(1500-speed);
    delay(20);                                 
  }


Direi che la pausa é troppo corta per avere un movimento dato dal pilotaggio e non dalla velocitá di movimento del motore.


Ciao Uwe

GigiG

Ho ripreso il progetto della testa panoramica dopo lunga pausa ...
ho fatto delle prove con i miei SpringRc SM-S4315R a rotazione continua e ho notato che la velocità di rotazione CCW è diversa da quella CW, a parità di variazione dei microsecondi (myServo.writeMicroseconds(1500+vel)). Cioè, ottengo la stessa velocità di rotazione (ad esempio, circa 1 giro completo in un secondo) con un valore di 1600 us in rotazione oraria e 1370 us in rotazione antioraria, a fronte di una posizione di stop di 1500 us, mentre in teoria dovrei ottenere la stessa velocità a 1600 e 1400 us ...
E' un problema del servo?
Di questi SpringRc in realtà ne ho due ma non ho ancora provato come si comporta il secondo ...
Gigi

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy