Cómo conectar un servo MG995 o SG5010 (posición 180 grados) a Arduino

En este pequeño tutorial veremos cómo conectar un servo MG995 o SG5010 de posición con rango de 180 grados a una tarjeta Arduino, también encontrarás un código de programación para tus primeras pruebas.

Los servomotores son dispositivos electromecánicos que tienen la capacidad de controlar la posición angular de su eje, su funcionamiento consiste en recibir la información del ángulo deseado a través del ancho de pulso de una señal PWM para llevar al eje a dicha posición, por lo regular constan de un motor de corriente directa, un tren de engranes reductores y una tarjeta de control, todo contenido en una caja de plástico.

Este ejemplo está pensado para los servos MG995 y SG5010 pero es posible que funcione para muchos modelos más y para implementar la señal de control utilizaremos la biblioteca <Servo.h>. Cabe mencionar que este servomotor NO se puede alimentar directamente del Pin 5V en nuestra tarjeta Arduino Uno ya que demanda demasiada corriente, recomendamos siempre utilizar una fuente externa.

Componentes Necesarios

  • Micro servo MG995 o SG5010
  • Arduino Uno
  • Potenciómetro 10 kohms
  • Protoboard chica
  • Cables de conexión M-M
  • Jack de 2.1mm Terminal de Barril a Terminal de Tornillo
  • Eliminador 5V, mínimo 1A – Terminal de Barril 2.1mm

Diagrama de Conexiones

Arduino Uno – Potenciometro – Micro Servo MG995 o SG50100 – Protoboard

Código de Arduino

Cargamos el código y observamos como podemos controlar la posición angular del eje del motor con el potenciómetro.


//*
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Servo.h>

Servo myservo;  // Creamos un objeto de clase "Servo" llamado "myservo" para controlar nuestro servomotor

int potpin = 0;  // Pin analógico al cual conectamos la señal de nuestro potenciómetro
int val;    // variable que contendrá el valor leido en el pin del potenciómetro y posteriormente el valor que escribiremos al servomotor

void setup() {
  myservo.attach(9);  // Adjuntamos el objetoque creamos al pin 9, recuerda que solo puedes utilizar pines PWM
}

void loop() {
  val = analogRead(potpin);            // leemos el valor del potenciómetro (valor entre 0 y 1023)
  val = map(val, 0, 1023, 0, 180);     // escalamos el valor para usarlo con el servo (valor entre 0 y 180)
  myservo.write(val);                  // establecemos la posición deseada del servo
  delay(15);                           // esperamos a que el servo llegue a dicha posición
}

¡Sigue explorando!