Servomotor SG90 controlado mediante Arduino

Servomotor SG90 controlado mediante Arduino

Servomotor SG90 controlado mediante Arduino

 

Introducción

En el siguiente tutorial se mostrará como utilizar Arduino para hacer funcionar un Servomotor de 180°, el cuál es el más utilizado, se enseñarán las conexiones y el código para llevar a cabo este proyecto, este funcionamiento también es aplicable con modelos como los MG90, MG995 y MG996.

 

Elementos utilizados

 Arduino UNO y cable (USB del PC al puerto de Arduino)
– Servomotor 180° no continuo
Cables Macho Macho

 

Conexión de Servomotor a Arduino

Señal PWM de Arduino para el Servomotor

La modulación por ancho o de pulso (en inglés Pulse Width Modulation PWM) es un tipo de señal de voltaje utilizada para enviar información o para modificar la cantidad de energía que se envía a una carga.

La Señal PWM determina la posición del servo motor, y esta posición se determina por el promedio entre el estado alto (5V) y bajo (0V) de la señal PWM.

A continuación, se muestran los pines PWM en Arduino Uno:

Estos pueden identificarse con «~» al costado izquierdo

  1. Pin 3 (~3)
  2. Pin 5 (~5)
  3. Pin 6 (~6)
  4. Pin 9 (~9)
  5. Pin 10 (~10)
  6. Pin 11 (~11)
Estos pines son capaces de generar señales PWM utilizando las funciones de Arduino. La función analogWrite(pin, valor) se utiliza para generar una señal PWM en un pin específico, donde pin es el número del pin PWM y valor es un valor entre 0 y 255 que determina el ciclo de trabajo de la señal PWM. El valor entre 0 y 255 es la representación binaria de 8 bits ya que Arduino UNO utiliza un convertidor analógico a digital de 10 bits para proporcionar una resolución de 1024 valores distintos (2^10). Sin embargo, para funciones como analogWrite, se utilizan solo 8 bits.
En 180° la posición del Servomotor, al medir Voltaje con un Multitester, este mostró un valor de 0.67V ya que siempre da un valor fijo, que es el Voltaje promedio (Vprom) de la señal PWM

Diagrama de tiempo de señal PWM n Arduino para Servomotor

 

Conexionado de Servomotor a Arduino

– Pin «Power» de Servomotor (Rojo) a 5V de Arduino
– Pin «Ground» de Servomotor (Café) a GND de Arduino
– Pin «Signal» del Servomotor (Naranja) a Pin 9 de Arduino
Servomotor SG90 controlado mediante ArduinoServomotor SG90 controlado mediante Arduino

 

Código:

A partir del siguiente código se podrá comprobar el funcionamiento del circuito:

Código, explicación por partes:

#include <Servo.h>

  • Esta línea incluye la biblioteca Servo, que proporciona funciones para controlar servomotores en placas Arduino.
int ServoPin = 9;
int ServoPos = 0;

–  Aquí se declaran dos variables:

  • ServoPin: Representa el número del pin al que está conectado el servomotor. En este caso, se ha asignado el 9.
  • ServoPos: Almacena la posición actual del servomotor. Inicialmente, se establece en 0.

Servo XServo;

  • Se crea un objeto XServo de la clase Servo para interactuar con el servomotor.

void setup() {
XServo.attach(ServoPin);
}

  • La función setup() se ejecuta una vez al inicio del programa. Aquí, se adjunta el objeto XServo al pin especificado (ServoPin), estableciendo la conexión entre el programa y el servo motor.

void loop() {
XServo.write(ServoPos);
delay(100);
}

–  La función loop() se ejecuta continuamente después de setup(). En este bucle:

  • XServo.write(ServoPos): Establece la posición del servo motor según el valor almacenado en ServoPos.
  • delay(100): Introduce un retardo de 100 milisegundos.

 

 

En el siguiente video se mostrará el código de Arduino junto con el circuito y Servomotor en funcionamiento:

 

 

Conclusión:

En conclusión, el tutorial detalla de manera clara y accesible el uso de Arduino para controlar un Servomotor de 180° mediante modulación por ancho de pulso (PWM). La explicación de conexiones físicas y el código simple con la biblioteca Servo hacen que sea una guía práctica para la implementación exitosa de proyectos de control de servomotores con Arduino.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *