DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS Brazo Simple Robot · DESARROLLO DE UN PROYECTO...

14
MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCACIÓN SECUNDARIA OBLIGATORIA Y BACHILLLERATO, FORMACIÓN PROFESIONAL Y ENSEÑANZAS DE IDIOMAS MÓDULO ESPECÍFICO: Tecnología y ciclos formativos del sector industrial MATERIA: Módulo VII: Control y robótica ASIGNATURA: Educación, Tecnología y Sociedad DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS B B r r a a z z o o S S i i m m p p l l e e R R o o b b o o t t Autor/es: Héctor Benéitez Juan Vanesa Fuertes Ibán Manuel Alejandro Silva Rodríguez Victoria Zotes Zapico Profesor/es: Ángela Diez Diez

Transcript of DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS Brazo Simple Robot · DESARROLLO DE UN PROYECTO...

MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCACIÓN SECUNDARIA

OBLIGATORIA Y BACHILLLERATO, FORMACIÓN PROFESIONAL Y ENSEÑANZAS DE IDIOMAS

MÓDULO ESPECÍFICO: Tecnología y ciclos formativos del sector industrial

MATERIA: Módulo VII: Control y robótica

ASIGNATURA: Educación, Tecnología y Sociedad

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS

BBrraazzoo SSiimmppllee RRoobboott

Autor/es: Héctor Benéitez Juan

Vanesa Fuertes Ibán

Manuel Alejandro Silva Rodríguez

Victoria Zotes Zapico

Profesor/es: Ángela Diez Diez

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

HOJA DE FIRMAS:

Fecha de entrega: 26/01/2014

D. Héctor Benéitez Juan

DNI:

Dña. Vanesa Fuertes Ibán

DNI: 717433237K

D. Manuel Alejandro Silva Rodríguez

DNI:10199315B

Dña. Victoria Zotes Zapico

DNI: 71418165Z

CURSO: 2013-2014

TABLA DE CONTENIDO

1 RESUMEN _________________________________________________________________2

2 OBJETIVOS ________________________________________________________________2

3 EQUIPO: REPARTO DE TAREAS ________________________________________________3

4 DESCRIPCIÓN DEL MONTAJE A REALIZAR ________________________________________3

4.1 Pautas de trabajo _____________________________________________________________ 3

4.2 Dispositivos utilizados__________________________________________________________ 3

4.3 Montaje del proyecto __________________________________________________________ 6

4.4 Análisis y realización del código __________________________________________________ 9

4.5 Problemas encontrados y soluciones _____________________________________________ 10

5 RESULTADOS _____________________________________________________________11

6 CONCLUSIONES ___________________________________________________________11

7 BIBLIOGRAFÍA_____________________________________________________________11

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Resumen

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

1 RESUMEN El control automático de procesos industriales o domésticos es fundamental para lograr un aumento en la calidad de vida de la sociedad. Existen diversas técnicas que permiten la implantación de un control automático de un proceso. Una de ellas es el control por tecnología programada, en el cual la inteligencia del sistema de control se basa en la confección de un programa residente en la memoria de la unidad de control (autómatas programables, controladores, robots, etc.). La robotización es una forma de automatización donde las máquinas pueden realizar diferentes acciones según se las programe. En esta práctica vamos a utilizar una plataforma de hardware libre, Arduino, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

Nuestros alumnos viven rodeados de objetos tecnológicos que manejan con una soltura endiablada; son dispositivos con los que interaccionan a través de pulsadores y diferentes sensores de modo que generan efectos en forma de sonidos, luces o movimiento. Suponemos que cualquiera de estos gadgets tiene cierta inteligencia, capacidad de memorizar e incluso pueden detectar lo que sucede a su alrededor. Sin embargo, para la mayoría de nosotros se muestran como objetos dotados de cierta magia y muy pocas personas sabrían explicar de un modo sencillo cómo funcionan.

La interacción de estos dispositivos con variables físicas como luz, temperatura o movimiento sucede a través de sensores cuyas señales deben ser procesadas por nuestro protagonista principal, el microcontrolador, Arduino: chip programable que contiene instrucciones precisas de cuál será la respuesta del dispositivo hacia el mundo físico exterior.

Además, el desarrollo práctico de este tipo de proyectos es un trabajo habitual en el ámbito de la Formación Profesional, en distintas especialidades. Por todo lo anterior, se debe considerar que el formador de este tipo de profesionales debe contar con las capacidades necesarias para el diseño, implementación y desarrollo de sistemas de control automático de procesos.

