MAnual Comunicacion Serial

5
11º Congreso Nacional de Mecatrónica, ISBN: 978-607-95347-7-6. Octubre 4 y 5, 2012. Villahermosa, Tabasco. Asociación Mexicana de Mecatrónica A.C. 47 Adquisición de Señales Digitales y Analógicas con LabView por Puerto USB Mediante VISA Serial Juárez Ramiro Luis, Vergara Betancourt Ángel y Hernández García Edgar Instituto Tecnológico Superior de Zacapoaxtla. Carretera Acuaco-Zacapoaxtla, Km. 8 Col. Totoltepec, Zacapoaxtla, Puebla Tel: 01 (233) 31 75000, ext. 01, 02 [email protected] Resumen En este trabajo se presenta la interface y configuración para la adquisición de señales digitales y analógicas por puerto USB mediante el software de National Instruments LabView. La interfaz externa en este proyecto es el microcontrolador 18f4550 de Microchip con conexión USB. Se programa el microcontrolador para comunicarse vía puerto USB con la PC. Posteriormente se instala el driver para que sea reconocido el microcontrolador por el puerto de la PC. Con la herramienta Instrument I/O (VISA Serial) de LabView se obtiene la información recibida por el puerto USB. Finalmente se muestra como resultado un prototipo con termómetro virtual. Palabras clave: LabView, USB, microcontrolador, puerto, comunicación y señales. 1. Introducción El software LabView de la empresa National Instrument es una herramienta ampliamente utilizada en el área de ingeniería. Algunas aplicaciones de este software van desde adquirir datos y procesar señales, control de instrumentos, automatizar sistemas de pruebas y validación, sistemas embebidos de monitoreo y control entre otras. LabView es el único software de diseño de sistemas que proporciona a los ingenieros y científicos todas las herramientas que necesitan para crear aplicaciones de medidas y control. Es tan potente que le inspira a resolver problemas le ayuda a acelerar su productividad y le da la seguridad para innovar continuamente [1]. Si desea desarrollar un proyecto o prototipo en LabView y quiere utilizar el puerto serial y paralelo, podemos observar que no está disponible en las computadoras más modernas, lo que nos obliga a emplear el puerto USB. A la vez que comúnmente se busca una solución económica para realizar el prototipo. Por esta razón es necesario implementar una interface de bajo costo que utilice el puerto de comunicación USB. El objetivo de este trabajo es emplear un microcontrolador 18f4550 para intercambiar señales digitales y analógicas con LabView. Este software permite la comunicación fácilmente mediante puerto USB y serial, lo que tenemos que desarrollar es la interfaz externa. Mediante la librería mpusbapi.dll para Windows XP que nos proporciona microchip podemos realizar esta conexión como se explica en [2]. En este proyecto se realiza la configuración con la herramienta VISA Serial de LabView para Windows 7. Ya con la interface lista, pensemos en todas las aplicaciones que se pueden implementar utilizando el poderoso entorno gráfico de LabView y todas las características especiales del microcontrolador 18f4550 como son los puertos analógicos, control PWM, Timers, entre otras. 2. Materiales y métodos Para desarrollar este proyecto, utilizamos el laboratorio de electrónica analógica del Instituto Tecnológico Superior de Zacapoaxtla. El software utilizado es LabView, CCS Compiler, MpLab y simulador ISIS. El material eléctrico usado es 1 tarjeta entrenador pic con microcontrolador 18f4550, cable USB, sensor LM35, resistencias de 270 ohms, leds, 1 potenciómetro 5 kohms, 2 protoboards, display LCD 2x16 caracteres 2 líneas TM162AD.

Transcript of MAnual Comunicacion Serial

Page 1: MAnual Comunicacion Serial

11º Congreso Nacional de Mecatrónica, ISBN: 978-607-95347-7-6. Octubre 4 y 5, 2012. Villahermosa, Tabasco.

Asociación Mexicana de Mecatrónica A.C. 47

Adquisición de Señales Digitales y Analógicas con LabView por Puerto USB Mediante VISA Serial

Juárez Ramiro Luis, Vergara Betancourt Ángel y Hernández García Edgar

Instituto Tecnológico Superior de Zacapoaxtla. Carretera Acuaco-Zacapoaxtla, Km. 8 Col. Totoltepec, Zacapoaxtla, Puebla

Tel: 01 (233) 31 75000, ext. 01, 02 [email protected]

