Pic Abview

14

Click here to load reader

Transcript of Pic Abview

Page 1: Pic Abview

1

MICROCONTROLADORES PIC

MANUAL DE INSTALACIÓN DE TARJETA DE ADQUISICIÓN DE DATOS MICROCONTROLADA PARA EL USO CON LABVIEW

INTRODUCCIÓN

Esta ayuda asume que el compilador de MicroCode Studio PLUS 2.3.0.0 (MCS Plus) o superiores está instalado

junto con el compilador PBP 246, 274 o superiores. Se explica cómo generar un nuevo proyecto USB en caso de

que se quiera cambiar por completo el programa base que más adelante también se explicará.

Es claro que cualquier grabador que pueda quemar un programa en un PIC de 40 pines podrá grabar el PIC

18F4550, debido a que son eléctricamente compatibles.

Hay que tomar en cuenta que la conexión USB con LabVIEW, sobre todo en el momento de realizar una

transferencia de datos desde el PIC a la PC es inestable, es mucho más fácil enviar datos que recibirlos.

Las instrucciones de lectura de datos serial (SERIN o gosub DoUSBIn), mantienen al PIC en espera de recibir un dato, si no reciben dato alguno, es muy probable que el PIC no salga de esta instrucción.

Se explica paso a paso la instalación y configuración de MCSP y cómo usar EASY HID para el uso de

microcontroladores que tienen o que pueden usar transmisión USB. Esta instalación es apoya por los videos

instructivos, el orden de estos es:

1. Instalación

2. Ejecución

3. Funcionamiento de la Placa

El video de Grabación del PIC es para mostrar la configuración del grabador WinPic800 sobre el PIC 18F4550.

Se puede decir que el punto principal de este tutorial es el de depuración de errores, pues es normal que se

den algunas clases de errores, aquí damos algunas pautas para tratarlos

Page 2: Pic Abview

2

DESARROLLO DE UN PROYECTO PARA TRANSMISIÓN USB Para usar la herramienta de MCS nos dirigimos al menú View en la opción Easy HID Wizard. Se ejecutar Easy

HID. Se presenta la una ventana para ingresar datos de los desarrolladores del dispositivo USB. Se ingresan los

datos deseados, estos datos se registraran cuando se conecte el micro al computador, como cuando se conecta

cualquier equipo USB a la PC.

El siguiente paso es muy importante pues es conde se designan los valores del ID Vendor y el ID Product.

Fig1. Ventana de Easy HID Wizard. Datos ID del proyecto.

Estos datos pueden obtenerse independientemente de los que MicroCode nos está ofreciendo aquí, pero

pueden llegar a tener valores extremadamente altos. Estos datos son imprescindibles, pues deben ser único

para cada dispositivo, por lo que si se crean dos programas con los mismos datos de producto y fabricante (ID

Vendor y el ID Product) del dispositivo, en caso de que se conecte por primera vez un dispositivo, el Sistema

Operativo (SO) de la PC, guarda el nombre del dispositivo con el que se instala, y si luego se desea conectar un

dispositivo con un programa diferente, pero el ID Vendor y el ID Product son los mismos del primero, nada va a

funcionar, pues la PC intentara relacionarse con el programa del primer dispositivo.

La siguiente figura muestra la ventana donde se define el tamaño del buffer USB, estos datos pueden

modificarse mientras se está editando el programa, pero los datos de corrientes del puerto que se presenta en

la parte superior de esta ventana, no pueden ser cambiados luego de esto.

Fig2. Ventana de Easy HID Wizard. Selección de corrientes, tiempos y tamaño de los buffers de salida y entrada.

Page 3: Pic Abview

3

La figura 3, muestra los datos que se dan para guardar el proyecto, de preferencia, lo mejor es guardar el

proyecto dentro de una carpeta directamente colocada en la raíz de un disco.

Fig3. Ventana de Easy HID Wizard. Selección de la localización del proyecto.

El Project Name, es el nombre del proyecto obviamente y es el nombre de la carpeta que va a contener el

archivo con el código para el pico en la dirección indicada más abajo. Si la carpeta donde guardamos nuestro

