Está en la página 1de 65

MICROCONTROLADORES

& LABVIEW

CONTENIDO:
Comunicación Serial
Prácticas
1
LabView
Comunicación Serial:
Hardware

2
LabView
MICROCONTROLADOR - UC:
El corazón de todo módulo programable es el microcontrolador (el PIC16F886
para los ejemplos que mostraremos), por tanto debemos considerar lo
importante de conocer las pines de conexión del microcontrolador:
- Programación serial ICSP: MCLR (Pin1), ICSPDAT (Pin28), ICSPCLK (Pin27), VSS
(GND), VDD (Vcc).
- Entradas analógicas: AN0, AN1, AN2, AN3, AN4, AN8, AN9, AN10, AN11, AN12,
AN13.
- Modulación de Ancho de Pulso (PWM): CCP1 y CCP2.
- Comunicación serial: TX y RX.

3
LabView
MICROCONTROLADOR - UC:

Master Clear
ICSP Programación Serial en Circuito.

Entradas
Analógicas VCC
GND

Com.
Serial
PWM
4
LabView
Pasos para configurar el uc:
Para programar el microcontrolador debemos saber configurar los registros, entre
los cuales destacan:
- Registro TRIS: Este registro de 8 bits nos permite configurar los puertos
(A,B,C,E) del microcontrolador pin a pin como entrada o salida.
- Registro ANSEL y ANSELH: Nos permite configurar como entradas digitales ó
analógicas de los pines que poseen la habilidad de digitalizar entradas
analógicas.
- Registro PORT: Nos permite obtener el estado lógico booleano de las entradas
digitales, sin embargo a los pines que son salido nos permite poner un estado
lógico booleano.

5
LabView
Pasos para configurar el uc:

MICROCONTROLADOR

PUERTOS:
TRISX=(7,6,5,4,3,2,1,0)
X=A,B,C,E.
1->In. 0->Out.

ENTRADAS:
ANSEL=(_,_,_,4,3,2,1,0) SALIDAS:
ANSELH=(_,_,13,12,11,10 PORTX=(7,6,5,4,3,2,1,0)
,9,8) 1, 0.
1->Anlg. 0->Dig.
6
LabView
Pasos para programar:

Se desarrolla el
algoritmo de
Compilar código Programar el
programación en el
realizado y microcontrolador
computador en un
generamos el importando el
ID o software de
archivo “.HEX”. archivo “.HEX”.
desarrollo, para
microcontroladores.

7
LabView
Comunicación Serial:
Software

8
LabView
Software:

9
LabView
VISA Configure Serial Port:

10
LabView
VISA Write:

VISA Read:

11
LabView
VISA Bytes at Serial Port:

12
LabView
PRÁCTICA 1:
Uso de Botón y Leds

RECURSOS: Código PIC

13
LabView
Uso de Botón y Leds:
Esta práctica nos enseñará el uso del botón para controlar el encendido y apagado de los
leds. Usaremos el botón para controlar el cambio de estado lógico de las salidas que
encienden o apagan los leds, adicional a ello deberá tener un anti rebote que evite cambiar
incontrolablemente el estado de la salida digital. Recordar que los leds están conectados por
hardware al puerto b.

BOTONERA

PIC16F886

LabView LEDS 14
Botón, E.3 Leds PuertoB
Código de Programación:
1- Creamos symbol de el botón usado, el mismo que está conectado por
hardware al puerto E.3.
2- Empezamos configurando el registro TRISB como salida, además como entrada
el registro TRISE.3.
3- Usamos el registro TRISB para asignar valor booleanos a las salidas del puerto
B donde están conectados los leds por hardware.
4- Usamos la condición IF para validar el cambio de estado del botón, adicional a
ello usaremos el bucle WHILE para programar el anti rebote.