Resumen En este trabajo se presenta la interface y configuración para la adquisición de señales digitales y analógicas por puerto USB mediante el software de National Instruments LabView. La interfaz externa en este proyecto es el microcontrolador 18f4550 de Microchip con conexión USB. Se programa el microcontrolador para comunicarse vía puerto USB con la PC. Posteriormente se instala el driver para que sea reconocido el microcontrolador por el puerto de la PC. Con la herramienta Instrument I/O (VISA Serial) de LabView se obtiene la información recibida por el puerto USB. Finalmente se muestra como resultado un prototipo con termómetro virtual. Palabras clave: LabView, USB, microcontrolador, puerto, comunicación y señales.

1. Introducción

El software LabView de la empresa National Instrument es una herramienta ampliamente utilizada en el área de ingeniería. Algunas aplicaciones de este software van desde adquirir datos y procesar señales, control de instrumentos, automatizar sistemas de pruebas y validación, sistemas embebidos de monitoreo y control entre otras. LabView es el único software de diseño de sistemas que proporciona a los ingenieros y científicos todas las herramientas que necesitan para crear aplicaciones de medidas y control. Es tan potente que le inspira a resolver problemas le ayuda a acelerar su productividad y le da la seguridad para innovar continuamente [1].

Si desea desarrollar un proyecto o prototipo en LabView y quiere utilizar el puerto serial y paralelo, podemos observar que no está disponible en las computadoras más modernas, lo que nos obliga a emplear el puerto USB. A la vez que comúnmente se busca una solución económica para realizar el prototipo. Por esta razón es necesario implementar una interface de bajo costo que utilice el puerto de comunicación USB. El objetivo de este trabajo es emplear un microcontrolador 18f4550 para intercambiar señales digitales y analógicas con LabView. Este software permite la comunicación fácilmente mediante puerto USB y serial, lo que tenemos que desarrollar es la interfaz externa. Mediante la librería mpusbapi.dll para Windows XP que nos proporciona microchip podemos realizar esta conexión como se explica en [2]. En este proyecto se realiza la configuración con la herramienta VISA Serial de LabView para Windows 7.

Ya con la interface lista, pensemos en todas

las aplicaciones que se pueden implementar utilizando el poderoso entorno gráfico de LabView y todas las características especiales del microcontrolador 18f4550 como son los puertos analógicos, control PWM, Timers, entre otras.

2. Materiales y métodos Para desarrollar este proyecto, utilizamos el laboratorio de electrónica analógica del Instituto Tecnológico Superior de Zacapoaxtla. El software utilizado es LabView, CCS Compiler, MpLab y simulador ISIS. El material eléctrico usado es 1 tarjeta entrenador pic con microcontrolador 18f4550, cable USB, sensor LM35, resistencias de 270 ohms, leds, 1 potenciómetro 5 kohms, 2 protoboards, display LCD 2x16 caracteres 2 líneas TM162AD.

Page 2: MAnual Comunicacion Serial

11º Congreso Nacional de Mecatrónica, ISBN: 978-607-95347-7-6. Octubre 4 y 5, 2012. Villahermosa, Tabasco.

Asociación Mexicana de Mecatrónica A.C. 48

2.1 Diseño del circuito eléctrico

Antes de construir el circuito físico se realiza la simulación del circuito eléctrico. Vamos a utilizar dos salidas digitales (RB0 y RB1) y una entrada analógica (RA0) del microcontrolador 18f4550, los datos técnicos puede consultarlos en [3]. Para simular la entrada analógica utilizamos un potenciómetro de 5 kohms como se muestra en la figura 1.

Fig. 1 Simulación del circuito eléctrico Para que la simulación se efectúe, se requiere un programa en Assembler o CCS Compiler. La programación se ha realizado en CCS Compiler, mas información para programar en este lenguaje podrá encontrarla en [4]. A continuación se muestra el programa para detectar la entrada analógica. #include "18f4550.h" #device adc=8 #use delay(clock=48000000) #build(reset=0x02000,interrupt=0x02008) #org 0x0000,0x1FFF {} #include <lcd.c> void main(void) {lcd_init(); int8 voltaje; float p; setup_adc_ports(AN0); setup_adc( ADC_CLOCK_INTERNAL ); do{ set_adc_channel( 0 ); delay_ms(100); voltaje = read_adc(); p=150.0*voltaje/255.0; printf(lcd_putc,"\fTEC ZACAPOAXTLA"); printf(lcd_putc,"\nTemp. = %f C",p); }while (TRUE);} Al momento de escribir nuestro programa hay que considerar el espacio en la memoria flash si se cuenta con bootloader para no sobreescribirlo al momento de grabar el microcontrolador.

