Você está na página 1de 14

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

1
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.

2
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).

3
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.

4
Lo mejor es ignorar este icono y se procede a abrir el programa VISA DRIVER DEVELOPMENT WIZARD que está
dentro de la carpeta de LabVIEW (Inicio->Todos
(Inicio los Programas->National
>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.

Fig6.. 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
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 puede
pued 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
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 Product ID en Measurement & Automation para trabajar con LabView.

6
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
en la figura.
ra. 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 cerrar Measurement & Automation.

Se abre LabVIEW 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.
Raw Esto se hace para
cada vez que el programa de LabVIEW manipule datos del PIC.

7
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:

8
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

9
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:

10
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

11
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.

12
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
andresortega_4387@hotmail.com

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

14

Você também pode gostar