Conexion CDC PIC LabView PDF

También podría gustarte

Está en la página 1de 15

Conexin CDC mediante

PIC18fx55x y LabView.
Jonatan I. Yam Cabrera.
Jonatan.yam@gmail.com
1. Emulacin de puerto serie. A continuacin se muestra el esquema
bsico, para lograr la comunicacin usb con
el microcontrolador:
La emulacin de un puerto serie RS232
mediante un microcontrolador PIC de la
familia 18Fxx5x de microchip, es una de las
maneras ms rpidas y fciles de realizar e
implementar, puesto que hoy en da existen
una gran cantidad de herramientas
dedicadas a estos microcontroladores que
se han vuelto tan populares. Solo basta con
un poco de conocimiento para el uso de
estas mismas para tener en un plazo muy
reducido de tiempo, un proyecto robusto y
confiable.
Como puede observarse, prcticamente
Para realizar un enlace en esta modalidad
se requiere un conector usb y un capacitor
se requiere, en un aspecto global solamente
para lograr poner en funcionamiento el
de las siguientes tres cosas:
microcontrolador. De este cirquito de partida
Circuito de desarrollo. se puede ir agregando dispositivos que

Compilador CCS y libreras.. cumplan con la necesidad en particular de su

Drivers CDC aplicacin.

1.1. Circuito de desarrollo. 1.2. Compilador CCS y libreras.

No es necesario adquirir tarjetas de En esta aplicacin se utiliz el


desarrollo profesionales con costos elevados compilador PCW de CCS, que maneja
para poder obtener resultados de calidad, lenguaje de alto nivel basado en C, y en
basta con invertir en un microcontrolador, conjunto con este, se requieren de los
un par de dispositivos que complementen a siguientes archivos para la programacin.
este y un buen diseo para estar a la par con
usb_cdc.h .- La cul contiene las rutinas
estas tarjetas de marca.
necesarias para manejar las interrupciones,
la comunicacin usb, los descriptores y todos

Jonatan Yam Cabrera. Pgina 2


los handlers necesarios para lograr Este driver tambin lo incluye el CCS, en la
establecer la comunicacin con la PC. carpeta de drivers, sin embargo, saber de el
origen de este nunca est de ms.
usb_desc_cdc.h .- Esta librera contiene los
descriptores CDC, que bsicamente es el En esta librera se incluyen cientos de
archivo que indica a la PC como tiene que ejemplos para todo tipo de
configurar el dispositivo, y algunos datos microcontroladores y los cuales pueden ser
extras sobre el mismo, como la cantidad de un buen punto de partida.
corriente que necesita, el nombre del
dispositivo, VID y PID entre otros.
2. Labview y funciones de conexin
Existen otros archivos relacionados con el
para puerto serial.
usb que se utilizan como el usb.h, pero sobre
los que tenemos que tener mucha atencin
para personalizar nuestra aplicacin son los LabView posee una serie de herramientas
dos mencionados. para realizar una conexin mediante el
puerto serial, estas herramientas vienen en
un toolbox llamado VISA, que se pueden
1.3. Drivers CDC. obtener directamente de la web de National
Instruments en caso de no tenerlos
instalados previamente.
Este modo de conexin requiere de un
Si ya contamos con las herramientas VISA,
driver para Windows, en su paquete USB
estas se localizan en el panel de funciones
Framework v2.6a, Graphics Library v2.01,
en: Instrument I/O>>VISA>>Bus/Interface
MDD v1.2.5, TCPIP Stack v5.20b, mTouchCap
Specific>>Serial.
Library v1.01, el cual se puede descargar
directamente del fabricante microchip en:
www.microchip.com y Home Products
Home Page 16-bit PIC MCUs & dsPIC
Digital Signal Controllers

Una vez instalado en la ruta por defecto,


el driver CDC se localiza en la siguiente ruta:
C:\Microchip Solutions\USB Tools\USB CDC
Serial Demo\inf.

Jonatan Yam Cabrera. Pgina 3


Estas herramientas nos van a permitir En el men contextual de cada
realizar una conexin de la PC al herramienta, se puede encontrar la ayuda,
microcontrolador en cuestin de minutos. A donde se especifican todos los detalles para
continuacin ser enlistan las 4 principales cada una, como el tipo de datos que soporta,
funciones: timeout, bytes esperados, entre otros.

Configuracin del puerto.- Esta funcin


permite configurar los diferentes parmetros
del puerto serial como el baudrate, paridad,
control de flujo, bits de datos, carcter de
trmino etc.

Funcin de escritura.- Mediante esta 3. Conexin bsica PIC-Labview.