proyecto tiene un path muy largo no compilará el programa aunque esté bien.

Fig4. Ventana de Easy HID Wizard. Finalización en la generación del proyecto.

Entonces el proyecto ya está creado y se procede a abrir el archivo para el código del PIC desde el mismo MSC

PLUS, para lo cual hay que buscar en la carpeta PICBasicPRO, dentro de la carpeta del proyecto en la dirección

donde se lo guardó el proyecto. Se abre el archivo con el nombre del proyecto.

Por default la velocidad del oscilador aparece como 48MHz, la velocidad máxima depende del oscilador con la

que puede trabajar el PIC (ver datasheet).

Page 4: Pic Abview

4

Al compilar, si se presentan errores no se abre el grabador automáticamente, además puede generarse el error

302 que no se puede abrir la librería “PBPPic18.LIB, para solucionar esto en la carpeta PBP247 buscar el archivo

PBPUSB18.LIB o de extensión .LIB, abrirlo con el block de notas y dentro de este existe la instrucción:

include "\PBP\PBPPIC18.LIB" cambiarla por

include "C:\Archivos de programa\Mecanique\PBP247\PBPPIC18.LIB" Esto como ejemplo porque el path de donde se encuentre la carpeta PBP247 puede cambiar. Cuando se

manda a compilar y grabar el programa en el PIC (F10), la configuración del programador WinPic800 debe ser la

siguiente:

Fig5. Configuración de WinPic800 para grabar un PIC como 18FXXX.

Una vez que está listo el programa para el PIC (grabado) y el de LabVIEW, se conecta el micro a la PC, entonces

podremos notar que la primera vez aparecerá un icono en la bandeja del sistema para alertarnos que un nuevo

hardware se ha conectado.

Page 5: Pic Abview

Lo mejor es ignorar este icono y se

dentro de la carpeta de LabVIEW (Inicio

se realiza una sola vez, cuando se conecta por primera vez el dispositivo a un puerto USB de la PC.

Fig6. Selección del bus para el hardware para trabajar con LabView.

Seleccionamos Bus USB y siguiente. Luego se ejecuta el programa USB VIEW

contiene este tutorial y en el lado derecho de la ventana de este programa va a aparecer un puerto con un

símbolo de advertencia y la derecha se pued

en la ventana del VISA como se muestra más abajo.

procede a abrir el programa VISA DRIVER DEVELOPMENT WIZARD que está

(Inicio->Todos los Programas->National Instruments).

se realiza una sola vez, cuando se conecta por primera vez el dispositivo a un puerto USB de la PC.

. Selección del bus para el hardware para trabajar con LabView.

Seleccionamos Bus USB y siguiente. Luego se ejecuta el programa USB VIEW que se adjunta en la carpeta que

y en el lado derecho de la ventana de este programa va a aparecer un puerto con un

símbolo de advertencia y la derecha se puede ver los valores de ID Vendor y el ID Product, se los copia y pega

en la ventana del VISA como se muestra más abajo.

5

el programa VISA DRIVER DEVELOPMENT WIZARD que está

>National Instruments). Cabe señalar que esto

se realiza una sola vez, cuando se conecta por primera vez el dispositivo a un puerto USB de la PC.

. Selección del bus para el hardware para trabajar con LabView.

que se adjunta en la carpeta que

y en el lado derecho de la ventana de este programa va a aparecer un puerto con un

Product, se los copia y pega

Page 6: Pic Abview

Fig7. USB View, permite ver los datos de Vendor ID y de Product ID del hardware.

Fig8. Configuración de datos y del Vendor ID y

. USB View, permite ver los datos de Vendor ID y de Product ID del hardware.

. Configuración de datos y del Vendor ID y Product ID en Measurement & Automation para trabajar con LabView.

6

. USB View, permite ver los datos de Vendor ID y de Product ID del hardware.

Product ID en Measurement & Automation para trabajar con LabView.

Page 7: Pic Abview

Es posible que estos datos no sean los mismos que en un principio

MCS, por lo que realmente es necesario de comprobarlo con USBVIEW. Para las