2 OBJETIVOS Los objetivos fundamentales de este proyecto son:

Realizar el control de un brazo mecánico con movimiento por servomotores mediante una interfaz con el microncontrolador “Arduino”. Se utilizará un joystick que permitirá determinar el movimiento del brazo.

Para ello se debe realizar el código que determine el movimiento del brazo (programa residente en la unidad de control, Arduino)

La máquina podrá realizar diferentes acciones dependiendo del programa realizado.

El brazo utilizado para este proyecto se asemeja a un brazo manipulador a pequeña escala, que al ser analizado, probado y estudiado en su versión más simple, en un futuro y con mejoras podría llegar a ser implementado en la industria.

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Equipo: reparto de tareas

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

3 EQUIPO: REPARTO DE TAREAS El trabajo ha sido dividido por parte iguales a desarrollar por cada miembro del grupo.

Alumno Tareas

Héctor Benéitez Juan

Vanesa Fuertes Ibán

Manuel Alejandro Silva Rodríguez

Victoria Zotes Zapico

Montaje, búsqueda de documentación y elaboración del pseudocódigo.

4 DESCRIPCIÓN DEL MONTAJE A REALIZAR

4.1 Pautas de trabajo

- Organizar el grupo de trabajo y las tareas a desarrollar. - Buscar los dispositivos que vamos a necesitar. - Analizar cada dispositivo de forma independiente. - Buscar documentación en la red. - Analizar y realizar un análisis específico del código. - Montar el proyecto y comprobar su funcionamiento. - Determinar problemas que vamos encontrando y analizar soluciones.

4.2 Dispositivos utilizados

- Arduino: Unidad de control en la que se instalará el pseudocódigo que determinará las acciones a realizar por la máquina. Utilizamos el software suministrado por el fabricante de la controladora en su página web oficial. Desde esta página hemos instalado el programa en el ordenador. Arduino es un producto Open-Source que lleva una placa con procesador totalmente montada y con un bootloader listo para conectar al USB del ordenador. Se programa con un sencillo entorno de desarrollo. Al ser un proyecto abierto hay una gran cantidad de ejemplos y librerías listas para utilizar. Utilizamos Arduino board UNO.

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

- Joystick: Este joystick de dos ejes proporciona dos señales analógicas que reflejan la posición en que se encuentra. Consta de dos potenciómetros, uno por cada eje, que se pueden usar como un doble divisor de tensión ajustable. Ambos potenciómetros se alojan en un mecanismo que permite el retorno a la posición central de reposo de dichos potenciómetros, cuando se dejan de accionar (en reposo). Con el joystick vamos a controlar el movimiento de dos servos, inclinación y giro de la mano, a través de un servo Towerpro MG-955 y otro servo HITEC HS-422, respectivamente.

- Potenciómetro: Constituye la tercera de las señales de entrada analógica. Permite

determinar el movimiento de cierre y apertura de la mano, a través de un servo HITEC HS-422.

- Brazo simple robot: Es el elemento actuador (salida digital). Brazo de 3 articulaciones con un servomotor en cada una de ellas. Tenemos dos servos HITEC HS-422 que regulan la apertura y cierre de la mano y su inclinación respectivamente. El otro servo es un Towerpro MG-955 que regula el giro de la mano. Todos los servos permiten un giro de 180º, aunque el que regula la mano esté limitado por la forma de la misma a una menor amplitud de movimiento.

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

- Servomotor.- Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señal codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones.

Los Servos son sumamente útiles en robótica, ya que no consumen mucha energía. El servomotor tiene 3 cables de conexión externa. Uno es para alimentación Vcc (+5V), conexión a tierra GND y el cable de control. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180 grados. Un servo normal no es mecánicamente capaz de retornar a su lugar, si hay un mayor peso que el sugerido por las especificaciones del fabricante. El eje del servo es capaz de llegar alrededor de los 180 grados. El cable de control se usa para delimitar el ángulo. El ángulo está determinado por la duración de un pulso que se aplica al alambre de control.

- Fuente de alimentación: Los servomotores requieren de alimentación independiente, debido a que necesitan más intensidad de la que es capaz de proporcionar la salida de 5V de Arduino.

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