herramienta realizaremos envos de datos a
Empezar por el lado del
travs del puerto serial.
microcontrolador, especficamente la parte
del firmware, que nos va a permitir realizar la
conexin.

La primero es la librera base del


Funcin de lectura.- La herramienta
microcontrolador que usaremos, en este
lectura nos permitir adquirir datos de
caso se usa un PIC182550 con un cristal de
dispositivos externos, en este caso el PIC.
4MHz.

#include <18F2550.h>

Cerrar puerto.- Es importante cerrar los Inmediatamente se declaran los fusibles.


puertos que ya no se estn utilizando, de lo
contrario, al solicitar una conexin por este, #fuses XTPLL,NOWDT,NOPROTECT,NOLVP
ser imposible por encontrarse en uso. #fuses NODEBUG,USBDIV,PLL1,CPUDIV1
#fuses VREGEN,NOPBADEN

En caso de usar otro hardware, los


fusibles resaltados con negritas, son los de
mayor importancia, ya que la configuracin

Jonatan Yam Cabrera. Pgina 4


de estos son vitales para el funcionamiento usb_cdc_getc().- Devuelve el carcter
del dispositivo. (dato) que se encuentre en el buffer de
entrada.
Una vez definido el include del dispositivo
y los fusibles, se define la librera que Se pueden encontrar los dems
realizar todos los procesos necesarios para prototipos disponibles en la librera
establecer conexin con la PC. usb_cdc.h con la respectiva descripcin de
cada uno.
#include <usb_cdc.h>
3.1. Recepcin de datos enviados de la
Ahora ya procedemos a la parte principal PC en el microcontrolador.
del cdigo en el que es muy importante usar
la siguiente instruccin antes que cualquier Para el hardware del ejemplo se usa un
otra relacionada con la comunicacin USB, ya LED en el puerto RB0 del microcontrolador,
que este permite la inicializacin de los el cual se controlar mediante un dato
procesos del USB: enviado por la PC de la siguiente manera:

Void main(void) { Despus de comprobar si el


usb_init(); microcontrolador ha sido enumerado, se
} checa si existe algn dato en el buffer de
entrada; si es as, se lee el dato y se asigna a
Cuando ya hemos inicializado mediante una variable, la cual servir para tomar la
usb_init(), ya podremos hacer el uso de los decisin sobre el estado del led.
dems prototipos relacionados con la
comunicacin como son los tres siguientes c=usb_cdc_getc();
usados para este ejemplo de conexin
bsica: if (c=='1') output_toggle(LED1);

usb_enumerated().- Que nos devuelve En este ejemplo sucede que si el dato


True si el dispositivo ya se encuentra (cdigo ASCII) recibido por el
enumerado por la PC o false en caso de no microcontrolador equivale al carcter 1 (49
estarlo. decimal), cambia de estado el LED por medio
usb_cdc_kbhit().- Nos indica si existen de la instruccin interna del compilador
datos en el buffer de entrada del output_toggle() que simplemente cambia el
microcontrolador. estado actual, si esta en 1, se cambia a 0; si
estuviera en 0 a 1.

Jonatan Yam Cabrera. Pgina 5


3.2. Envo de datos desde el pull-up) se hace un pequeo delay para
microcontrolador a la PC. evitar rebote y enviar datos demasiado
seguidos, y se enva el carcter 5 seguido
Para realizar esta tarea, se utiliza en el de un retorno de carro /r mediante la
hardware, un push-button con resistencia funcin printf().
pull-up en el puerto AN1 para tener control
sobre esta accin y entender claramente 3.3. Envo y recepcin de datos de
tanto el envo como recepcin de datos. LabView al microcontrolador
Por el lado de la programacin del
microcontrolador, la librera usb_cdc.h Para realizar esta tarea implementaremos
cuenta con un par de funciones para el envi las 3 funciones bsicas en el labview,
de datos. resultando en un ejemplo de conexin muy
sencillo, sin embargo, ser un buen punto de
usb_cdc_putc().- Esta funcin es la que partida para la elaboracin de programas
nos permitir realizar envo de caracteres ms complejos.
mediante el usb a la PC.
Para empezar, abrimos el LabView y en la
printf(usb_cdc_putc,string).- pantalla principal selecionaremos Blank VI
Combinando la funcin printf() del (instrumento virtual en blanco o nuevo)
compilador con la propiedad usb_cdc_putc,
podemos enviar a travs del usb, strings con
formato.

Para este ejemplo, se utiliza un bucle


