Diseño e implementacion



  Diseño e implementación del sistema de control e interfaz gráfica de usuario


Una vez realizada la parte constructiva se inició el ensamblaje de los componentes que conforman el sistema de control del robot, la programación correspondiente a dicho sistema y  la realización de la interfaz gráfica de usuario.
En primer lugar se realizó la selección de un microcontrolador que cumpliese con los requerimientos necesarios para la aplicación a implementar como por ejemplo la capacidad de realizar comunicación a través del puerto serial con el dispositivo, la presencia de módulos PWM necesarios para realizar el control de los motores, etc; teniendo en cuenta lo antes dicho se decidió adquirir un microcontrolador PIC 16F877A.
Luego se hizo necesario tener disponible un driver capaz de proporcionar el amperaje necesario a los motores, después de debatir varias posibilidades se tomó la decisión de adquirir el driver Big Easy Driver (Ver Fig. 4.18.)
Fig. 4. 18. Big Easy Driver [22]
Uno de los aspectos más importantes tomados en cuenta durante el proceso de selección del driver a utilizar y la posterior elección del Big Easy Driver como interfaz de potencia  es la capacidad del mismo de facilitar la implementación del sistema de control, esto es producto de que dicho controlador cuenta con el circuito integrado Allegro  A4983 el cual posibilita la realización de distintas acciones asociadas al control de motores paso a paso (Ver especificaciones completas en el anexo B) reduciendo de esta forma la cantidad de recursos utilizados por parte del microcontrolador con esa finalidad; Además el driver cuenta con distintas opciones de operación (Ver diagrama esquemático en el anexo C y el manual del driver en el anexo D) entre las cuales se encuentra la desactivación simultanea o individual de los circuitos de control y potencia, limitación del valor máximo de la corriente de salida, etc.
Al haber seleccionado los componentes que conforman el hardware del sistema de control, se procedió a realizar el programa que contiene las distintas condiciones prefijadas que permitirán el correcto funcionamiento del prototipo. Dicho programa principal y sus subprogramas fueron realizados en CCS, el cual usa lenguaje C, como se mencionó anteriormente. A continuación se mostrarán los siguientes diagramas de flujo en el cual se presentan de forma esquemática el programa principal y las distintas rutinas y/o subprogramas implementados en el mismo:
Fig. 4.19. Diagrama del flujo del programa  del PIC16f877A para el control del robot
Los subprogramas Girar Motor 1, Girar Motor 2 y Mover Pinza, como sus respectivos nombres lo indican tienen la finalidad de lograr el funcionamiento de cada motor asociado. Por ejemplo las rutinas Girar Motor 1 y Girar Motor 2 reciben como datos dos parámetros: Sentido de giro y número de pasos a realizar, con estas variables se le asignan dirección al motor y posición en grados. En Cambio, la rutina Mover Pinza recibe como parámetro una señal, la cual dependiendo de su valor accionará el elemento final  para abrirlo o cerrarlo. 
Fig. 4.20. Diagrama del flujo del subprograma de Interrupción del PIC16f877A

 Interfaz Gráfica de Usuario.