4.3 Montaje del proyecto

Conexión de los Servomotores a la tarjeta Arduino.

En la siguiente imagen se muestran las conexiones realizadas al microcontrolador Arduino para el control de los servomotores. Sólo se muestran dos servomotores pero la lógica de conexión del tercero es idéntica.

Hemos ido probando los servos de uno en uno. El servomotor tiene 3 cables de conexión externa. Uno es para alimentación Vcc (+5V), conexión a tierra GND y el cable de control que lo conectamos a la salida digital. Hemos utilizado las salidas digitales 9, 10 y 11.

En la conexión típica anterior, para la alimentación de los servos (5V) hemos utilizado la propia del microcontrolador, pero en nuestro caso, por el tipo de servos que tenemos, necesitamos más intensidad que la que es capaz de proporcionar Arduino, por lo que vamos a utilizar una fuente externa de alimentación de 5V.

El primer servo, el que controla el giro del brazo, del tipo Towerpro MG-955, tiene como colores para su conexión, naranja, rojo y marrón, teniendo cada color las funciones que indicamos en la siguiente imagen:

Los otros dos servos restantes, del tipo y modelo HITEC HS-422, tienen la distribución más clásica de rojo, negro y amarillo, con las siguientes funciones:

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

Conectando el joystick

El siguiente paso que hemos realizado ha sido conectar el joystick con el Arduino. Vamos a utilizar el joystick para controlar el movimiento de giro del brazo del servo MG-955 y el del giro de la muñeca con el primero de los servo HS-422. El tercer servo, un HS-422, que controla la apertura y cierre de la mano, lo vamos a controlar con un potenciómetro. Es decir vamos a utilizar las dos salidas que tiene el joystick para control en el eje X e Y, desechando la conexión de pulsación (SW) que no vamos a emplear.

El Joystick tiene las siguientes salidas/conexiones:

GND masa

5V 5V

VRX Control eje X

VRY Control eje Y

SW Switch de pulsación

Conectaremos la conexión de 5V con la salida de 5V del Arduino y la de GND con la GND del Arduino. VRX, el control con el eje X lo conectaremos a la entrada analógica A0 y, VRY a la entrada analógica A1.

Para la comprobación del joystick realizamos un instalación simple mapeando las posiciones de los dos ejes y mostrandolos en pantalla a través del programa sketch de Arduino. El programa que necesitamos para monitorear el joystick necesita usar dos entradas analógicas. Podríamos mandar esos valores de vuelta al ordenador, pero entonces nos encontraríamos con el clásico problema de que la transmisión a través del puerto de comunicación debe ser con valores de 8 bits, mientras que el DAC (conversor analógico-digital, que mide los valores de los potenciómetros del joystick) tiene una resolución de 10bits. En otras palabras, esto significa que nuestro sensor está caracterizado con un valor digital entre 0 y 1023.

Conectando el potenciómetro

El siguiente paso que hemos realizado ha sido conectar el potenciómetro con el Arduino. El potenciómetro tiene 3 salidas o conexiones. Dos en un lado para 5V y GND indistintamente y la tercera en el otro extremo del potenciómetro, para el control analógico del mismo, conectándolo en nuestro caso a la entrada analógica A2.

Ya una vez conectados todos los componentes, la conexión completa del conjunto es la siguiente, así como su esquema:

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

4.4 Análisis y realización del código

El primer paso es declarar e inicializar las variables que definirán el pin a utilizar.

#include <Servo.h> Servo myservo; // create servo object to control a servo const int servo1 = 9; // first servo const int servo2 = 10; // second servo const int servo3 = 11; // third servo const int joyH = A0; // L/R Parallax Thumbstick const int joyV = A1; // U/D Parallax Thumbstick const int potpin = 2; // Connected to SEL pin on the breakoutboard int val; // variable to read the value from the analog pin int servoVal; // variable to read the value from the analog pin Servo myservo1; // create servo object to control a servo Servo myservo2; // create servo object to control a servo

Mapeado de los rangos de los servos.

// Read the horizontal joystick value (value between 0 and 1023) servoVal = analogRead(joyH); servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 0 and 180) myservo2.write(servoVal); // sets the servo position according to the scaled value // Read the horizontal joystick value (value between 0 and 1023) servoVal = analogRead(joyV); servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 0 and 180)

Una ver realizado el código compilamos y lo descargamos en la tarjeta.

