Está en la página 1de 6

Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones

Congreso 2010, Pgina 1




DESARROLLO DE UNA INTERFACE GRAFICA DE USUARIO
GUI EN MATLAB CON COMUNICACIN USB


Ilber Adonayt Ruge Ruge; Freddy Alexander Crdenas; Ingrid Andrea Garzn
Universidad de Cundinamarca
Programa de Ingeniera Electrnica
Grupo de Investigacin en Tecnologas de la Informacin y las Comunicaciones GITEINCO
Colombia/Cundinamarca/Fusagasug
ilberruge@yahoo.es; newcardenas@yahoo.es; andigari@hotmail.com
Abstract. En esta prctica de laboratorio se realizo una comunicacin entre un prototipo de tarjeta de
adquisicin basada en microcontrolador PIC y un PC a travs del puerto USB. Por medio de una
interface grafica de usuario desarrollada mediante la herramienta GUIDE de Matlab, se visualiza el
valor del voltaje sensado mediante el conversor ADC de un microcontrolador PIC18F2550.
Introduccin
Es de gran importancia la monitorizacin y control de
dispositivos desde un controlador que permita
adems la intervencin del usuario y no sean
totalmente autnomos, esto dado que, las decisiones
de un supervisor en su momento puedan quedar fuera
de la planeacin del programa o las necesidades
hayan cambiado.
La adquisicin de datos en muchas ocasiones es
realizada desde una tarjeta de adquisicin de seales,
que permite en su momento traducir los datos
obtenidos y aislar el sistema de control al de potencia,
dado el cambio de tensiones que se pueden manejar
en cada uno de los casos.
El cambio de los estndares de puertos de
comunicacin ha radicado en las exigencias de
rapidez, bajo costo y simplicidad de conexiones, que
son constantes en este medio. Se ha pasado del puerto
paralelo cuya fortaleza era la rapidez, dado que
enviaba un octeto en cada ciclo, pero 25 pines para su
instalacin; en contraposicin, el puerto serie RS232,
con 9 pines debe tener en cuenta un reloj de
sincronizacin enviando los datos bit a bit. Aparece
entonces el puerto USB que es un par trenzado que
solo requiere cuatro pines, y utiliza la misma idea de
la transmisin serial de bit a bit, pero simplifica en
gran medida la conexin, volvindose uno de los
puertos ms populares hoy en da.



1. Anlisis Del Componente Guide De
Matlab [1]
GUIDE (Graphical User Interfaces Development
Environment), se conoce como una aplicacin de
desarrollo de interfaces graficas de usuario. Para
iniciar la aplicacin de interfaz de usuario en Matlab
se accede digitando guide en la ventana de
comandos, ante lo cual emerge una pantalla que
permite crear un formulario nuevo, ejemplos de
clculos de unidades fsicas, graficas en ejes a travs
de un men de programas, creacin de pantallas para
capturar datos lgicos (Si o No), o abrir documentos
ya realizados (ver Figura 1).


Figura 1. Creacin nueva de GUIDE en Matlab.
En este caso se selecciona la creacin de un
formulario nuevo (Blank GUI), ante lo cual aparece
el formulario o area de trabajo segn como se
observa en la Figura 2, donde se encuentran la barra
de componentes al lado izquierdo, la barra de ttulo,

2
barra de men, barra de herramientas y el rea de
trabajo donde se puede insertar lo que se necesita
para realizar la interfaz grafica.


