3. 3
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.
5. 5
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.
7. 7
LabView
Pasos para programar:
Se desarrolla el
algoritmo de
programación en el
computador en un
ID o software de
desarrollo, para
microcontroladores.
Compilar código
realizado y
generamos el
archivo “.HEX”.
Programar el
microcontrolador
importando el
archivo “.HEX”.
14. 14
LabView
Uso de Botón y Leds:
PIC16F886
Leds PuertoBBotón, E.3
BOTONERA
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.
15. 15
LabView
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.
16. 16
LabView
Código de Programación:
program ejerccio1
SYMBOL BOTON=PORTE.3
DIM VALOR AS BYTE
MAIN:
'----------------CONFIG IN-OUT----------------
' Registro PUERTO A
TRISA = 0X00 '%00000000=0' PORTA -> out
' Registro PUERTO B
TRISB = 0X00 ' PORTB -> out para los leds
' Registro PUERTO C
TRISC = 0X00 ' PORTB -> out para los leds
' Registro PUERTO E
TRISE = %00001000 ' PORTE.3 <-in
'----------------CONFIG IN -> DIG ó ANLG-----
' Seleccion de registro analogico. 1 analogico, 0
digitales
ANSEL = 0X00 ' AN<7:0> AN(_,_,_,4,3,2,1,0)
ANSELH = 0X00 ' AN<13:8> AN(_,13,12,11,10,9,8)
'---------------- SETEAR LAS SALIDAS---------
PORTB=%10101010
delay_ms(300)
PORTB=%01010101
delay_ms(300)
PORTB=0
'-----------------SET DE VARIABLES-----------
VALOR=0
WHILE(1)
IF(BOTON =0) THEN 'SI PRESIONO EL BOTON
MCLR
PORTB= NOT PORTB
WHILE(BOTON=0)WEND 'ESPERO QUE SUELTE
EL BOTON MCLR
END IF
WEND
END.
17. 17
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.
19. 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 PuertoBBotón, E.3
LEDS=CONTADOR+1
20. 20
LabView
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
'----------SYMBOL.----------
SYMBOL LED=PORTB
SYMBOL BTN=PORTE.3
'-----CREAR VARIABLES-------
DIM CNT AS BYTE
main:
'------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>
'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0, An13->B5
'-----SET DE VARIABLES----
CNT=0
while (1)
LED=CNT
INC(CNT)
DELAY_MS(200)
wend
end.
21. 21
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.
23. 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.
Leds PuertoBBotón, E.3
PIC16F886
BOTONERA
LEDS=CONTADOR+1
24. 24
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.
25. 25
LabView
Código de Programación:
program leds
'----------SYMBOL.----------
SYMBOL LED=PORTB
SYMBOL BOTON=PORTE.3
'-----CREAR VARIABLES-------
DIM CNT,VALOR AS BYTE
main:
'------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>
'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0,
An13->B5
'-----SET DE VARIABLES----
CNT=0
while (1)
IF(BOTON =0) THEN 'SI PRESIONO EL BOTON MCLR
INC(VALOR) 'INCREMENTO VALOR=VALOR+1
PORTB=VALOR 'ENVIO EL VALOR DE LA
VARIABLE A LOS LED-PORTB
WHILE(BOTON=0)WEND 'ESPERO QUE SUELTE
EL BOTON MCLR
END IF
wend
end.
26. 26
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.
28. 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.
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.
Front Panel:
30. 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”.
33. 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.
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.
Front Panel:
35. 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.
38. 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.
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.
Front Panel:
40. 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”.
43. 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.
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.
Pasos para configurar el uc:
46. 46
LabView
Código de Programación:
program ejemplo2
' Declarations section
'1)----------SYMBOL.----------
SYMBOL LEDS=PORTB
'2)-----CREAR Y SET VARIABLES-------
DIM CNT AS BYTE
DIM txt as string[3]
CNT=0
'3)------CONFIG IN (1)- OUT (0)------
TRISA=%00000001 '<7,6,5,4,3,2,1,0>
TRISB=%00000000 'Leds -> OUT
TRISC=%00000000 '<7,6,5,4,3,2,1,0>
TRISE=%00000000 'RE3 -> IN BOTONERA
'4)--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
'5)--- COMUNICACIÓN-------
UART1_Init(9600)
' Initialize UART module at 9600 bps
Delay_ms(50)
main:
' Main program
while(1)
inc(CNT)
LEDS=CNT
ByteToStr(CNT, txt)
UART1_Write_text(txt)' Dato
delay_ms(500)
wend
end.
47. 47
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.
48. Pruebas Hardware:
48
LabView
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.
51. 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:
53. Pruebas Software:
53
LabView
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.
55. Pruebas Hardware y Software:
55
LabView
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.
56. Pruebas Hardware y Software:
56
LabView
USB
OJO: USB1 real es
del módulo.
59. 59
LabView
Código de Programación:
program led_serial
'----------SYMBOL.----------
SYMBOL LED=PORTB
SYMBOL BTN=PORTE.3
'-----CREAR VARIABLES-------
main: '++++++++++++++++++++++++++++
'------CONFIG IN (1)- OUT (0)------
TRISA=%00000000
TRISB=%00000000 'Leds -> OUT
TRISC=%10000000
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>
'An8->B2, An9->B3, An10->B1, An11->B4, An12->B0,
An13->B5
'-----SET DE VARIABLES----
'------COMUNICACION SERIAL----
UART1_Init(9600)
PORTB=%10101010
DELAY_MS(200)
PORTB=%01010101
DELAY_MS(200)
while (1)
if BTN =0 THEN
WHILE (BTN=0)
UART1_Write(1)
LED=255
WEND
UART1_Write(0)
LED=0
END IF
wend
end.
60. 60
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.