clic en siguiente y se finaliza. Ahora se abre el programa Measurement & Automation de National Instruments,

se despliega la opción DEVICES & INTERFACES, y luego USB Devices y se selecciona la opción USB::0x…. como

en la figura. En el espacio de ALIAS se coloca el nombre con el cual se desea que aparezca en LabView.

Fig9. Edición del nombre con el que LabView reconocerá el hardware, es decir el circuito del PIC.

Y finalmente se guardan los cambios (presionar botón save) y

Se abre LabVIEW y en el diagrama de bloques, sobre la constate para el recurso VISA se da clic derecho y

que asegurarse que el dato de entrada del dispositivo USB sea configurados como USB Raw

cada vez que el programa de LabVIEW

Es posible que estos datos no sean los mismos que en un principio se definió cuando se creaba el proyecto en

MCS, por lo que realmente es necesario de comprobarlo con USBVIEW. Para las ventanas siguientes solo se da

clic en siguiente y se finaliza. Ahora se abre el programa Measurement & Automation de National Instruments,

se despliega la opción DEVICES & INTERFACES, y luego USB Devices y se selecciona la opción USB::0x…. como

ra. En el espacio de ALIAS se coloca el nombre con el cual se desea que aparezca en LabView.

. Edición del nombre con el que LabView reconocerá el hardware, es decir el circuito del PIC.

Y finalmente se guardan los cambios (presionar botón save) y cerrar Measurement & Automation.

y en el diagrama de bloques, sobre la constate para el recurso VISA se da clic derecho y

que asegurarse que el dato de entrada del dispositivo USB sea configurados como USB Raw

LabVIEW manipule datos del PIC.

7

se definió cuando se creaba el proyecto en

ventanas siguientes solo se da

clic en siguiente y se finaliza. Ahora se abre el programa Measurement & Automation de National Instruments,

se despliega la opción DEVICES & INTERFACES, y luego USB Devices y se selecciona la opción USB::0x…. como

ra. En el espacio de ALIAS se coloca el nombre con el cual se desea que aparezca en LabView.

. Edición del nombre con el que LabView reconocerá el hardware, es decir el circuito del PIC.

cerrar Measurement & Automation.

y en el diagrama de bloques, sobre la constate para el recurso VISA se da clic derecho y hay

que asegurarse que el dato de entrada del dispositivo USB sea configurados como USB Raw. Esto se hace para

Page 8: Pic Abview

8

Fig10. Conexión de VIs para enviar datos usando puerto USB.

Fig11. Conexión de VIs para enviar datos usando puerto USB.

ERRORES DE CONEXIÓN:

Page 9: Pic Abview

9

Ahora pueden darse algunos errores en la conexión USB, esto se da por diferentes circunstancias

básicamente por dos circunstancias, la primera es precisamente por errores de conexión de la interfaz

física USB, y la otra es en caso de que se esté recibiendo datos del PIC.

Si por alguna razón se desconecta el dispositivo USB, mientras esté funcionando, es muy posible que se

tenga un error recurrente, es decir que no deje de salir de LabVIEW, para detenerlo presionamos la

combinación de teclas

En caso de que se dé este error de conexión, nos dirigimos a Measurement & Automation y verificamos de

que dentro de “USB Devices” el nombre del dispositivo se mantenga tal y como lo dejamos la primera vez

que instalamos el dispositivo. Si no sale el nombre con el que guardamos al dispositivo en Measurement &

Automation, y en lugar sale algo como:

Fig12. Nombre de dispositivo USB NO reconocido en Measurement & Automation

Lo que se debe hacer es desconectar de la PC y apagar el dispositivo USB, cerrar por completo LabVIEW,

que ni el Getting Started de LabView esté abierto, solo Measurement & Automation puede estar abierto,

solo entonces podemos volver a conectar el dispositivo, y entonces comprobamos en Measurement &

Automation que nuevamente salga el dispositivo con el nombre con el que la primera vez lo guardamos:

Fig13. Nombre de dispositivo USB SI reconocido en Measurement & Automation

Esto siempre se debe hacer en para este error.

Ahora es posible que se dé un error como el siguiente:

Fig14. Error en la operación USB en LabVIEW

