Encuentra informaci贸n referente a la programaci贸n, electr贸nica y mucho m谩s, la p谩gina est谩 pensada para compartir contenido educativo relevante coadyuvando a su aprendizaje diario.
Controlar servomotor con Arduino

Controlar un servomotor es muy sencillo, con la ayuda de Arduino, ya que este posee una librer铆a llamada <Servo.h>, con la cual podemos realizar proyectos como brazos rob贸ticos, dom贸tica, sistemas automatizados, etc.

驴Qu茅 es un servomotor?

Es un motor de corriente continua que en su interior tiene una caja reductora y su respectivo controlador electr贸nico que nos permite trabajar con una precisi贸n en grados, su rango en grados puede ser de 180 贸 360, esto depende del servomotor que usemos.

驴C贸mo funciona un servomotor?

Estos servomotores funcionan con se帽ales PWM, y as铆 variar la posici贸n del eje del servomotor modificando el duty.

Su ciclo de trabajo de estos servomotores es de 0.5 ms a 2.5 ms, si configuramos el servomotor a 0.5 ms se posicionara a 0 grados y 2.5 ms estar谩 a 180 grados, y la divisi贸n de la diferencia entre estos n煤meros representara el restos de los valores en grados que el servomotor puede trabajar, estos datos no es el mismo para todos, suele variar seg煤n el fabricante.

ciclo de trabajo de un servomotor

Conexi贸n de un servomotor

Un servomotor presenta tres cables, la principal es para recibir la se帽al PWM, los colores de los cables cambian seg煤n el fabricante, pero normalmente el cable de la se帽al PWM es de color amarillo, naranja o blanco, los otros dos cables son de alimentaci贸n.

Librer铆a servo de Arduino

Esta libreria de Arduino puede controlar 12 servomotores en Arduino Uno

Arduino Mega puede controlar hasta 48 servomotores, pero debemos contar con una fuente de alimentaci贸n externa para los servomotores.

La libreria <servo.h> hace uso del timer 2 de 16 bits lo que quiere decir que no podemos realizar ninguna operaci贸n con este Timer.

Para usar esta librer铆a debemos incluir la siguiente instrucci贸n

#include <Servo.h>

Cuando a帽adimos la librer铆a 鈥渟ervo鈥 de Arduino, reci茅n haremos uso de todas las funciones disponibles en esta librer铆a.

Funciones de la librer铆a servo

Para utilizar estas funciones previamente debemos declarar un objeto del tipo servo.

Servo servo1;

Con estas funciones podremos realizar pr谩cticamente cualquier proyecto con Arduino que incluya el manejo de servomotores.

servo1.attach()

Esta funci贸n nos permite declarar el pin que vamos a utilizar para hacer la conexi贸n del servomotor,en muchos casos es necesario calibrar el siclo de trabajo esta funci贸n nos permite opcionalmente hacerlo como un par谩metro.

Esta funci贸n puede tener uno o tres par谩metros, el primer par谩metro se usa para declarar el pin que vamos a usar, el segundo y tercer par谩metro es el duty m铆nimo y m谩ximo soportado por el servomotor.

Estos datos se la mide en microsegundos y la podemos obtener en la hoja de datos de nuestro servomotor, estos datos son necesarios para calibrar de manera correcta nuestro servomotor, si no se declara el ancho de pulso m铆nimo sera 544 que ser谩 usada para obtener 0 grados y 2400聽 como ancho de pulso m谩ximo para obtener los 180 grados.

servo1.attach(pin, m铆nimo, m谩ximo);
servo1.attach(9, 600, 2300);

servo1.write()

Esta funci贸n solo tiene un par谩metro y se la usa para declarar el 谩ngulo al cual queremos posicionar el eje del servomotor en Arduino.

servo1.write(90);

servo1.writeMicroseconds()

Esta funci贸n trabaja con los microsegundos para determinar los grados del servomotor, estos datos se obtiene de la hoja de datos del servomotor, por ejemplo si el servomotor trabaja de 1000 a 2000 microsegundos, 1000 representara a 0 grados, 1500 representara a 90 grados y 2000 representara a 180 grados.

servo1.writeMicroseconds(1500);

servo1.read()

Como dice su nombre nos permite leer el 谩ngulo actual del eje del servomotor.

servo1.read();

servo1. attached()

Gracias a esta funci贸n podemos verificar si el pin est谩 declarado para enviar la se帽al al servomotor, y as铆 podemos realizar alguna tarea extra en caso de que no est茅 declarado el pin, nos retorna dato booleana, donde 鈥true鈥 quiere decir que est谩 declarado el pin y 鈥渇alse鈥 en caso de no estar declarado.

servo1.attached();

servo1.detach()

Desvincula el pin asignado para enviar la se帽al al servomotor.

servo1.detach();

Control de dos servomotores con Arduino

Este ejemplo muestra como controlar un servomotor mediante un potenciometro y otro con dos pulsadores para cambiar los grados del eje del servomotor.

Materiales

  • Arduino Uno o equivalente
  • 2 servomotores
  • 2 resistores de 10 k惟
  • Potenciometro de 10 K惟
  • Cables lo necesario.

Circuito del proyecto

servomotor con arduino

C贸digo fuente para manipular dos servomotores con Arduino

/* AUTOR: CREATIVIDAD CODIFICADA
 *  www.creatividadcodificada.com
 *  NOMBRE DEL PROYECTO: Manejo de dos servomotres SG90 
 *  con Arduino
 *    
*/ 
#include <Servo.h>
Servo servo1, servo2;
int gradosBoton = 90;
int pinPoten = 0;
int leerPoten;
int gradosPoten;

void setup() {
 //  Enviamos las se帽ales a los servomotores por los pines 9 y 10
 // y los calibramos 
 servo1.attach(9,720,2250);
 servo2.attach(10,720,2250);
 // Configuramos los pines 4 y 5 como entradas 
 pinMode(4,INPUT);
 pinMode(5,INPUT);
}

void loop() {
  // Hacemos dos controles para saber cuando se acciona el pulsador 
  // y aumentar o reducir los grados del eje del servomotor  
 if(digitalRead(4) == HIGH)
  {
    gradosBoton++;
    if(gradosBoton>=180) gradosBoton = 180;
    servo1.write(gradosBoton);
    
  }
   
  if(digitalRead(5) == HIGH)
  {
    gradosBoton--;
    if(gradosBoton<=0) gradosBoton = 0;
    servo1.write(gradosBoton);
    
  }

  // Leemos la se帽al analogica del potenciometro 
  // y hacemos un mapeo para tener datos de 0 a 180  
  leerPoten = analogRead(pinPoten);
  gradosPoten = map(leerPoten, 0, 1023, 0, 180);
  servo2.write(gradosPoten);
  delay(60); 

  }
void sumarGrados()
{
  gradosBoton++;
  if(gradosBoton>=180)
  {
    gradosBoton=180;
    }
  }
void restarGrados()
{
  gradosBoton--;
  if(gradosBoton<=0)
  {
    gradosBoton=0;
    }
  }

1 comentario sobre: “Controlar servomotor con Arduino

驴Que te parecio el art铆culo?

Su direcci贸n de email no sera publicado. Los campos obligatorios est谩n marcados con *.

驴Qu茅 hacemos con tus datos?

Creatividad Codificada como responsable tratar谩 tus datos con la finalidad de gestionar tu participaci贸n en nuestro blog informativo. Puedes acceder, rectificar y suprimir tus datos, as铆 como ejercer otros derechos consultando la informaci贸n adicional y detallada sobre protecci贸n de datos en nuestra Pol铆tica de Privacidad