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
Publicar un comentario