Esto se da debido a que por alguna razón se paró (Se pulso el botón ALTO) en programa de LabVIEW, pero

no se desconectó el hardware, entonces al volver hacer correr el programa, en el envío de la clave se da

Page 10: Pic Abview

10

este error, solamente damos clic en “Continue”, entonces el programa se volverá a detener, lo volvemos a

hacer correr al programa, y listo asunto arreglado.

Ahora si por alguna razón vemos que al hacer correr el programa y no se ve que el Waveform Chart se

mueve, además luego de un tiempo sale un error de Time Out, lo que sucede es que LabVIEW no recibió

ningún dato desde el puerto USB, esto se da por dos posibles razones.

1. Porque en alguna parte del programa del PIC, este se colgó o se demoró mucho en enviar los datos

a la PC.

2. Porque se perdió conexión física en la interfaz USB

Por lo general el segundo error es poco probable que se dé, el primero es el principal de todos los errores.

En el caso de los programas de demostración que se han proporcionado, si éste error del que acabamos

hablar se da, es debido a que la interfaz serial de la tarjeta no está conectada o no se están recibiendo

datos, por este puerto del PIC, y esto se da debido a que la instrucción para recibir datos usando la interfaz

serial que proporciona PICBASIC se mantiene en ejecución hasta que se reciba un dato, entonces si no se

da la mencionada recepción de datos en el puerto Serie del PIC, el programa del mismo literalmente se

cuelga hasta recibir los datos. Así tenemos que:

Si se desea solo probar la interfaz USB con la PC, hay que comentar la línea donde se encuentra la sentencia SERIN PORTC.7,T9600,Rserial, y tranquilamente se puede usar solo el puerto USB del PIC.

Error Atípico: Ahora si ya se depuran todos estos errores y LabVIEW no da ninguna clase de error, y se da la respectiva

variación para que el “voltímetro” de LabVIEW lea algún dato, pero solo se ve que la línea del Waveform

Chart sigue en cero es porque los 5V que tiene el potenciómetro no es el mismo del PIC, a pesar que la

tierra sea la misma, y esto influye debido a que el programa del PIC está usando el voltaje del PIC como

referencia para la conversión A/D, para esto lo mejor es sacar el MAX232 colocar un pedazo de cable

multipar en el zócalo de este chip justo donde iría el pin 16 (Alimentación del MAX) y volver a colocar al

MAX en la placa pero sin sacar este cable, el otro extremo del cable debe ser conectado donde está, los 5V

del potenciómetro. Esto solo se hace si no mismo varía la señal en LabVIEW, lo cual es casi imposible, sin

embargo esta puede ser una posible solución.

En el Apéndice 1 se adjunta el esquema que tendría el circuito para estos programas de prueba, donde el

segundo PIC de este esquema el 16f871, es quien envía los datos al PIC de la tarjeta de adquisición de

datos.

FUNCIONAMIENTO BÁSICO DE LOS PROGRMAS DEMOSTRATIVOS:

Page 11: Pic Abview

11

Para verificar cual es el diagrama de bloques para enviar datos a un PIC, basta con abrir el Sub VI

Envio_clave, donde se envía un grupo de datos al PIC en función de lo que el PIC espera recibir para dar

comienzo a su programa principal.

No olvidar que se ha usado un PIC adicional para generar un dato aleatorio, el cual se envía mediante la

interfaz serial al PIC de la tarjeta de adquisición para poder.

A las dos tarjetas se les ha cargado el programa de la carpeta Tarj1, que es el mismo de la tarjeta Tarj2 si lo

revisa, la diferencia está en que cada uno de estos software posee un VENDOR ID y PRODUCT ID diferente,

datos propios de dispositivos USB de cualquier índole.

Se podría utilizar las dos tarjetas al mismo tiempo con sus identificadores repetidos dentro de un mismo

computador, sin embargo es posible que este los confunda y se genere un error, por lo que si creen

conveniente cargue al programa de la Tarj2 en una de las tarjetas SADM_USB.

Programa PIC:

La sentencia “DEFINE LOADER_USED 1”, es sumamente importante y mucho más la sentencia “USBINIT”,