Figura 2. Formulario nuevo para la crea la interfaz
grafica de Matlab (GUIDE)
En el rea de trabajo se realiza la insercin de cada
componente necesario en el proyecto, por ejemplo,
para que aparezca un titulo se inserta un Label, y
accediendo al men de herramientas en la opcin de
inspector de objetos o con click contrario sobre el
objeto, en este caso el Label, se accede a edicin del
texto, el tipo de letra, la fuente, el color, etc.
Para acceder al cdigo fuente del formulario en la
barra de herramientas (ver Figura 3), se llega a cada
uno de los bloques funcionales de la GUI, donde los
principales son:
a. Function varargout = untitled(varargin).
Denota que es el cdigo fuente de un formulario,
aqui se encuentra el titulo del formulario como
variable, en este caso untlited.
b. Function untitled_OpeningFcn(hObject,
eventdata, handles, varargin). En esta lnea se
inserta todas aquellas acciones que corren desde
la apertura del formulario, por decirlo as la
presentacin por defecto.
c. Function varargout =
untitled_OutputFcn(hObject, eventdata,
handles). Opciones de cierre del formulario,
generalmente, limpiar variables, ventana de
comandos, etc.

Figura 3. Acceso al editor M-File de la GUI.
Luego aparece el llamado de cada funcin o accin
programada, por ejemplo en un botn de accin
aparece el cdigo:
function pushbutton1_Callback(hObject, eventdata,
handles)
Despus del cual, en la parte inferior, se escriben las
acciones correspondientes de este objeto.
2. Comunicacin USB con el PC [2]
La conexin USB (Universal Serial Bus) es una
interfaz de conexin de dispositivos perifricos a un
PC o host similares. Una de sus posibles aplicaciones
es la medicin y control de sistemas o como la
necesitada por un dispositivo de propsito general
que permita sensar o realizar una accin. USB es un
bus punto a punto, con inicio en el host y destino en
un dispositivo o Hub, los cuales segn este protocolo
de comunicacin pueden llegar a ser mximo 127
dispositivos.

Figura 4. Esquema de conexin del puerto USB.
Fsicamente la transmisin se realiza por un par
trenzado (D y D), y requiere dos pines ms para
suministrar el voltaje necesario a la conexin o
pequeos dispositivos perifricos. En este protocolo
solo puede existir un nico host, que es el dispositivo
maestro, que inicializa la comunicacin y el Hub, que
es el dispositivo que contiene uno o ms conectores o
conexiones a otros dispositivos USB.
El protocolo de comunicacin se basa en el paso de
testigo (token), donde el host proporciona el testigo al
dispositivo seleccionado y este le devuelve el testigo
como respuesta.
Es bien sabido, que los microcontroladores han dado
la pauta en la electrnica en cuanto a realizar el
monitoreo y control de dispositivos, dado lo robusto
del dispositivo y la cantidad de memoria que posee;
sin embargo, el poder conectar un microcontrolador
con un PC, es decir, con un microprocesador,
trabajando en conjunto supera en gran medida las
expectativas, adems de permitir al usuario tener un
ambiente amigable para intervenir en el sistema.
Microchip, es un reconocido productor de
microcontroladores de bajo costo como el
PIC16C745, PIC16C765, que son pocos flexibles y
manejan bajas velocidades o PIC18F4550 que
Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones
Congreso 2010, Pgina 3