#include <Servo.h> Servo myservo; // create servo object to control a servo const int servo1 = 9; // first servo const int servo2 = 10; // second servo const int servo3 = 11; // third servo const int joyH = A0; // L/R Parallax Thumbstick const int joyV = A1; // U/D Parallax Thumbstick const int potpin = 2; // Connected to SEL pin on the breakoutboard int val; // variable to read the value from the analog pin int servoVal; // variable to read the value from the analog pin Servo myservo1; // create servo object to control a servo Servo myservo2; // create servo object to control a servo

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Descripción del montaje a realizar

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

void setup() {

// Servo myservo1.attach(servo1); // attaches the servo myservo2.attach(servo2); // attaches the servo myservo.attach(11); // attaches the servo on pin 11 to the servo object // Inizialize Serial Serial.begin(9600); } void loop(){ // Display Joystick values using the serial monitor outputJoystick(); // Read the horizontal joystick value (value between 0 and 1023) servoVal = analogRead(joyH); servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 0 and 180) myservo2.write(servoVal); // sets the servo position according to the scaled value // Read the horizontal joystick value (value between 0 and 1023) servoVal = analogRead(joyV); servoVal = map(servoVal, 0, 1023, 0, 180); // scale it to use it with the servo (result between 0 and 180) myservo1.write(servoVal); // sets the servo position according to the scaled value val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there } /** * Display joystick values */ void outputJoystick(){ Serial.print(analogRead(joyH)); Serial.print ("Eje H"); Serial.print(analogRead(joyV)); Serial.println ("Eje V");

4.5 Problemas encontrados y soluciones

Después de introducir el código, al pulsar el joystic se cierra la mano pero al soltar no se vuelve a abrir. Revisamos el código para buscar una posible solución nos encontramos que el error no esta en el código sino en la activación del pulsador, sustituyéndolo por un potenciómetro solucionamos el problema y controlamos de forma completa el grado de apertura de la mano.

DESARROLLO DE UN PROYECTO DE SISTEMAS AUTOMÁTICOS: BRAZO SIMPLE ROBOT - Resultados

CURSO: 2013-2014

©MÁSTER UNIVERSITARIO DE FORMACIÓN DE PROFESORADO EN EDUCAC IÓN SECUNDARIA OBLIGATORIA Y BACHILLERATO FORMACIÓN PROFES IONAL Y ENSEÑANZA IDIOMAS

5 RESULTADOS Finalizado el proyecto hemos montado un sistema capaz de controlar el movimiento de un brazo simple de 3 articulaciones mediante el accionamiento de un joystic y un potenciómetro. El eje Y del joystick regula el giro de la mano, el eje X su inclinación y el potenciómetro su apertura y cierre.

6 CONCLUSIONES Utilizando la tarjeta Arduino software de libre distribución, es posible enseñar a los alumnos de Secundaria cómo son capaces de crear y programar sencillos proyectos tecnológicos con los que será posible interactuar gracias a la presencia de un microcontrolador.

Nos ha parecido interesante, cómo después de los años, nos hemos puesto en el lugar del profesor, tratando de pensar como prepararíamos una práctica de este tipo para los alumnos. En este tipo de prácticas se consigue que los alumnos controlen gracias a un lenguaje informático unos elementos reales, como es el servo motor, sirviendo para motivar a los alumnos a aprender los conceptos teóricos y a interiorizar los conocimientos aprendidos en el aula.

La práctica nos ha resultado muy útil, a algunos de nosotros, a la hora de recordar algunos conceptos y afianzar los conocimientos que ya estaban un poco olvidados y, a otros, para realizar una primera toma de contacto con conceptos y elementos completamente nuevos.

Hemos subido nuestro trabajo de robótica a un blog creado por uno de los componentes del grupo, en el cual se ven diferentes temas sobre tecnologías. Este blog esta creado para la orientación del alumno y como una ayuda complementaria en el desarrollo de la asignatura. http://tinvfi00.wordpress.com/

7 BIBLIOGRAFÍA Instructables. Autor: biomech75. 2012. Fecha de consulta: 22/01/2012 -http://www.instructables.com/id/Arduino-2-Servos-Thumbstick-joystick/all/?lang=es Arduino. Fecha de consulta: 22/01/2012 - http://arduino.cc/en/Tutorial/Knob (código para los 1 servo con potenciómetro)