15
LabView
Código de Programación:
program ejerccio1
'---------------- SETEAR LAS SALIDAS---------
PORTB=%10101010
SYMBOL BOTON=PORTE.3
delay_ms(300)
DIM VALOR AS BYTE
PORTB=%01010101
delay_ms(300)
MAIN:
PORTB=0
'----------------CONFIG IN-OUT----------------
'-----------------SET DE VARIABLES-----------
' Registro PUERTO A
VALOR=0
TRISA = 0X00 '%00000000=0' PORTA -> out
' Registro PUERTO B
WHILE(1)
TRISB = 0X00 ' PORTB -> out para los leds
IF(BOTON =0) THEN 'SI PRESIONO EL BOTON
' Registro PUERTO C
MCLR
TRISC = 0X00 ' PORTB -> out para los leds
PORTB= NOT PORTB
' Registro PUERTO E
WHILE(BOTON=0)WEND 'ESPERO QUE SUELTE
TRISE = %00001000 ' PORTE.3 <-in
EL BOTON MCLR
'----------------CONFIG IN -> DIG ó ANLG-----
END IF
' Seleccion de registro analogico. 1 analogico, 0
digitales
WEND
ANSEL = 0X00 ' AN<7:0> AN(_,_,_,4,3,2,1,0)
END.
ANSELH = 0X00 ' AN<13:8> AN(_,13,12,11,10,9,8)

16
LabView
Cargar el Firmware:
1.- Conectamos el programador de microcontroladores al módulo de desarrollo (tarjeta
programable).
2.- Conectamos el hardware programador al computador y Haciendo uso del software
del programador de microcontroladores, luego importamos el archivo “.HEX”.
3.- Procedemos a programar el módulo de desarrollo.

17
LabView
PRÁCTICA 2:
Uso Contador y Leds

RECURSOS: Código PIC

18
LabView
Uso Contador y Leds:
Esta práctica nos enseñará el uso de variables para controlar la información binaria que se
muestra en los leds. Usaremos la variable como contador y para incrementar pausadamente
usaremos un delay de 200 ms. Recordar que los leds están conectados por hardware al
puerto b.

PIC16F886

LEDS=CONTADOR+1

LabView Botón, E.3 Leds PuertoB


Código de Programación:
1- Creamos symbol para el puerto b, que es donde están conectados los leds por hardware.
2- Creamos una variable tipo Byte llamada CNT.
3- Empezamos configurando el registro TRISB como salida.
4- Usaremos el symbol LED para asignar la varibale a las salidas de leds.
program leds '-----SET DE VARIABLES----
'----------SYMBOL.---------- CNT=0
SYMBOL LED=PORTB while (1)
SYMBOL BTN=PORTE.3 LED=CNT
'-----CREAR VARIABLES------- INC(CNT)
DIM CNT AS BYTE DELAY_MS(200)
wend
main: end.
'------CONFIG IN (1)- OUT (0)------
TRISA=%00000000
TRISB=%00000000 'Leds -> OUT
TRISC=%00000000
TRISE=%00001000 'RE3 -> IN BOTONERA
'--CONFIG IN: DIG (0)- ANALOG (1)---
ANSEL= %00000000 '<_,_,_,An4,An3,An2,An1,An0>
'An0->A0, An1->A1, An2->A2, An3->A3, An4->A5
ANSELH= %00000000 '<_,_,An13,An12,An11,An10,An9,An8>
20
LabView 'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0, An13->B5
Cargar el Firmware:
1.- Conectamos el programador de microcontroladores al módulo de desarrollo
(tarjeta programable).
2.- Conectamos el hardware programador al computador y Haciendo uso del software
del programador de microcontroladores, luego importamos el archivo “.HEX”.
3.- Procedemos a programar el módulo de desarrollo.

21
LabView
PRÁCTICA 3:
Uso Botón, Contador y Leds

RECURSOS: Código PIC

22
LabView
Uso Contador y Leds:
Esta práctica nos enseñará el uso del botón para manipular una variable, para controlar el
encendido de los leds. Usaremos el botón para incrementar la variable usándola así como
un contador. Recordar que los leds están conectados por hardware al puerto b.

BOTONERA

PIC16F886

LEDS=CONTADOR+1
Botón, E.3 Leds PuertoB
LabView
Código de Programación:
1- Creamos un symbol de el botón usado, el mismo que está conectado por
hardware al puerto E.3.
2- Creamos un symbol para el puerto b, que es donde están conectados los leds por
hardware.
3- Creamos una variable tipo Byte llamada CNT.
4- Empezamos configurando el registro TRISB como salida, además como entrada el
registro TRISE.3.
5- La condición IF nos permite validar el cambio de estado del botón, adicional a ello
usaremos el bucle WHILE para programar el anti rebote y evitar así que incremente
la variable más de una vez.
6- Usamos la función INC para incrementar la variable en una unidad.
7- El registro TRISB nos permite asignar un valor a las salidas del puerto B donde
están conectados los leds por hardware.