Con la finalidad de facilitar la interacción al usuario final del robot se decidió realizar una GUI utilizando como ambiente de desarrollo a Microsoft Visual Studio 2010 Ultimate, empleando el lenguaje de programación orientado a objetos C Sharp (C#). La POO está basada en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Para la realización del software se crearon dos clases, dichos diagramas se presentan en la figura 4.21. 
Repositorio Principal

Repositorio de Variables
(+) Posición actual Motor1: Int32
(+) Pasos de Motor1 360: Int
(+)Posición actual Motor2: Int32
(+)Posición actual Pinza: String

(+)Pasos de Motor2 360: Int
 
 
Fig.4.21. Diagramas de clases
La clase Repositorio Principal contiene tres atributos, el primero y el segundo son las variables que almacenan la posición actual del motor 1 y motor 2 correspondientemente, mientras que el último atributo está asociado a la posición actual de la pinza accionada por el servo motor. La segunda clase llamada Repositorio de Variables, posee dos atributos, ambos almacenan los pasos necesarios del motor para realizar un giro de 360º, para el caso del primero de la lista está asociado al motor 1 y el segundo al motor 2. Cabe destacar que el número de pasos para ambos motores no es el mismo, debido a que el sistema de piñones y cadena implementado para el motor 1 es distinto al usado para el motor 2.
Con dicha interfaz se podrán visualizar las distintas posiciones de las articulaciones además de controlar los movimientos que realizan cada una de ellas, también se podrán visualizar mensajes asociados a la operación del robot con respecto a condiciones que pueden resultar de interés para el usuario, A continuación se explicarán, en términos generales, el funcionamiento de cada una de estas ventanas:
 Ventana Principal
 
Fig. 4. 22. Ventana Principal de la Interfaz de Usuario
En la Fig. 4.22  se observan una serie de botones los cuales conllevan a ejecutar varias funciones las cuales dependerán de lo que desee hacer el usuario con el robot.
Para el posicionamiento de la articulación 1 se cuenta con un trackbar la cual tiene como rango mínimo y máximo 0 y 270º  respectivamente. El valor en grados que se obtiene al ajustar la barra se puede apreciar en el textbox. El otro textbox asociado al motor 1 muestra la posición actual en grados de la articulación 1.
Para el motor 2 se cuenta con las mismas herramientas para lograr su funcionamiento, la única salvedad es que el rango de valores en grados de la trackbar asociada al mismo, va desde 0 a 360º. El control del elemento final del robot se logra mediante un checkbox, el cual si esta marcado indica que se desea abrir la pinza, caso contrario es para el cierre de la misma, además se cuenta con dos textbox, el primero muestra la acción a ejecutar en la pinza y en el segundo se visualiza la posición actual de la pinza.
Al presionar el botón MOVER  se ejecuta el envío del número de pasos y la dirección del motor 1, motor 2 y el para el caso del servo para la pinza envía un parámetro que indica si se desea abrir o cerrar la pinza. En  la Fig. 4.26 se muestra el diagrama de flujo de la rutina de mover los motores.
El botón de RESET se encarga de posicionar la articulación 1 en una posición inicial, el motor se moverá en sentido horario hasta conseguirse con el sensor.
Para el caso del botón CALIBRACIÓN POSICIÓN, se tiene que al presionarlo se genera una nueva ventana (ver Fig. 4.23)  en la cual se muestran dos trackbars, una asociada al motor 1 y otra asociada al motor 2 con las cuales se puede calibrar un nuevo sistema de referencia para cada articulación. Al presionar el botón GUARDAR, el sistema tomará los valores cargados en los respectivos trackbars y los cargará como las nuevas referencias. 
 
Fig. 4. 23. Ventana de calibración de la Interfaz de Usuario.

Al accionar la pestaña de AYUDA de la ventana principal, se desplegarán dos pestañas. La primera de ellas “Manual de Usuario”, al darle click se abrirá una ventana con un breve resumen donde se habla de las características del programa y unos ejemplos para su correcto funcionamiento. Al accionar la segunda pestaña “Acerca De...” se abre una venta que muestra los datos del programa, tales como la versión y los datos de los creadores del software. Dichas ventanas comentadas anteriormente, se pueden apreciar en las figura 4.24
 
Fig. 4. 24. Ventana “Acerca De...” de la Interfaz de Usuario.

            
Fig. 4. 26. Diagrama de flujo de la rutina MOVER realizada en Visual Studio Donde: Ag: Angulo de giro.




Pos_des1: Posición deseada para la articulación 1.
Pos_des2: Posición deseada para la articulación 2 Pos_act1: Posición actual de la articulación 1.
Pos_act2: Posición actual de la articulación 2.
Pos_act3: Posición actual de la pinza.

Pruebas realizadas


Una vez realizadas las distintas partes que componen el sistema de control del prototipo se procedió a realizar una serie de pruebas orientadas a verificar el funcionamiento adecuado del robot además de determinar si existía algún tipo de discrepancia entre los valores estipulados por software y los valores reales en cuanto a la ubicación de los eslabones, en dicha prueba se le asignó un movimiento por software a cada eslabón de 90º. Los resultados de las  pruebas realizadas fueron plasmados en la tabla: 
Nº de repetición
Grados Recorridos
Eslabón 1
Eslabón 2
1
82
86
2
85
85
3
82
90
4
84
86
5
82
86
6
80
87
7
84
86
8
83
87
Moda
82
86
Mediana
82.5
86
Media
82.75
86.625

Los datos obtenidos al realizar el ensayo arrojan que existe una pequeña discrepancia del ángulo girado con el ángulo deseado, dicha discrepancia es de 7.25º para la primera articulación con respecto al valor promedio girado. 
Para el segundo caso se tiene una diferencia de 3.375º con respecto al ángulo promedio girado. Se puede inferir que dicha discrepancia entre el ángulo deseado y el valor promedio de giro puede aumentar a medida que el ángulo a girar sea mayor.




Comentarios