2.2 Programación para conexión USB Para escribir y compilar el programa vamos a utilizar el software CCS Compiler de Custom Computer Services, Inc. [5] El software CCS compiler permite realizar la conexión USB incluyendo el archivo siguiente: #include "usb_cdc.h" Esta librería incluida en el CCS Compiler nos va a generar una comunicación entre un puerto COM virtual de nuestra computadora sobre la conexión USB usando el Standard Communication Device Class (CDC). Es decir, crea una conexión virtual RS232 entre la PC y el PIC, compatible con el protocolo estándar UART I/O. Las funciones que vamos a utilizar de esta librería son las siguientes: usb_cdc_init(); usb_init(); usb_cdc_connected() usb_task(); usb_enumerated(); usb_cdc_getc(); usb_cdc_putc(); Vamos a incluir estas instrucciones en nuestro programa para que se comunique por el puerto USB. El programa completo se muestra a continuación: #include "18f4550.h" #device adc=8 #use delay(clock=48000000) #build(reset=0x02000,interrupt=0x02008) #org 0x0000,0x1FFF {} #include "usb_cdc.h" #include <lcd.c> #define PB1 PIN_B0 #define PB2 PIN_B1 void main(void) {lcd_init(); float cal; int8 vint; byte menu; byte voltaje; set_tris_b(0b11111100); set_tris_c(0b11111111); setup_adc_ports(AN0); setup_adc( ADC_CLOCK_INTERNAL ); usb_cdc_init(); usb_init(); while (!usb_cdc_connected()) {} usb_task(); while (!usb_enumerated()) {} do{ dato=usb_cdc_getc(); switch (menu) {

Page 3: MAnual Comunicacion Serial

11º Congreso Nacional de Mecatrónica, ISBN: 978-607-95347-7-6. Octubre 4 y 5, 2012. Villahermosa, Tabasco.

Asociación Mexicana de Mecatrónica A.C. 49

case 'a': output_toggle(PB1); break; case 'b': output_toggle(PB2); break; case 'c': set_adc_channel( 0 ); delay_ms(200); voltaje = read_adc(); printf (usb_cdc_putc,"%c",voltaje); vint = read_adc(); cal=180.0*vint/255.0; printf (lcd_putc,"\fTEC ZACAPOAXTLA"); printf (lcd_putc,"\nTemp. = %f C",cal); break;} }while (TRUE);} La función de este programa es: - Activar dos salidas digitales del microcontrolador por medio de la PC. - Recibir una entrada digital del microcontrolador y enviarla a la PC - Recibir una entrada analógica del microcontrolador y enviarla a la PC. - Recibir una entrada analógica del microcontrolador y enviarla al puerto D del mismo microcontrolador para mostrar en el LCD TM162AC el resultado del valor analógico convertido a una escala de 0 a 100 C° que representan temperatura. El puerto de la PC recibe los datos en formato char listos para ser capturados por algún software, en nuestro caso utilizaremos LabView.

2.3 Instalación del driver Se requiere de un controlador para que la PC reconozca al microcontrolador conectado al puerto USB y genere un puerto virtual COM. Este driver forma parte de las utilidades del software CCS [5]. Ya instalado genera un puerto virtual como se muestra en la figura 2.

Fig. 2 Puerto Virtual COM3

El puerto generado es el COM3, este puerto será reconocido por el software LabView.

2.4 Programación en LabView Ahora necesitamos un programa que interprete las señales mandadas por el microcontrolador por medio del puerto COM3 virtual a través del puerto USB. Elegimos el software LabView de la empresa National Instruments. El primer paso es configurar la comunicación VISA serial así como los bloques de lectura y escritura del puerto, la explicación detallada de configuración puede consultarla en [6].

Fig.3 Configuración de VISA Serial Utilizamos dos bloques de lectura y escritura para interactuar con el puerto, así como una estructura de casos y un compuesto aritmético. Vamos a crear un selector que permita activar la entrada analógica o mandar datos ya sea al puerto RB0 o RB1. El programa de espera quedaría en el block diagram de LabView como se muestra en la figura 4.

Fig. 4 Programa selector de casos pantalla 1

Page 4: MAnual Comunicacion Serial

11º Congreso Nacional de Mecatrónica, ISBN: 978-607-95347-7-6. Octubre 4 y 5, 2012. Villahermosa, Tabasco.

Asociación Mexicana de Mecatrónica A.C. 50