adems tiene la gran posibilidad de
manejar velocidades de transmisin bajas y altas, por
lo cual suministra en su pagina web el archivo
mchpcdc.inf para hacer compatible los PIC`s con el
puerto USB; este archivo es el fichero estndar para
crear un driver virtual o CDC, de envo y recepcin
en el PC a 64 bytes de datos por milisegundo (8 bits
por byte), realizado en lenguaje C.

Figura 5. Interface grafica en MATLAB usando
comunicacin USB.
2.1 Diseo de una Tarjeta de Adquisicin
de Datos por USB [3]
Teniendo en cuenta el diagrama de bloques de la
figura 6, se puede interpretar que es un proceso de
lectura de informacin externa sobre una variable
fsica que se transmite a un medio de visualizacin a
travs de un medio de comunicacin, en este caso,
USB. Para lo cual se necesita el tratamiento de dicha
informacin desde su recoleccin hasta su
visualizacin, la primera fase corresponde a la
informacin sensada, tratada y transmitida por el PIC;
la segunda fase corresponde a la recepcin y
tratamiento de la informacin en el host, en este caso
en Matlab.

Figura 6. Diagrama de bloques del sistema
implementado
2.2 Simulacin de la Tarjeta de
Adquisicin de Datos por USB basado en
Microcontrolador
Se utilizara el software de simulacin Proteus 7.4
para validar el funcionamiento del hardware que
mide y transmite la variable fsica por medio de USB.
En la Figura 7 se muestra que la seal de voltaje es
sensada a travs del canal 0 RA0 y la frecuencia
utilizada para el funcionamiento del PIC es de
12MHz.

Figura7. Diagrama de conexiones de la tarjeta de
adquisicin de datos basado en PIC18F2550.
2.3 Desarrollo de la Interfaz Grafica de
Usuario en MATLAB [1], [4]
La interface grafica inicia con una presentacin,
segn se muestra en la Figura 8.

Figura 8. Formulario de presentacin del proyecto

Para iniciar la GUI principal se presiona el botn de
IR AL PROGRAMA, cuyo cdigo fuente se presenta
a continuacin:
function inicio_OpeningFcn(hObject, eventdata,
handles, varargin)
imagen1 = imread('imagen.jpg'); %Leer imagen

4
axes(handles.imagen1); axis off; imshow(imagen1);
%Presenta la imagen
escudo = imread('unicundi.jpg'); %Leer imagen
axes(handles.escudo); axis off; imshow(escudo);
%Presenta la imagen
handles.output = hObject;
guidata(hObject, handles);
function seguir_Callback(hObject, eventdata,
handles)
clear all; close all; clc; voltaje; %cierra las variables,
limpia la ventana y llama al formulario voltaje
Como resultado de la anterior accin, aparece el
formulario denominado VOLTAJE.

Figura 9. Formulario voltaje para adquisicin de la
informacin.
El botn TOMAR DATO permite capturar la lectura
del voltaje mediante comunicacin USB y
visualizarlo en su respectivo Label. El cdigo fuente
de esta funcin es:
function crear_Callback(hObject, eventdata, handles)
% hObject handle to crear (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)
loadlibrary mpusbapi _mpusbapi.h alias libreria
data_in = eye(1,64,'uint8'); % Se declara el
vector de datos de entrada (el que se recibe del PIC)
data_out = eye(1,64,'uint8'); % Se declara el
vector de datos de salida (el que se envia al PIC)
% TODOS LOS DATOS SE DECLARAN COMO
UNIT8, de lo contrario no hay comunicacion
vid_pid_norm =
libpointer('int8Ptr',[uint8('vid_04d8&pid_000b') 0]);
out_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1')
0]);
in_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1')
0]);
%calllib('libreria','MPUSBGetDLLVersion');
[conectado] =
calllib('libreria','MPUSBGetDeviceCount',vid_pid_no
rm)
if conectado == 1 % Es importante seguir sta
secuencia para comunicarse con el PIC:
% 1. Abrir tuneles, 2. Enviar/Recibir dato. 3 Cerrar
tuneles.
[my_out_pipe] = calllib('libreria',
'MPUSBOpen',uint8 (0), vid_pid_norm, out_pipe,
uint8(0), uint8 (0)); % Se abre el tunel de envio
[my_in_pipe] = calllib('libreria',
'MPUSBOpen',uint8 (0), vid_pid_norm, in_pipe,
uint8 (1), uint8 (0)); % Se abre el tunel de recepcin
while (data_out (1) <= 254)
% En caso de tener problemas de transmisin y
recepcin incremente
% Receive_delay_ms y SendDelay_ms (son los
ltimos parmetros de
% MPUSBWrite y MPUSBRead) hasta obtener
mejores resultados
calllib('libreria', 'MPUSBWrite',my_out_pipe,
data_out, uint8(64), uint8(64), uint8(10)); % Se envia
el dato al PIC
[aa,bb,data_in,dd] = calllib('libreria',
'MPUSBRead',my_in_pipe, data_in, uint8(64),
uint8(64), uint8(10)); % Se recibe el dato que envia el
PIC
data_out (1) = data_out (1)+ 1; % Se incrementa
el primer dato del vector que se envia
voltaje=double(data_in(2));
dato=single2double(informacion);
guidata(hObject,handles); %guarda dato
handles.dato=100.*handles.dato; %se parametriza
la entrada del dato de 1 a 100%
Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones
Congreso 2010, Pgina 5

salida=5*(dato/100); %se busca que se encuentre
el valor del voltaje entrante
set(handles.text3,'String',salida); %se cambia a
formato string muestra el valor de entrada
pause (0.1); % En caso de que se desee ver la
operacin ms lenta
end
calllib('libreria', 'MPUSBClose', my_in_pipe); %
Se cierra el tunel de recepcin
calllib('libreria', 'MPUSBClose', my_out_pipe); %
Se cierra el tunel de envio
end
unloadlibrary libreria % Importante descargar la
librera de memoria, de lo contrario genera errores
2.4 Implementacin del PCB de la Tarjeta
de Adquisicin
Para la conexin USB del PIC al PC se utilizo la
configuracin tpica que se ve en la Figura 10; ac se
destaca la conexin del voltaje positivo, la tierra, el
terminal D+ y D- del USB respectivamente.

Figura 10. Configuracin de conexin USB
Para el diseo del PCB del circuito utilizamos el
software PCB WIZARD de Proteus 7.4. La Figura 11
y 12 muestran el diagrama de impresin del PCB y
distribucin de elementos en el mismo.

Figura 11. PCB de Tarjeta de Adquisicion.

Figura 12. Diagrama de circuito y montaje de
conexin USB
3 Conclusiones
La compatibilidad universal de USB elimina los
riesgos en las ofertas de una gama de productos,
posibilitando a los fabricantes ( OEMs; Original
Equipment Manufacturers ) la creacin de
combinaciones innovadoras de PC, perifricos y
software que cubran las necesidades de determinados
segmentos de mercado . La norma USB simplifica los
procesos de validacin y los test de compatibilidad de
diferentes combinaciones de hardware y software, de
forma que los OEM puedan desarrollar con
anticipacin determinados segmentos de mercado y
responder con ms agilidad a los mercados
emergentes.
Hoy en da los puertos serie y paralelo de los
computadores personales se han ido reemplazando
con puertos USB que son mucho ms flexibles y
veloces. Las velocidades de transferencia logradas
con dispositivos USB y los bajos costos llevan a
pensar en su viabilidad en los sistemas de tiempo real

6
Referencias
[1] BARRAGAN GUERRERO, Diego Orlando.
Manual de interfaz grafica de usuario en Matlab.
Ecuador: Universidad Tcnica Particular de Loja.,
Escuela de Electrnica y Telecomunicaciones.
2007.
[2] AXELSON, Janet L. USB complete, everything
you need to develop custom USB peripherals.
Tercera edicin. Estados Unidos: Lakeview
Research. 2005.
[3] GARCIA BREIJO, Eduardo. Compilador C CCS
y simulador PROTEUS para Microcontroladores
PIC . Mxico: Alfaomega, Marcombo ediciones
tcnicas. 2008.
[4] POOL BALAM, Gabriel Jess. Transferencia y
procesamiento de datos a alta velocidad,
mediante el uso de Matlab, el puerto USB 2.0 y
PIC 18F2455. Guatemala: Universidad Modelo.,
Escuela de Ingeniera, Maestra en Mecatrnica.
2009.
.
























Copyright 2010. Ilber Adonayt Ruge Ruge, Fredy Alexander Crdenas, Ingrid Andrea Garzn: El autor
delega a la Organizacin del Segundo Congreso Virtual de Microcontroladores la licencia para reproducir este
documento para los fines del Congreso ya sea que este artculo se publique en el sitio web del congreso, en un
CD o en un documento impreso de las ponencias del Segundo Congreso Virtual de Microcontroladores.

También podría gustarte