bclose

Control de un brazo robótico de dos ejes con un joystick

Controlar dos servos con un joystick

Objetivos

 

 

    • Aprender a crear varios objetos tipo servo.
    • Utilizar un josytick para controlar dos servos.
    • Aprender a controlar el brazo robótico de dos ejes.

 

Material requerido.

Imagen de Arduino UNO

Arduino Uno o compatible. Para está sesión sirve cualquier otro modelo.

Protoboardconexiones Una Protoboard y algunos  cables.
componenteUn Joystick.
mainUn soporte servo pan & tilt.
servos sg90Dos servos con sus horns, esas pequeñas piezas de plástico que se ponen en el eje.

INTRODUCCIÓN Y MONTAJE

 

Si ya habéis montado la estructura sabréis que para poder mover el brazo robótico vamos a utilizar dos servos. Uno se encargará del movimiento en el eje X (horizontal) y el otro en el eje Y (vertical).

Ya hemos trabajado con servos anteriormente, así que realmente no vamos a aprender nada nuevo. La única novedad que vamos a introducir es que vamos a controlar a la vez dos servos, y hasta ahora habíamos controlado sólo uno, ya sea con un potenciómetro o un joystick.

En este caso vamos a usar un joystick, porque como sabéis tiene dos ejes de movimiento, que nos viene perfecto para controlar los dos servos. Si no lo habéis seguido este cuso regularmente  (o tenéis un poco olvidados esos temas) os recomendamos que echéis un ojo a estas sesiones, en las que hablábamos de los joysticks, los servos y, por supuesto, de cómo montar el soporte del brazo robótico de dos ejes:

 

El esquema de conexión y el montaje en la protoboard quedarían tal que así:

diagrama electrónico joystick servos conexiones joystick servos

 

PROGRAMA DE CONTROL

 

El programa también va a ser básicamente el mismo que utilizamos en la sesión de la que hablamos, pero teniendo todo por duplicado.

Lo primero es incluir la librería y crear los objetos tipo servo, que en este caso serán dos. Además crearemos una variable “angulo” para cada servo para guardar su posición, y una variable “salto”, con la que fijaremos el número de grados que se moverá en cada loop cuando estemos moviendo el joystick.

#include <Servo.h> // Incluir la librería Servo
Servo servo1; // Crear un objeto tipo Servo llamado servo1
Servo servo2; // Crear un objeto tipo Servo llamado servo2
int anguloX = 90 ; // Empezamos en el centro
int anguloY = 90 ;
int salto = 3 ; // Controla el salto por movimiento

Ya en el setup especificaremos a qué pin está conectado cada servo (recordad que tiene que ser PWM).

void setup()
{
 servo1.attach(7) ; // Conectar servo1 al pin 7
 servo2.attach(8) ; // Conectar servo1 al pin 8
}

Y en el loop lo que hacemos es comprobar si el joystick se ha movido en alguno de los ejes, y en caso de que lo haya hecho, sumar o restar la cantidad de grados definida en variable “salto” a la posición de los servos que correspondan.

void loop()
{
 //EJE X
 int p = analogRead(A0);
 if ( p < 400 ) // Si la lectura es menor de 400
 anguloX = anguloX - salto ; // disminuimos el angulo
 else if (p > 600) // Si mayor de 600
 anguloX = anguloX + salto ; // Aumentamos el angulo
 servo1.write(anguloX); // Y este es el que mueve el servo 1
 delay (50); // Este delay regula la velocidad del movimiento

 //EJE Y
 int q = analogRead(A1);
 if ( q < 400 ) // Si la lectura es menor de 400
 anguloY = anguloY - salto ; // disminuimos el angulo
 else if (q > 600) // Si mayor de 600
 anguloY = anguloY + salto ; // Aumentamos el angulo
 servo2.write(anguloY); // Y este es el que mueve el servo 2
 delay (50); // Este delay regula la velocidad del movimiento
}

Podéis descargar el programa completo aquí: brazo_robot_con_joystickY os dejamos un vídeo con el resultado:

 

Resumen de la sesión

 

 

En esta sesión hemos aprendido varias cosas importantes:

    • Hemos aprendido a controlar varios servos a la vez.
    • Utilizamos ambos ejes de un joystick para ello.
    • Hemos visto cómo funciona el brazo robótico de dos ejes.