34136826 conexion cdc pic labview

15
  Conexión CDC mediante PIC18fx55x y LabView. Jonatan I. Yam Cabrera. [email protected]  

Upload: javierreinoso8650

Post on 20-Jul-2015

325 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 1/15

 

Conexión CDC mediantePIC18fx55x y LabView.

Jonatan I. Yam [email protected] 

Page 2: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 2/15

Jonatan Yam Cabrera. Página 2

1.  Emulación de puerto serie.

La emulación de un puerto serie RS232

mediante un microcontrolador PIC de lafamilia 18Fxx5x de microchip, es una de las

maneras más rápidas y fáciles de realizar e

implementar, puesto que hoy en día 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.

Para realizar un enlace en esta modalidad

se requiere, en un aspecto global solamente

de las siguientes tres cosas:

  Circuito de desarrollo.

  Compilador CCS y librerías..

  Drivers CDC

1.1. Circuito de desarrollo.

No es necesario adquirir tarjetas de

desarrollo profesionales con costos elevados

para poder obtener resultados de calidad,

basta con invertir en un microcontrolador,

un par de dispositivos que complementen a

este y un buen diseño para estar a la par con

estas tarjetas de marca.

A continuación se muestra el esquema

básico, para lograr la comunicación usb con

el microcontrolador:

Como puede observarse, prácticamente

se requiere un conector usb y un capacitor

para lograr poner en funcionamiento el

microcontrolador. De este cirquito de partida

se puede ir agregando dispositivos que

cumplan con la necesidad en particular de su

aplicación.

1.2. Compilador CCS y librerías.

En esta aplicación se utilizó el

compilador PCW de CCS, que maneja

lenguaje de alto nivel basado en C, y en

conjunto con este, se requieren de lossiguientes archivos para la programación.

usb_cdc.h .- La cuál contiene las rutinas

necesarias para manejar las interrupciones,

la comunicación usb, los descriptores y todos

Page 3: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 3/15

Jonatan Yam Cabrera. Página 3

los handlers necesarios para lograr

establecer la comunicación con la PC.

usb_desc_cdc.h .- Esta librería contiene los

descriptores CDC, que básicamente es el

archivo que indica a la PC como tiene que

configurar el dispositivo, y algunos datos

extras sobre el mismo, como la cantidad de

corriente que necesita, el nombre del

dispositivo, VID y PID entre otros.

Existen otros archivos relacionados con el

usb que se utilizan como el usb.h, pero sobre

los que tenemos que tener mucha atención

para personalizar nuestra aplicación son los

dos mencionados.

1.3. Drivers CDC.

Este modo de conexión requiere de un

driver para Windows, en su paquete USBFramework v2.6a, Graphics Library v2.01,

MDD v1.2.5, TCPIP Stack v5.20b, mTouchCap

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.

Este driver también lo incluye el CCS, en la

carpeta de drivers, sin embargo, saber de el

origen de este nunca está de más.

En esta librería se incluyen cientos de

ejemplos para todo tipo de

microcontroladores y los cuales pueden ser

un buen punto de partida. 

2.  Labview y funciones de conexión

para puerto serial.

LabView posee una serie de herramientas

para realizar una conexión mediante el

puerto serial, estas herramientas vienen en

un “toolbox” llamado VISA, que se pueden

obtener directamente de la web de National

Instruments en caso de no tenerlos

instalados previamente.

Si ya contamos con las herramientas VISA,

estas se localizan en el panel de funciones

en: Instrument I/O>>VISA>>Bus/Interface

Specific>>Serial. 

Page 4: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 4/15

Jonatan Yam Cabrera. Página 4

Estas herramientas nos van a permitir

realizar una conexión de la PC al

microcontrolador en cuestión de minutos. A

continuación ser enlistan las 4 principales

funciones:

Configuración del puerto.- Esta función

permite configurar los diferentes parámetros

del puerto serial como el baudrate, paridad,

control de flujo, bits de datos, carácter de

término etc.

Función de escritura.- Mediante esta

herramienta realizaremos envíos de datos a

través del puerto serial.

Función de lectura.- La herramienta

lectura nos permitirá adquirir datos dedispositivos externos, en este caso el PIC.