pues son las encargadas de que el PIC se cargue con el ID Vendor y el ID Product, datos necesarios de todo

dispositivo USB; por esto es que si un programa se copia para otro dispositivo que debe de tener el mismo

dispositivo, no se deben reemplazar estas líneas en caso de que se desee mantener un ID Vendor y el ID

Product independiente para cada dispositivo.

El programa correspondiente del PIC, es una muestra sencilla de adquisición de datos, donde se toma el

canal 0 del convertidor A/D del microcontrolador, conectándolo a un potenciómetro para leer la variación

de voltaje que este produce, además se toma la adquisición de un medio externo a través de la interfaz

serial con la que también dispone esta tarjeta.

Para que el microcontrolador se dé cuenta de cuando debe pasar a dar funcionamiento al bucle principal

del programa, la subrutina TEST, se encarga de esperar por un dato específico recibido de la PC en el

índice 1 del buffer de recepción del microcontrolador. Al analizar el programa del PIC se podrá dar cuenta

que el módulo PWM se encuentra habilitado y funcionando, así como verificar de donde recibe los datos

cada uno de los dos módulos con los que cuenta el PIC 18F4550.

La etapa de conversión A/D, está configurada de tal forma que solo el canal 0 del ADC del PIC (RA0) se

encuentra configurado como entrada analógica, mientras que el resto del puerto A se encuentra en modo

digital. Se está usando el voltaje de alimentación del PIC como voltaje de referencia para el módulo ADC.

Se usa la justificación izquierda del conversor ADC del PIC.

Los dos módulos PWM del PIC 18F4550 se encuentran activos, como este PIC tiene la disponibilidad de

escoger de dos posibilidades, el pin de salida del módulo 2, puede ser el pin RC1 o el pin RB3, en este caso

se ha escogido usar el pin RC1 mediante la configuración del registro CCP2CON del PIC (ver datasheet del

PIC). Pues bien lo que se hace usar la conversión A/D y el dato del registro ADRESH es cargado en el

registro CCPR1L para el módulo 1 del PWM, y el segundo módulo PWM usa el valor leído del serial del PIC.

Interfaz Serial: Esta parte del programa es muy importante, pues hay que tener claro que cuando se

ejecuta la instrucción SERIN, es como si el PIC se colgase, pues el programa no sale de esta instrucción

hasta que el puerto serial del PIC no haya recibido alguna clase de dato, razón por la cual, PARA USAR ESTE PROGRAMA DEMOSTRATIVO ES ABSOLUTAMENTE NECESARIO QUE EL PIC DE ESTA TARJETA DE

Page 12: Pic Abview

12

ADQUISISCIÓN DE DATOS ESTÉ RECIBIENDO DATOS POR EL PUERTO SERIAL, PARA SIMULAR ESTO SE PUEDE USAR OTRO PIC QUE LE ENVÍE LOS DATOS MEDIANTE LA INTERFAZ RS232.

Interfaz USB: La instrucción gosub DoUSBIN, se encarga de que el PIC vaya al bucle para enviar los datos

del bufer USB al exterior. Dependiendo del los valores que se tengan en la sección de Configuración USB, se puede enviar y/o recibir hasta 64 bytes como máximo, es decir que la instrucción:

“USBBufferSizeTX CON 3”, permite transmitir 3 bytes, “USBBufferSizeRX CON 2”, permite recibir

dos bytes, y la instrucción “USBBufferSizeMax con 4”, indica el máximo de bytes que manejará a la vez el

buffer USB tanto en la transmisión como en la recepción. Así, para cargar un dato en el buffer USB

tenemos: “USBbuffer[0]=ADRESH”, la cual quiere decir que el valor de ADDRESH se cargará en el byte 0 a

enviarse por el buffer USB, y la sentencia “CCPR1L= USBbuffer[0]”, se usa para que el valor recibido por el

byte 0 del buffer USB sea cargado en el registro CCPR1L.

La parte de la medición USB (subrutina MEDIR:), usa una pausa de 10ms para estabilizar el conversor A/D,

