X

Al usar esta página web, aceptas nuestro uso de cookies. Usamos cookies para ofrecerte una mejor experiencia y para ayudar a que tu página funcione de manera efectiva.

A5A4A3A2A1A0VINGNDGND5V3V3RESETIOREFRX0 0TX0 12- 34- 5- 678- 9- 10- 111213GNDAREF R (10kΩ) D0/RXD1/TXD2D3 PWMD4D5 PWMD6 PWMD7D8D9 PWMD10 PWM/SSD11 PWM/MOSID12/MISOD13/SCKRESETRESET2AREFiorefA0A1A2A3A4/SDAA5/SCLN/CGND3V35VVINArduino Uno(Rev3)
MecatrónicaLATAM

ARDUINO SERVOMOTOR

En esta práctica se enseña a usar el servomotor con la librería que ya incluye el software de Arduino, el servomotor que se usará será un SG90, este servomotor es de 180°, además de que esto es la base para poder crear proyectos más avanzados.

Existe una gran variedad de servomotores en el mercado, éstos tienen una característica principal que es la capacidad de controlar con precisión la posición de su eje.

Nota: Es muy importante considerar el voltaje de alimentación del servomotor, así como la corriente de funcionamiento y la corriente de pérdida.


SERVOMOTOR CON ARDUINO

Para la programación y control de un servomotor tenemos 2 alternativas simples, una de ellas consiste en utilizar la librería llamada “servo.h” y otra consiste en utilizar una función.

Utilizando la librería

Para utilizar la librería incluida en Arduino se necesita:

  • Se debe incluir la librería, por lo tanto, es necesario escribir en la parte superior del sketch: #include <Servo.h>
  • Declarar el servomotor con: Servo Nombre_del_servo;
  • En setup declarar el pin del servo: Nombre_del_servo.attach(pin);
  • Para escribir en el servo se usa: Nombre_del_servo.write(angulo);

Utilizando una función

  • void moverServo(int pin, int angulo)
  • {
    • float pausa;
    • pausa = angulo * 2000.0/180.0+500;
    • digitalWrite(pin,HIGH);
    • delayMicroseconds(pausa);
    • digitalWrite(pin,LOW);
    • delayMicroseconds(25000-pausa);
    }


CONTROL DE UN SERVOMOTOR CON POTENCIÓMETRO Y ARDUINO

En este caso se hace el control de un servomotor mediante un potenciómetro.

MATERIAL
  • 1x Arduino.
  • 1x Servomotor (SG90).
  • 1x Protoboard.
  • 1x Potenciómetro (10kΩ).

Esquema de montaje

El servomotor dispone de tres cables, dos cables de alimentación (GND y Vcc) y un cable para la señal (Sig).

Como se muestra en el esquema de conexión, debemos conectar el pin digital de nuestra tarjeta Arduino al servomotor, así como conectar los cables negativo y positivo a la fuente de alimentación. Es importante conectar las tierras en un sólo punto o nodo, ya que si no se conectan las tierras de esta manera podemos generar una tierra flotante.

Circuito esquemático

Código

Como pueden observar el código se inicia llamando la librería del servo usando #include , después se definen los pines a usar; en este caso el potenciómetro y el servo al que se le asigna el nombre de ServoUNO. En el setup se configuran los pines con la función de la librería attach enviándola al nombre del servo, se declara en qué pin está conectado el servo; en este caso en el pin 2 como se ve en el diagrama.

A continuación, usando la función write de la librería Servo y enviándola al nombre del servomotor, le entregamos como parámetro la variable aux, ya que en esa variable se almacenarán los números de 0 a 180, se asigna un delay para que el servomotor no se mueva muy rápido, cuando intente mover el potenciómetro usted notará que el servomotor también se mueve desde 0 a 180°.

Usando el monitor serial podemos ver los valores del potenciómetro y a qué grado se convierte cada valor, como puede ver hemos unido lo visto en sensores analógicos para mover un servomotor, también puede unir lo visto en sensores digitales para mover el servomotor, esto queda como investigación al lector.

  • #include <Servo.h> //Incluimos la libreria servo
  • #define POT A0 //Definimos pines a usar
  • Servo ServoUNO; //Definimos nuestro servo
  • void setup()
  • {
    • Serial.begin(9600);
    • pinMode(POT,INPUT);
    • ServoUNO.attach(2);
    }
  • void loop()
  • {
    • int POT_R = analogRead(POT);
    • int aux = map(POT_R,0,1023,0,180);
    • ServoUNO.write(aux);
    • delay(10);

    • Serial.print("Valor POT: ");
    • Serial.print(POT_R);
    • Serial.print(" | Angulo Servo: ");
    • Serial.println(aux);
    }