Cerrar puerto.- Es importante cerrar los

puertos que ya no se estén utilizando, de lo

contrario, al solicitar una conexión por este,

será imposible por encontrarse en uso.

En el menú contextual de cada

herramienta, se puede encontrar la ayuda,

donde se especifican todos los detalles para

cada una, como el tipo de datos que soporta,

timeout, bytes esperados, entre otros.

3.  Conexión básica PIC-Labview.

Empezaré por el lado del

microcontrolador, específicamente la parte

del firmware, que nos va a permitir realizar la

conexión.

La primero es la librería base del

microcontrolador que usaremos, en este

caso se usa un PIC182550 con un cristal de

4MHz.

#include <18F2550.h>

Inmediatamente se declaran los fusibles.

#fuses XTPLL ,NOWDT,NOPROTECT,NOLVP

#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 configuración

Page 5: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 5/15

Jonatan Yam Cabrera. Página 5

de estos son vitales para el funcionamiento

del dispositivo.

Una vez definido el include del dispositivo

y los fusibles, se define la librería querealizará todos los procesos necesarios para

establecer conexión con la PC.

#include <usb_cdc.h>

Ahora ya procedemos a la parte principal

del código en el que es muy importante usar

la siguiente instrucción antes que cualquier

otra relacionada con la comunicación USB, ya

que este permite la inicialización de los

procesos del USB:

Void main(void) { 

usb_init();

 }

Cuando ya hemos inicializado mediante

usb_init(), ya podremos hacer el uso de los

demás prototipos relacionados con la

comunicación como son los tres siguientes

usados para este ejemplo de conexión

básica:

usb_enumerated().- Que nos devuelve

True si el dispositivo ya se encuentra

enumerado por la PC o false en caso de no

estarlo.

usb_cdc_kbhit().- Nos indica si existen

datos en el buffer de entrada del

microcontrolador.

usb_cdc_getc().- Devuelve el carácter

(dato) que se encuentre en el buffer de

entrada.

Se pueden encontrar los demásprototipos disponibles en la librería

usb_cdc.h con la respectiva descripción de

cada uno.

3.1. Recepción de datos enviados de la

PC en el microcontrolador.

Para el hardware del ejemplo se usa un

LED en el puerto RB0 del microcontrolador,

el cual se controlará mediante un dato

enviado por la PC de la siguiente manera:

Después de comprobar si el

microcontrolador ha sido enumerado, se

checa si existe algún dato en el buffer de

entrada; si es así, se lee el dato y se asigna a

una variable, la cual servirá para tomar la

decisión sobre el estado del led.

c=usb_cdc_getc();

if (c=='1') output_toggle(LED1);

En este ejemplo sucede que si el dato

(código ASCII) recibido por el

microcontrolador equivale al carácter “1” (49

decimal), cambia de estado el LED por medio

de la instrucción interna del compilador

output_toggle() que simplemente cambia el

estado actual, si esta en 1, se cambia a 0; si

estuviera en 0 a 1.

Page 6: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 6/15

Jonatan Yam Cabrera. Página 6

3.2. Envío de datos desde el

microcontrolador a la PC.

Para realizar esta tarea, se utiliza en el

hardware, un push-button con resistenciapull-up en el puerto AN1 para tener control

sobre esta acción y entender claramente

tanto el envío como recepción de datos.

Por el lado de la programación del

microcontrolador, la librería usb_cdc.h

cuenta con un par de funciones para el envió

de datos.

usb_cdc_putc().- Esta función es la que

nos permitirá realizar envío de caracteres

mediante el usb a la PC.

printf(usb_cdc_putc,string).-

Combinando la función  printf() del

compilador con la propiedad usb_cdc_putc,

podemos enviar a través del usb, strings con

formato.

Para este ejemplo, se utiliza un bucle

while para detectar el cambio en el botón, y

cuando sucede este se envía un carácter

predefinido:

