Control de servomotor
- publicado por Ing. Jesús Martínez
- Fecha junio 24, 2023
Contenido:
Introducción:
Los servomotores son componentes ampliamente utilizados en proyectos de electrónica y robótica. Estos dispositivos permiten controlar la posición y el movimiento de objetos físicos con precisión. Cuando se combinan con Arduino, se abre un mundo de posibilidades para crear proyectos interactivos y autónomos.
En este tutorial, exploraremos el uso de servomotores con Arduino y cómo podemos controlarlos para lograr movimientos específicos. Aprenderemos cómo conectar un servomotor a una placa Arduino y cómo controlar su posición utilizando señales PWM acorde a la posición de un potenciómetro.
Recuerda que el diagrama de esta práctica se encuentra al final de la misma acompañado de una simulación en la cual podrás ver su funcionamiento.
Material:
- Arduino Uno
- Protoboard
- Potenciómetro 10k
- Servomotor sg90
Desarrollo del código:
Para esta práctica utilizaremos la librería Servo.h
, con la cual Arduino nos facilita la instanciación de objetos tipo Servo
, así que comencemos por importarla en el codigo.
#include <Servo.h>
Para no tener la definición de los pines en duro en el código, declararemos una constante, esta contante almacenará la posición del Pin en el GPIO de Arduino.
const int pot = A0;
También debemos declarar una variable, esta variable deberá ser tipo entero y nos servirá para almacenar el valor del ángulo que le pasaremos a nuestro servomotor.
int angulo = 0;
Ahora si, pasemos a lo que vinimos, toca instanciar el objeto del tipo Servo
, es decir qué reservaremos un espacio de memoria para almacenar datos y funciones que tengan que ver con el servomotor.
Servo servoMotor;
Una vez que ha sido creada nuestra instancia, podremos acceder a los metodos que la librería Servo.h
nos brinda, esto utilizando su instancia a la cual le hemos llamado servoMotor
.
Lo que realizaremos primero es declarar en que pin conectaremos nuestro servomotor, en este caso utilizaremos el Pin 3 ya que es uno de los que cuenta con capacidad PWM. Para esto haremos uso del método attach()
. Este método establece e inicializa la comunicación entre el objeto servoMotor y el pin que le estamos especificando, en este caso el 3
. Es importante mencionar, que esta llamada al método debe de ir colocada dentro del void setup()
, ya que estamos asignando una configuración inicial. Es importante saber que si agregamos esta llamada de método en la sección de declaración de variables, el IDE no nos dejará compilar, caso contrario si lo agregamos en el void loop()
. Pero el agregarlo en el void loop()
en lugar de en el void setup()
nos generaría llamadas constantes a dicho método, lo que no sería nada bueno para la memoria ni para el rendimiento de nuestro programa, así que agrégalo siempre en el void setup()
, que es la sección diseñada para esto y solo se ejecuta una vez al inicio del programa.
void setup() {
servoMotor.attach(3);
}
Toca el turno de programar toda la sección operativa, es decir lo que genera la magia del movimiento del servomotor. Para esto tomaremos las lecturas que está tomando el pin analógico y que van de 0 a 1023, y las mapearemos para convertirlas en un rango de 0 a 180, esto debido a que el método write()
de Servo solo admite este rango de valores para colocar el eje del servo en el ángulo deseado.
void loop() {
angulo = map(analogRead(pot),0,1024,0,180);
}
Una vez realizada esta lectura y conversión, pasaremos el valor de ángulo que resulta de la lectura del potenciómetro al método write()
.
void loop() {
angulo = map(analogRead(pot),0,1024,0,180);
servoMotor.write(angulo);
}
Dándonos como resultado
#include <Servo.h>
const int pot = A0;
int angulo = 0;
Servo servoMotor;
void setup() {
servoMotor.attach(3);
}
void loop() {
angulo = map(analogRead(pot),0,1024,0,180);
servoMotor.write(angulo);
}
Listo, podemos proceder a compilar y ejecutar el código.
Resultados:
Sin duda ha sido una práctica sencilla, pero muy interesante ya que, tomándola como principio y realizando algunas modificaciones puedes implementarla en distintos proyectos. Por ejemplo, puedes tomar 5 servomotores y 5 potenciómetros y realizar una mano animatrónica, o tomar algunas fotorresistencias, 2 servomotores y una mini celda solar y construir un seguidor de luz.
Sin duda el implementar el servomotor en distintos proyectos suma nuevas funcionalidades y características al mismo. Lo mejor de todo es que su aplicación es sumamente sencilla, solo recuerda que, si vas a conectar más de un servomotor sg90, es recomendable contar con una fuente de alimentación externa.
Bueno, sin más, te dejo el diagrama y simulación. Compártenos tus proyectos en los comentarios.
Etiqueta:Arduino
Soy un apasionado por la innovación tecnológica, el desarrollo y el emprendimiento. Durante mi educación superior me enfoqué en la programación de software para visión artificial e inteligencia artificial. Poco después al graduarme tuve la oportunidad de aplicar estos conocimientos en el desarrollo de soluciones para empresas como General Motors, Ford, Harley-Davidson, Mack, Tesla y unas cuantas empresas más del ramo automotriz.