while para detectar el cambio en el botn, y
cuando sucede este se enva un carcter
predefinido:
Vamos a trabajar primero en el front
while (TRUE) { panel (panel frontal), que es la parte visual
. del LabView, en este panel podemos agregar
if (input_STATE(PIN_A5)==0) { todos los controles que necesitamos para
delay_ms(500); nuestra aplicacin en particular, como cajas
printf(usb_cdc_putc,"5\r"); de texto, graficas, leds, formas, etc.
}
Todas estas herramientas visuales las
Si el estado del push-button es 0 podemos encontrar en la paleta de
(presionado, ya que esta con resistencia de

Jonatan Yam Cabrera. Pgina 6


controles, la cul la podemos abrir desde el pueden ser enteros con o sin signo, de punto
men ver. flotante, etc.
Agregar 2 de estos controles a los cuales
llamaremos: Baudios y Bits de datos.

Vamos a agregar al panel frontal los


siguientes elementos de la paleta de
controles, basta con hace un click sobre el
elemento en la paleta y luego hacer un click
sobre el panel frontal. Realicemos esto para
los siguientes elementos.
A cada control agregado al panel frontal,
Visa Resource Name.- Este control nos va le indicaremos el tipo de dato que este
a permitir seleccionar y detectar los puertos control va a manejar. Con el botn derecho
COM disponibles en el sistema. sobre el elemento para ver el men
contextual seleccionamos: representation y
U16 para bits de datos y U32 para baudios.

Text Ring: Nos permite seleccionar un


Numeric Control.- Este tipo de control
valor predeterminado en texto el cul ser
permite ingresar datos numricos en sus
remplazado por un dato numrico.
diferentes formatos a nuestro programa,

Jonatan Yam Cabrera. Pgina 7


Agregar controles de este tipo y llamarlos, siguientes datos: None, Odd, Even, Mark y
Paridad, Bits de parada y Control de flujo. Space.
Para ingresar datos se puede hacer doble-
click sobre la casilla tems o con el botn
Insert, al tener marcada la casilla de
Sequential Values los valores de cada
elemento se establecern de manera
automtica empezando de 0 e
incrementndose como se muestra en la
figura.

De forma similar como se estableci el


tipo de valor para los controles numricos,
vamos a establecer los valores para el
control ring. Haciendo click con el botn
derecho del mouse sobre elemento que
renombramos como Paridad desplegamos
el men contextual; seleccionamos Edit
Items.

Para los dos controles ring restantes,


realizar el mismo proceso, pero agregando
los siguientes elementos.

Bits de parada.- Para este control no


utilizaremos valores secuenciales por lo cul
se tiene que desmarcar la casilla Secuential
Values y agregar estos datos:

En la ventana de elementos marcar la


casilla de Sequential Values e ingresar los Item Value
1.0 10

Jonatan Yam Cabrera. Pgina 8


1.5 15
2.0 20

Control de flujo.- Para este control


tampoco usaremos valores secuenciales por
lo cual se necesita desmarcar la casilla antes
mencionada y agregar los datos siguientes:

Item Value
String indicator.- Con esta herramientra
None 0
podremos desplegar texto en la interface de
XON/XOFF 1
nuestro programa
RTS/CTS 2
DTR/DSR 4

Para los tres controles ring seleccionar


U16 como tipo de representacin.

Por ltimo se recomienda ordenar todos


los elementos agregados al panel frontal de
la siguiente forma:

String control.- Mediante este control


podremos ingresar cadenas de texto a
nuestro programa, en este ejemplo en
particular lo utilizaremos para enviar un
carcter al microcontrolador.

Jonatan Yam Cabrera. Pgina 9


Ahora vamos a trabajar la programacin
de nuestra interface, para esto nos
cambiamos al diagrama de bloques con las
teclas de acceso rpido CTRL+E o en la barra
de menus Window>Show Block Diagram.

Ahora vamos a agregar los cuatro bloques


Y en el diagrama a bloques podremos ver
de conexin VISA mencionados
los elementos agregados en el panel frontal,
anteriormente. Para ver la paleta de
quiz de una manera desordenada, para este
funciones vamos al men View>Functions
ejemplo ordenarlos como se muestra en la
Palette.
figura.

Ordenamos los elementos de la siguiente


manera:

En caso de ver estos iconos:

podemos cambiar a la vista alternativa


haciendo click con el botn derecho del Para recibir caracteres o cadenas, la
mouse y en el men contextual desmarcar funcin de Read necesita saber cuntos
View as icon: caracteres va a leer, para esto existen los
nodos de propiedades en el LabView, pero

Jonatan Yam Cabrera. Pgina 10


en este ejemplo lo realizaremos de la forma Al fin de todo este proceso debemos
mas simple, con una constante numrica con tener nuestro diagrama de bloques de la
el valor de datos a recibir, que ser uno. siguiente manera:
Para agregar la constante se realiza el
mismo proceso que para agregar elementos
en el panel frontal, pero con las
herramientas de la paleta de funciones
(functions pallete).

Al posicionar el puntero del mouse sobre


una funcin, esta nos va a desplegar las
terminales para sus posibles entradas y
salidas de datos, en el caso de configuracin
de puerto serial VISA nos despliega estas
terminales:

Si posicionamos el puntero sobre el punto


de color de cada terminal, el puntero cambia
a un carrete de cable y nos despliega el
nombre de la terminal. Si hacemos un click
sobre este con el carrete, se conectara un
hilo el cul podremos enlazar a otras
funciones o controles.

Para evitar el valor por defecto de la


constante, hacemos doble-click sobre esta
introducimos el valor 1. Modificar su
representacin (tipo de dato) a U32

Jonatan Yam Cabrera. Pgina 11


Entonces vamos a proceder a enlazar
cada herramienta agregada en el panel
frontal a las funciones VISA, teniendo mucho
cuidado de conectar cada elemento
adecuadamente a la terminal que pertenece.
Las siguiente imagen presenta el cableado
a realizar y obtener al fin del proceso:
Como se aprecia en la imagen el cono no
presenta ningn aviso de advertencia de
error de conexin.

Con esta aplicacin podremos seleccionar


y configurar un puerto COM (Serie), asi
como enviar y recibir un carcter de
LabView al microcontrolador a travs del
mismo.

4. Realizando la conexin.

Una vez descargado el .hex al micro y la


aplicacin de LabView lista, seguiremos los
siguientes pasos para establecer la conexin
serial entre el PIC y LabView: En el administrador de dispositivos
podemos observar la categora Puertos COM
1.- Conectar el micro a la PC y en y LPT nuestro dispositivo asignado con el
Dispositivos e Impresoras (para Windows nombre de COM4. El nmero de COM puede
7) o en Administrador de dispositivos variar dependiendo del conector usb de la PC
(Windows 7 y anteriores), identificar si el donde se haya hecho la conexin.
dispositivo ha sido reconocido y enumerado
satisfactoriamente.

Jonatan Yam Cabrera. Pgina 12


2.- Configurar los parmetros de
operacin del puerto COM virtual en
LabView. Esto lo haremos con la interface
grfica creada previamente. Los siguientes
valores son parmetros estndar y ms
comunes para el puerto serial, sin embargo Para correr el programa utilizaremos los
se puede experimentar con estas siguientes controles en la barra de
configuraciones. herramientas.

Esta barra provee dos controles para


correr los programas, el primero que es
correr el programa una sola vez y correr el
programa continuamente. Para nuestra
aplicacin utilizaremos el de correr una sola
vez.

3.- Click en Run (Correr una sola vez), el


programa entonces enviar el carcter 1 al
PIC y pasar a esperar el dato a recibir por
parte del PIC, el programa detendr su flujo
El control VISA RESOURCE NAME, nos va a
hasta recibir el dato o hasta agotar el
desplegar todos los dispositivos COM
timeout de la funcin VISA de leer datos
enumerados en la PC, por tal motivo es
del puerto serial. Para que el PIC enve el
indispensable saber el nmero asignado al
dato presionamos el push-button colocado
puerto por la PC para elegir la opcin
en el puerto A5 como se explico
apropiada.
anteriormente.

En el cajn de texto escribiremos el


En la indicador de texto Recibir
nmero 1, este ser el que se enve al PIC y
podemos ver el dato que envo el
realice la operacin de prender o apagar el
microcontrolador.
LED.

Jonatan Yam Cabrera. Pgina 13


Y con esto habremos realizado la
conexin CDC en su forma ms simple
mediante LabView y el microcontrolador
PIC18F2550.

Es muy recomendable experimentar con


lo que se ocurra al momento de la conexin
para irse familiarizando con los errores con
los que nos podramos topar, as como para
ir implementando funciones ms complejas
para aplicaciones propias.

Jonatan Yam Cabrera. Pgina 14


Esta obra est bajo una licencia Attribution-NonCommercial-ShareAlike 3.0 Unported de
Creative Commons. Para ver una copia de esta licencia, visite
http://creativecommons.org/licenses/by-nc-sa/3.0/ o envie una carta a Creative Commons, 171
Second Street, Suite 300, San Francisco, California 94105, USA.

Jonatan Yam Cabrera. Pgina 15

También podría gustarte