while (TRUE) { 

…. 

if (input_STATE(PIN_A5)==0) { 

delay_ms(500);

 printf(usb_cdc_putc,"5\r");

}

Si el estado del push-button es “0”

(presionado, ya que esta con resistencia de

pull-up) se hace un pequeño delay para

evitar rebote y enviar datos demasiado

seguidos, y se envía el carácter “5” seguido

de un retorno de carro “/r” mediante la

función printf().

3.3. Envío y recepción de datos de

LabView al microcontrolador

Para realizar esta tarea implementaremos

las 3 funciones básicas en el labview,

resultando en un ejemplo de conexión muy

sencillo, sin embargo, será un buen punto de

partida para la elaboración de programas

más complejos.

Para empezar, abrimos el LabView y en la

pantalla principal selecionaremos “Blank VI”

(instrumento virtual en blanco o nuevo)

Vamos a trabajar primero en el “front

panel” (panel frontal), que es la parte visual

del LabView, en este panel podemos agregar

todos los controles que necesitamos paranuestra aplicación en particular, como cajas

de texto, graficas, leds, formas, etc.

Todas estas herramientas visuales las

podemos encontrar en la “paleta de

Page 7: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 7/15

Jonatan Yam Cabrera. Página 7

controles”, la cuál la podemos abrir desde el

menú “ver”. 

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.

Visa Resource Name.- Este control nos va

a permitir seleccionar y detectar los puertos

COM disponibles en el sistema.

Numeric Control.- Este tipo de control

permite ingresar datos numéricos en sus

diferentes formatos a nuestro programa,

pueden ser enteros con o sin signo, de punto

flotante, etc.

Agregar 2 de estos controles a los cuales

llamaremos: Baudios y Bits de datos.

A cada control agregado al panel frontal,

le indicaremos el tipo de dato que este

control va a manejar. Con el botón derecho

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

valor predeterminado en texto el cuál será

remplazado por un dato numérico.

Page 8: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 8/15

Jonatan Yam Cabrera. Página 8

Agregar controles de este tipo y llamarlos,

Paridad, Bits de parada y Control de flujo.

De forma similar como se estableció el

tipo de valor para los controles numéricos,

vamos a establecer los valores para el

control ring. Haciendo click con el botón

derecho del mouse sobre elemento que

renombramos como “Paridad”  desplegamos

el menú contextual; seleccionamos Edit 

Items.

En la ventana de elementos marcar la

casilla de “Sequential Values”  e ingresar los

siguientes datos: None, Odd, Even, Mark y 

Space.

Para ingresar datos se puede hacer doble-

click sobre la casilla “ ítems”  o con el botón

“Insert ”, al tener marcada la casilla de“Sequential Values”  los valores de cada

elemento se establecerán de manera

automática empezando de 0 e

incrementándose como se muestra en la

figura.

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 cuál

se tiene que desmarcar la casilla “Secuential 

Values”  y agregar estos datos:

Item Value

1.0 10

Page 9: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 9/15

Jonatan Yam Cabrera. Página 9

1.5 15

2.0 20

Control de flujo.- Para este control

tampoco usaremos valores secuenciales porlo cual se necesita desmarcar la casilla antes

mencionada y agregar los datos siguientes:

Para los tres controles “ring”   seleccionar

U16 como tipo de representación.

String control.- Mediante este control

podremos ingresar cadenas de texto a

nuestro programa, en este ejemplo enparticular lo utilizaremos para enviar un

carácter al microcontrolador.

String indicator.- Con esta herramientra

podremos desplegar texto en la interface de

nuestro programa

Por último se recomienda ordenar todoslos elementos agregados al panel frontal de

la siguiente forma:

Item Value

None 0

XON/XOFF 1

RTS/CTS 2

DTR/DSR 4

Page 10: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 10/15

Jonatan Yam Cabrera. Página 10

Ahora vamos a trabajar la programación

de nuestra interface, para esto nos

cambiamos al diagrama de bloques con las

teclas de acceso rápido CTRL+E o en la barra

de menus Window>Show Block Diagram.

Y en el diagrama a bloques podremos ver

los elementos agregados en el panel frontal,

quizá de una manera desordenada, para este

ejemplo ordenarlos como se muestra en la

figura.

En caso de ver estos iconos:

podemos cambiar a la vista alternativa

haciendo click con el botón derecho del

mouse y en el menú contextual desmarcar

“View as icon” :

Ahora vamos a agregar los cuatro bloques

de conexión VISA mencionados

anteriormente. Para ver la paleta de

funciones vamos al menú View>Functions

Palette.

Ordenamos los elementos de la siguiente

manera:

Para recibir caracteres o cadenas, la

función de “Read” necesita saber cuántos

caracteres va a leer, para esto existen los

nodos de propiedades en el LabView, pero

Page 11: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 11/15

Jonatan Yam Cabrera. Página 11

en este ejemplo lo realizaremos de la forma

mas simple, con una constante numérica con

el valor de datos a recibir, que será uno.

Para agregar la constante se realiza el

mismo proceso que para agregar elementosen el  panel frontal, pero con las

herramientas de la  paleta de funciones

(functions pallete).

Para evitar el valor por defecto de la

constante, hacemos doble-click sobre esta

introducimos el valor “1”.  Modificar su

representación (tipo de dato) a U32 

Al fin de todo este proceso debemos

tener nuestro diagrama de bloques de la

siguiente manera:

Al posicionar el puntero del mouse sobre

una función, esta nos va a desplegar lasterminales para sus posibles entradas y

salidas de datos, en el caso de configuración

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 cuál podremos enlazar a otras

funciones o controles.

Page 12: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 12/15

Jonatan Yam Cabrera. Página 12

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:

Con esta aplicación podremos seleccionar

y configurar un puerto COM (Serie), asi

como enviar y recibir un carácter de

LabView al microcontrolador a través del

mismo.

4.  Realizando la conexión.

Una vez descargado el .hex al micro y la

aplicación de LabView lista, seguiremos los

siguientes pasos para establecer la conexión

serial entre el PIC y LabView:

1.- Conectar el micro a la PC y en

“Dispositivos e Impresoras” (para Windows

7) o en “Administrador de dispositivos”

(Windows 7 y anteriores), identificar si el

dispositivo ha sido reconocido y enumerado

satisfactoriamente.

Como se aprecia en la imagen el ícono no

presenta ningún aviso de advertencia de

error de conexión.

En el administrador de dispositivos

podemos observar la categoría Puertos COM

y LPT nuestro dispositivo asignado con el

nombre de COM4. El número de COM puede

variar dependiendo del conector usb de la PC

donde se haya hecho la conexión.

Page 13: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 13/15

Jonatan Yam Cabrera. Página 13

2.- Configurar los parámetros de

operación del puerto COM virtual en

LabView. Esto lo haremos con la interface

gráfica creada previamente. Los siguientes

valores son parámetros estándar y máscomunes para el puerto serial, sin embargo

se puede experimentar con estas

configuraciones.

El control VISA RESOURCE NAME, nos va a

desplegar todos los dispositivos COM

enumerados en la PC, por tal motivo es

indispensable saber el número asignado al

puerto por la PC para elegir la opción

apropiada.

En el cajón de texto escribiremos el

número “1”, este será el que se envíe al PIC y

realice la operación de prender o apagar el

LED.

Para correr el programa utilizaremos los

siguientes controles en la barra de

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

aplicación utilizaremos el de correr una sola

vez. 

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

programa entonces enviará el carácter “1” al

PIC y pasará a esperar el dato a recibir por

parte del PIC, el programa detendrá su flujohasta recibir el dato o hasta agotar el

“timeout” de la función VISA de leer datos

del puerto serial. Para que el PIC envíe el

dato presionamos el push-button colocado

en el puerto A5 como se explico

anteriormente.

En la indicador de texto “Recibir”

podemos ver el dato que envío el

microcontrolador.

Page 14: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 14/15

Jonatan Yam Cabrera. Página 14

Y con esto habremos realizado la

conexión CDC en su forma más simple

mediante LabView y el microcontrolador

PIC18F2550.

Es muy recomendable experimentar con

lo que se ocurra al momento de la conexión

para irse familiarizando con los errores con

los que nos podríamos topar, así como para

ir implementando funciones más complejas

para aplicaciones propias.

Page 15: 34136826 Conexion CDC PIC LabView

5/17/2018 34136826 Conexion CDC PIC LabView - slidepdf.com

http://slidepdf.com/reader/full/34136826-conexion-cdc-pic-labview-55b0829f0b8c5 15/15

Jonatan Yam Cabrera. Página 15

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.