24
LabView
Código de Programación:
program leds
'----------SYMBOL.---------- '-----SET DE VARIABLES----
SYMBOL LED=PORTB CNT=0
SYMBOL BOTON=PORTE.3 while (1)
'-----CREAR VARIABLES------- IF(BOTON =0) THEN 'SI PRESIONO EL BOTON MCLR
DIM CNT,VALOR AS BYTE INC(VALOR) 'INCREMENTO VALOR=VALOR+1
PORTB=VALOR 'ENVIO EL VALOR DE LA
main: VARIABLE A LOS LED-PORTB
'------CONFIG IN (1)- OUT (0)------ WHILE(BOTON=0)WEND 'ESPERO QUE SUELTE
TRISA=%00000000 EL BOTON MCLR
TRISB=%00000000 'Leds -> OUT END IF
TRISC=%00000000 wend
TRISE=%00001000 'RE3 -> IN BOTONERA end.
'--CONFIG IN: DIG (0)- ANALOG (1)---
ANSEL= %00000000 '<_,_,_,An4,An3,An2,An1,An0>
'An0->A0, An1->A1, An2->A2, An3->A3, An4->A5
ANSELH= %00000000
'<_,_,An13,An12,An11,An10,An9,An8>
'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0,
An13->B5
25
LabView
Cargar el Firmware:
1.- Conectamos el programador de microcontroladores al módulo de desarrollo
(tarjeta programable).
2.- Conectamos el hardware programador al computador y Haciendo uso del software
del programador de microcontroladores, luego importamos el archivo “.HEX”.
3.- Procedemos a programar el módulo de desarrollo.

26
LabView
PRÁCTICA 4:
Ejemplo Slide-Meter

RECURSOS: Código LabView

27
LabView
Slide-Meter:
Diseñar un VI que permita desde el panel frontal ingresar un valor numérico de 8 bits sin
signo con un slide horizontal y que permita visualizar este valor en un Meter.

Front Panel:
En este ejercicio aprendemos a realizar una interfaz. En el panel frontal usaremos un
control numérico para generar un valor numérico y también un indicador numérico para
visualizar dicho valor. Además usaremos un control booleano para dar stop al programa.

LabView
Front Panel:

VI

LabView
Block Diagram:
En el diagrama de bloques inicializaremos el indicador numérico con una constante
cero. Usaremos un “While Loop” como una lazo condicional que dependerá del esta
booleano del control “Stop”. Dentro del lazo condicional conectaremos el control
numérico a la variable local del indicador numérico “Meter”.

LabView
Block Diagram:

LabView
PRÁCTICA 5:
Ejemplo Boolean, Char y Case
Structure
RECURSOS: Código LabView

32
LabView
Boolean, Char y Case Structure:
Diseñar un VI que permita desde un control booleano poner en un indicador numérico
dos posibles valores (0 ó 10) y en un indicador de texto (VERDADERO - FALSO). Usar la
estructura While Loop.

Front Panel:
En este ejercicio aprendemos a realizar una interfaz con control booleano en indicador
numérico y booleano. En el panel frontal usaremos un control booleano para generar
dos posibles valores numéricos que veremos en el visualizador numérico, usaremos
también un indicador de texto, además el estado booleano del botón se verá en un led
indicador booleano. Además usaremos un control Boolean para dar stop al programa.

LabView
Front Panel:

CASE
STRUCTURE

LabView
Block Diagram:
Usaremos un “While Loop” como una lazo condicional que dependerá del esta
booleano del control “Stop”. Dentro del lazo condicional usaremos un selector
condicional “Case Structure”, este selector condicional estará controlado por un botón
booleano. En la condición verdadera se asigna el texto “VERDADERO” en el indicador
de texto y además el valor numérico de 10 en el NumIndicator. En la condición falsa se
asigna el texto “FALSO” en el indicador de texto y además el valor numérico de 0 en el
NumIndicator.

LabView
Block Diagram:

LabView
PRÁCTICA 6:
Ejemplo Numeric,
Comparison, Boolean y Case
Structure
RECURSOS: Código LabView

37
LabView
Boolean, Char y Case Structure:
Diseñar un VI que permita desde el panel frontal ingresar un valor numérico de 8 bits sin
signo con un slide vertical y que permita visualizar este valor incrementado en 5
unidades en un Meter y en un indicador numérico, si el valor incrementado es mayor o
igual a 15 se activará un indicador booleano y en un Gauge se mostrará el valor de 100,
caso contrario 300. Si el valor incrementado en 5 unidades es menor o igual a 20
encenderá otro indicador booleano. Usar la estructura While Loop.