luego se enciende el conversor y solo si la conversión ha terminado de realizarse, se regresa a la parte

principal para continuar con el programa.

Programa LABVIEW

1. Este programa de LabVIEW tiene dos partes principales. La parte CLAVE es la encargada de enviar un

dato, mediante el puerto USB, al PIC para que este de paso al funcionamiento principal de su

programa. Como el programa del PIC está configurado para usar dos bytes de recepción, por lo que

justamente se envían 2 bytes, siendo el segundo el que envía un valor decimal de 1, y por el cual el PIC

se queda esperando para empezar con la conversión A/D y a comunicarse tanto con la PC como con la

interfaz serial.

2. La segunda parte principal es la encargada de recibir los datos usando el puerto USB. Usa una

configuración en la que se espera por un evento dentro de un tiempo de espera t, si no se recibe

ningún dato LabVIEW lanzará un error, y todo quedará estático, por eso hay que asegurarse de que

todas las interface del PIC estén funcionando. Como en el programa del PIC se transmiten 3 bytes hacia

la PC, precisamente tendremos un vector o arreglo de 3 bytes (cable azul), al cual lo debemos

descomponer para obtener de forma individual los datos recibidos.

3. Lo que se pretende es simular un voltímetro digital de 0 a 5V usando la conversión analógica digital, y

presentar los datos usando un Waveform Chart como si fuese un osciloscopio. Además el dato que el

PIC recibe de la interfaz serial aquí se lo muestra a través de un indicador Gauge.

4. Los bytes son recibidos en el mismo sentido en el que se enviaron desde el PIC, es decir que si desde el

PIC se cargo al byte cero con ADRESH, el byte 1 con ADRESL y el byte 2 con el valor recibido del puerto

serial del PIC, aquí tendremos el mismo orden en la recepción. Como el programa del PIC usa

justificación a la izquierda para el ADC, ADRESH tiene los 8 bits más significativos de la conversión, por

lo que al byte alto se lo multiplica por 4 para tener 255*4=1000, y al byte bajo se lo divide para 64 para

tener un valor de 4 (valor máximo) en lugar de 192 (valor máximo recibido del byte 2). Al sumar estos

dos resultados tenemos un valor de 0 a 1024, lo multiplicamos por 5, y luego dividimos para 1000 y

tenemos un voltímetro digital de 0 a 5,12 V.

5. El vector recibido tiene una representación Unsgined 8 (U8 - valor de 0 a 255), por lo que primero se lo

convierte a U16 para poder multiplicar el dato y más adelante se transforma al dato en uno tipo

double, para tener los decimales.

Page 13: Pic Abview

13

SUGERENCIAS

• Se pueden usar todos los canales analógicos/digitales del microcontrolador al mismo tiempo; y si

es necesario cambiar la posición del módulo 2 de PWM del PORT C al PORT B (ver datasheet).

• Se pueden obtener mejores resultados si analizan el uso de los comandos SERIN, SERIN2,

SEROUT2, HSERIN, HSEROUT para la transmisión serial.

• La comunicación USB en LABVVIEW, que se ha propuesto en el ejemplo, se da a través de procesos

de petición e interrupción del puerto USB, es el método que han sugerido programadores de la NI,

sin embargo, pueden buscar mejores alternativas por su cuenta.

• En este tipo de comunicación USB hay que tomar en cuenta que la inserción de tiempos de espera,

pueden hacer que colapse el programa.

• Siempre con la ayuda de Measurement & Automation, verificar que el nombre del recurso USB sea

aquel con el que se guardó la primera vez al instalarlo (si se desea se puede modificar).

• En LABVIEW el nombre del recurso USB siempre debe ser configurado como USB raw (ver videos).

• (Para mayor información sobre otras posibles formas de usar los Vis USB de LabVIEW por favor

contactarse con NI en Ecuador High Lights)

El video Funcionamiento Tiempo Real, muestra que la placa funciona perfectamente junto con estos

programas.

J&A ELECTRÓNICA CUENCA – ECUADOR 099757349 [email protected]

Page 14: Pic Abview

14

ANEXO1: Diagrama del circuito usado para probar tarjeta de adquisición de datos