Si cambiamos el selector de casos podemos visualizar la pantalla de control para activar las salidas digitales RB0 y RB1, figura 5 y 6. Los datos los mandamos mediante el bloque VISA Write.

Fig. 5 Programa selector de casos pantalla 2

Fig. 6 Programa selector de casos pantalla 3 La parte del programa que se encarga de recibir los datos analógicos corresponde al selector de casos con número 3 y se muestra en la figura 7.

Fig. 7 Programa selector de casos pantalla 4

En el diseño del front panel de Lab View incluimos los controladores numéricos e indicadores numéricos para mandar y recibir datos respectivamente, figura 8.

Fig. 8 Front panel de control

2.5 Circuito eléctrico ya implementado Posteriormente a la simulación y el diseño del programa en LabView, se programa el circuito físico. Contamos con una tarjeta con sistema boot, reset con cristal oscilador de 8 Mhz. Podemos ajustar la velocidad de trabajo del microcontrolador mediante la configuración de los fuses PLL y CPUDIV. Esta tarjeta también cuenta con fuente independiente para poder funcionar sin utilizar el voltaje del puerto USB. La figura 9 muestra la tarjeta con microcontrolador 18F4550.

Fig. 9 Tarjeta con microcontrolador 18F4550 Esta tarjeta ya cuenta con los puertos incluidos en un solo peine para tomar las salidas e iniciar las pruebas. En la figura 10 se muestra la conexión del LCD así como las salidas digitales y la entrada analógica mediante el sensor LM35 [7].

Page 5: MAnual Comunicacion Serial

11º Congreso Nacional de Mecatrónica, ISBN: 978-607-95347-7-6. Octubre 4 y 5, 2012. Villahermosa, Tabasco.

Asociación Mexicana de Mecatrónica A.C. 51

Fig. 10 Circuito eléctrico de prueba.

3. Análisis de resultados Un problema común presentado al momento de hacer el intercambio de información es el formato de las variables. La comunicación usb_cdc_getc se realiza por medio del formato char y se debe utilizar bloques de conversión para convertir a entero con signo o sin signo de 8, 16 o 32 bits de acuerdo a las necesidades de programación. Otro punto importante es configurar la acción mecánica de los controles de LabView para evitar el rebote o detectar señales prolongadas e indeseadas.

4. Conclusiones Finalmente se logra de manera exitosa el intercambio de datos y en lugar de un potenciómetro de pruebas se emplea el sensor de temperatura LM35 como entrada analógica. La figura 11 muestra el sistema de comunicación completo en donde interactúa el microcontrolador con la PC por medio del puerto COM3 Virtual y la herramienta VISA Serial.

Fig. 11. Sistema de comunicación completo

Como trabajo a futuro se pretende implementar sistemas de control: PID, Difuso, ON-OFF en el control de procesos para controlar temperatura, posición, flujo, etc. Otra área de oportunidad es la adquisición de señales para el análisis por medio de Matlab por ejemplo. Por otra parte también se pretende utilizar otros programas como Visual Basic y SQL de Visual Estudio y por medio del puerto USB seguir trabajando con bases de datos.

Referencias [1] National Instruments Corporation (2012).

“Áreas de aplicación: ¿Cómo puedo usar NI LabView?”, Extraído el 20 de Julio, 2012 de; < http://www.ni.com/labview/applications >.

[2] Pérez J. y López F. “Comunicación USB de Alta

Velocidad entre LabView y un microcontrolador para la adquisición de datos en tiempo real”, Congreso Nacional de electrónica del Golfo, CONAGOLFO, 11 págs, Orizaba, Ver. 2009.

[3] Microchip (2012). “Microchip

PIC18F2455/2550/4455/4550 Datasheets”, Extraído el 20 de Junio, 2012 de; < http://www.microchip.com >.

[4] García E. “COMPILADOR C CCS Y

SIMULADOR PROTEUS PARA MICROCONTROLADORES PIC”, Ed. Alfaomega, España, Primera Edición, 276 páginas, 2008

[5] CCS (2012). “CCS Compiler, USB Drivers”,

Extraído el 15 de Marzo, 2012 de; < http://www.ccsinfo.com/downloads.php >.

[6] National Instrument (2012). “Comunicación

Serial Utilizando LabView con un Microcontrolador”, Extraído el 15 de Mayo, 2012 de; < http://www.ni.com/white-paper/7907/es >.

[7] National Semiconductor. “Precision centigrade

Temperature Sensors”, Extraído el 17 de Junio, 2012 de; < https://www.national.com/ds/LM/LM35.pdf >.