Front Panel:
En este ejercicio aprendemos a realizar una interfaz con un control numérico y además
indicadores numéricos y booleano. En el panel frontal usaremos un control numérico
para generar un valor numérico que se validará con operadores relacionales para activar
los indicadores booleanos, se podrán usar operadores aritméticos para representar
valores en los indicadores numéricos. Además usaremos un control booleano para dar
stop al programa.

LabView
Front Panel:

CASE
STRUCTURE

LabView
Block Diagram:
En el diagrama de bloques usaremos un “While Loop” como una lazo condicional que
dependerá del esta booleano del control “Stop”. Usaremos el operador aritmético de
suma para incrementar en dos unidades el valor del Slide cuyo resultado se mostrará
en “Meter” y además se comparará para con el resultado booleano controlar el “Case
Structure”, en cuyo caso falso se asignará el valor de 300 en el indicador numércio
“nombre” y en caso falso el valor de 100. Dentro del lazo condicional conectaremos el
control numérico a la variable local del indicador numérico “Meter”.

LabView
Block Diagram:

LabView
PRÁCTICA 7:
Ejemplo Envío de datos por
comunicación serial
RECURSOS: Código LabView Código PIC

42
LabView
Envío de datos por comunicación serial:
Programar el módulo MEI&T04 para que envíe por puerto serial el conteo ascendente de
una variable de 8 bits (0-255), el envío se realizará cada 500 milisegundos. Monitorear el
dato recibido en código ASCII por el AccesPort.

Pasos para configurar el uc:


Para programar el microcontrolador debemos saber configurar los registros, entre los
cuales destacan:
- Registro TRIS: Este registro de 8 bits nos permite configurar los puertos (A,B,C,E) del
microcontrolador pin a pin como entrada o salida.
- Registro ANSEL y ANSELH: Nos permite configurar como entradas digitales ó analógicas
de los pines que poseen la habilidad de digitalizar entradas analógicas.
- Registro PORT: Nos permite obtener el estado lógico booleano de las entradas
digitales, sin embargo a los pines que son salido nos permite poner un estado lógico
booleano.

LabView
Pasos para configurar el uc:

MICROCONTROLADOR

PUERTOS:
TRISX=(7,6,5,4,3,2,1,0)
X=A,B,C,E.
1->In. 0->Out.

ENTRADAS:
ANSEL=(_,_,_,4,3,2,1,0) SALIDAS:
ANSELH=(_,_,13,12,11,10 PORTX=(7,6,5,4,3,2,1,0)
,9,8) 1, 0.
1->Anlg. 0->Dig.
44
LabView
Hardware:

USB

UC 16F886
INTERFAZ USB

45
LabView
Código de Programación:
program ejemplo2
'5)--- COMUNICACIÓN-------
' Declarations section
UART1_Init(9600)
'1)----------SYMBOL.----------
' Initialize UART module at 9600 bps
SYMBOL LEDS=PORTB
Delay_ms(50)
'2)-----CREAR Y SET VARIABLES-------
DIM CNT AS BYTE
main:
DIM txt as string[3]
' Main program
CNT=0
while(1)
'3)------CONFIG IN (1)- OUT (0)------
inc(CNT)
TRISA=%00000001 '<7,6,5,4,3,2,1,0>
LEDS=CNT
TRISB=%00000000 'Leds -> OUT
ByteToStr(CNT, txt)
TRISC=%00000000 '<7,6,5,4,3,2,1,0>
UART1_Write_text(txt)' Dato
TRISE=%00000000 'RE3 -> IN BOTONERA
delay_ms(500)
'4)--CONFIG IN: DIG (0)- ANALOG (1)---
wend
ANSEL= %00000000 '<_,_,_,An4,An3,An2,An1,An0>
end.
'An0->A0, An1->A1, An2->A2, An3->A3, An4->A5
ANSELH= %00000000
'<_,_,An13,An12,An11,An10,An9,An8>
'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0,
An13->B5
46
LabView
Cargar el Firmware:
1.- Conectamos el programador de microcontroladores al módulo de desarrollo
(tarjeta programable).
2.- Conectamos el hardware programador al computador y Haciendo uso del software
del programador de microcontroladores, luego importamos el archivo “.HEX”.
3.- Procedemos a programar el módulo de desarrollo.

