Skip to content

Servo de rotación continua FS90R

javierre edited this page May 16, 2019 · 10 revisions

Servo de rotación continua FS90R

fs90r

Si consultamos la librería servo, vemos que:

servo.write() allows a maximum of 180 servo positions (0->180)

servo.writeMicroseconds() allows a maximum of 1000 servo positions (1000->2000)

Ambas se pueden usar para controlar un servo de rotación continua, aunque si usamos writeMicroseconds tenemos mayor nivel de precisión a la hora de establecer la velocidad del motor. Para ello debemos saber que las velocidades varían entre writeMicroseconds(1000) y writeMicroseconds(2000), siendo 1500 el punto en el que el motor se para y los valores superiores lo hacen girar en sentido antihorario y los inferiores en sentido horario.

Hay que tener en cuenta que los motores no son perfectos y que, por tanto, puede ser que el valor de parada on sea 1500 y que sea algún valor cercano, como 1450. En este caso habrá que añadir un offset a los valores que se pasen al motor, es decir, habría que restar 50 a los valores transmitidos.

Velocidad Sentido de giro Imagen
1500 Parado fs90rantihorario
>1500 Antihorario fs90rantihorario
<1500 Horario fs90rhorario

Wiring


#include <Servo.h>
Servo servo1;
 
void setup() { 
  Serial.begin(9600);
  servo1.attach(D6);
  servo1.writeMicroseconds(1500);  // Stop 
} 

void loop() { 
  Serial.println("Moving Clockwise");
  servo1.write(1700); //C-Clockwise - Antihorario
  delay(1000);
    Serial.println("Stop");
  servo1.write(1500); //Stop
  delay(2000);
} 

Código de ejemplo

Clone this wiki locally