Servomotor con Arduino

Los servomotores se utilizan ampliamente en robots como brazos y piernas de robots. Básicamente, un servomotor puede operar hasta un ángulo de 180 grados solamente. No girará a toda velocidad como un motor de CC.

Un servomotor se puede controlar por grados como 90 grados, 180 grados y 45 grados. Utiliza señales PWM para controlar el ángulo del servo. Por lo tanto, necesitamos usar un servomotor en cualquiera de los pines PWM.

Dependiendo de la capacidad de elevación, los servomotores se pueden utilizar en diferentes aplicaciones, como robótica, seguimiento solar, apertura automática de puertas y robots de detección de obstáculos.

Usaremos la biblioteca Servo.h para usar nuestro servomotor. El servo que vamos a utilizar es SG90 Servo.

Diagrama de circuito:

Código:

#include <Servo.h>  Servo myservo;    // create servo object to control a servo  int pos = 0;    // variable to store the servo position    void setup() {    myservo.attach(9);  // attaches the servo on pin 9 to the servo object  }  void loop() {    for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees      // in steps of 1 degree      myservo.write(pos);              // tell servo to go to position in variable 'pos'      delay(15);                       // waits 15ms for the servo to reach the position    }    for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees      myservo.write(pos);              // tell servo to go to position in variable 'pos'      delay(15);                       // waits 15ms for the servo to reach the position    }  }  

En el programa anterior, utilizamos la biblioteca Servo.h, que se incluye en el propio IDE de Arduino. El Servo myservo() es el objeto para usar muchos servos usando las mismas funciones. Puede crear más de 1 objeto servo para usar en el programa. Necesitamos una variable para almacenar la posición del servo. Para esto usamos ‘pos’

int pos = 0;

Para adjuntar el servo usamos la función myservo.attach(). Aquí adjuntamos el servo en el pin 9. Entonces, el parámetro de esta función será

myservo.attach(9);

Usando un ‘bucle for’ giramos el servo a 180 grados paso a paso usando la función servo.write(). De manera similar, en el siguiente ciclo for, giramos el servo a 0 grados. Esto sucederá continuamente porque el código está en el ciclo principal.

myservo.write(pos);

Aquí creamos el objeto ‘myservo’. Así que usamos ‘myservo’. Si lo nombró por el servo diferente, puede usar ese nombre.

Si desea mover el servo a un ángulo particular, puede mencionar el ángulo directamente dentro de la función,

Ejemplo:

myservo.wriite(90);