47
LabView
Pruebas Hardware:
Es importante que luego de la programación del código con comunicación serial
UART debemos cargar el código en el módulo de entrenamiento. Una buena
práctica de comprobación de que el código que usa comunicación serial que está en
le módulo de entrenamiento funciona, es conectarla al computador y verificar la
comunicación serial con tramas de comunicación, para lo cual usaremos en
AccesPort que es un Hiperterminal.

48
LabView
Pruebas Hardware:

USB

USB a Serial.

ACCES PORT – HIPERTERMINAL

49
LabView
PRÁCTICA 8:
Ejemplo Recepción de Datos
por Comunicación Serial
RECURSOS: Código LabView Código PIC

50
LabView
Recepción de Datos por Comunicación Serial:
Crear un VI en Labview que permita monitorear el dato recibido en código ASCII por el
AccesPort.

Front Panel:

LabView
Block Diagram:

LabView
Pruebas Software:
De igual forma que el hardware usaremos el Acces port para verificar las tramas
de comunicación con el Software Labview, pero debido a que ambos software
están en el computador debemos usar el Virtual Serial Por Emulator para crear
dos puertos de comunicación serial virtual y hacer las pruebas de la comunicación
serial.

53
LabView
Pruebas Software:

LABVIEW

VIRTUAL
VIRTUAL SERIAL PORT EMULATOR
SERIAL
PORT

VIRTUAL
SERIAL
PORT OJO: USB2 y USB3 virtuales deben
ACCES PORT – HIPERTERMINAL Ser diferentes a USB1 real.

54
LabView
Pruebas Hardware y Software:
Finalmente luego de las pruebas independientes tanto de hardware y software,
conectamos con seguridad el hardware del módulo de entrenamiento MEI&T04
con labview, haciendo para ello la conexión con el puerto USB el computador y el
micro USB del módulo de entrenamiento.

55
LabView
Pruebas Hardware y Software:

USB

OJO: USB1 real es


del módulo.

56
LabView
PRÁCTICA 9:
Ejemplo Manejo de Led Serial

RECURSOS: Código LabView Código PIC

57
LabView
Hardware:

USB

UC 16F886
INTERFAZ USB

58
LabView
Código de Programación:
program led_serial
'------COMUNICACION SERIAL----
'----------SYMBOL.----------
UART1_Init(9600)
SYMBOL LED=PORTB
PORTB=%10101010
SYMBOL BTN=PORTE.3
DELAY_MS(200)
'-----CREAR VARIABLES-------
PORTB=%01010101
DELAY_MS(200)
main: '++++++++++++++++++++++++++++
'------CONFIG IN (1)- OUT (0)------
while (1)
TRISA=%00000000
if BTN =0 THEN
TRISB=%00000000 'Leds -> OUT
WHILE (BTN=0)
TRISC=%10000000
UART1_Write(1)
TRISE=%00001000 'RE3 -> IN BOTONERA
LED=255
'--CONFIG IN: DIG (0)- ANALOG (1)---
WEND
ANSEL= %00000000 '<_,_,_,An4,An3,An2,An1,An0>
UART1_Write(0)
'An0->A0, An1->A1, An2->A2, An3->A3, An4->A5
LED=0
ANSELH= %00000000
END IF
'<_,_,An13,An12,An11,An10,An9,An8>
wend
'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0,
end.
An13->B5

'-----SET DE VARIABLES----
59
LabView
Cargar el Firmware:
1.- Conectamos el programador de microcontroladores al módulo de desarrollo
(tarjeta programable).
2.- Conectamos el hardware programador al computador y Haciendo uso del software
del programador de microcontroladores, luego importamos el archivo “.HEX”.
3.- Procedemos a programar el módulo de desarrollo.

60
LabView
Pruebas Hardware:

USB

USB a Serial.

ACCES PORT – HIPERTERMINAL

61
LabView
Front Panel:

LabView
Block Diagram:
Pruebas Software:

LABVIEW

VIRTUAL
VIRTUAL SERIAL PORT EMULATOR
SERIAL
PORT

VIRTUAL
SERIAL
PORT OJO: USB2 y USB3 virtuales deben
ACCES PORT – HIPERTERMINAL Ser diferentes a USB1 real.

64
LabView
Pruebas Hardware y Software:

USB

65
LabView

También podría gustarte