Enunciado 2C

Anuncio
Escuela Politécnica Superior de Elche
4º Ingeniería Industrial
EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS
2º Parte: Microcontroladores + Instrumentación
Nombre:
______________________________________________________________________
19 de noviembre de 2007
PROBLEMA 1 (2 puntos)
El contenido de la memoria de programa del PIC16F84A a partir de la posición
0000h es el siguiente:
•
•
Deduce con ayuda del manual el programa allí almacenado.
Si el programa anterior se ejecuta sobre un microcontrolador con el conexionado que
muestra la figura 1, ¿qué carácter aparecerá en el display 7 segmentos si en las líneas de
PORTA se introduce el valor “00000100”?
1
a
b
c
d
e
f
g
Figura 1. Microcontrolador gobernando un display 7 segmentos
Figura 2. Display 7 segmentos
PROBLEMA 2 (2 puntos)
Escribe un programa para el PIC16F84A, que realice la siguiente tarea:
“Un led conectado a la línea 0 del PuertoB se enciende durante 500ms y
se apaga durante otros 500ms.”
Puedes realizar la temporización como quieras, bien utilizando el sistema Timer
(con o sin interrupciones) o bien mediante temporización por software.
2
PROBLEMA 3 (2 puntos)
Si el siguiente programa se ejecuta sobre un PIC16F84A, con un reloj de 4MHz, ¿qué ocurrirá?
Justifica tu respuesta mediante la interpretación del programa, indicando que función realiza
cada instrucción o bloque de instrucciones (No se valorará la descripción de cada instrucción
por separado).
; ZONA DE DATOS ****** ****************************************************************
__CONFIG
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK
0x0C
ApuntadorFrecuencia
Semiperiodo
ENDC
TMR0_Carga50us
EQU
-d'42'
NumeroFrec
EQU
d'8'
#DEFINE Salida PORTB,3
#DEFINE Pulsador PORTB,7
; El semiperiodo patrón va a ser de 50 µs.
; Ocho posibles frecuencias .
; ZONA DE CÓDIGOS ********************************************************************
ORG
goto
ORG
goto
0
Inicio
4
ServicioInterrupcion
; Subrutina "CargaContador" ------------------------------------------------------------CargaContador
addwf
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
PCL,F
.1
.2
.5
.10
.20
.50
.100
.200
; Subrutina "C argaMensaje" ------------------------------------------------------------CargaMensaje
addwf
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
PCL,F
Mensaje10kHz
Mensaje5kHz
Mensaje2kHz
Mensaje1kHz
Mensaje500Hz
Mensaje200Hz
Mensaje100Hz
Mensaje50Hz
; Subrutina "Mensajes" -----------------------------------------------------------------;
Mensajes
addwf
PCL,F
MensajeFrecuencia
DT "Frec.: ", 0x00
Mensaje10kHz
DT "10 kHz. ", 0x00
Mensaje5kHz
DT "5 kHz. ", 0x00
Mensaje2kHz
DT "2 kHz. ", 0x00
Mensaje1kHz
DT "1 kHz. ", 0x00
Mensaje500Hz
DT "500 Hz. ", 0x00
Mensaje200Hz
DT "200 Hz. ", 0x00
Mensaje100Hz
DT "100 Hz. ", 0x00
Mensaje50Hz
DT "50 Hz. ", 0x00
3
; Programa Principal -----------------------------------------------------------------Inicio
call
bsf
bcf
bsf
movlw
movwf
bcf
call
movlw
movwf
movlw
movwf
Principal
goto
LCD_Inicializa
STATUS,RP0
Salida
Pulsador
b'00001000'
OPTION_REG
STATUS,RP0
EstadoInicial
TMR0_Carga50us
TMR0
b'10101000'
INTCON
; Visualiza la frecuencia inicial.
Principal
; Subrutina "ServicioInterrupcion" -----------------------------------------------------;
ServicioInterrupcion
btfsc
INTCON,T0IF
call
Timer0_Interrupcion
btfsc
INTCON,RBIF
call
Pulsador_Interrupcion
bcf
INTCON,T0IF
bcf
INTCON,RBIF
retfie
; Subrutina "Pulsador_Interrupcion" ----------------------------------------------------;
;
Pulsador_Interrupcion
call
Retardo_20ms
btfsc
Pulsador
goto
Fin_PulsadorInterrupcion
incf
ApuntadorFrecuencia,F
; Apunta a la siguiente frecuencia.
movlw
NumeroFrec
; Va a comprobar si ha llegado al máximo.
subwf
ApuntadorFrecuencia,W
; (W)=(ApuntadorFrecuencia) -NumeroFrec
btfsc
STATUS,C
; ¿Ha llegado a su máximo?
EstadoInicial
clrf
ApuntadorFrecuencia
; Si llega al máximo l o inicializa.
movf
ApuntadorFrecuencia,W
; Va a cargar el valor del factor de
call
CargaContador
; multiplicación del semiperiodo según la
movwf
Semiperiodo
; tabla.
movwf
Timer0_ContadorA
call
LCD_Linea1
movlw
MensajeFrecuencia
call
LCD_Mensaje
movf
ApuntadorFrecuencia,W
call
CargaMensaje
call
LCD_Mensaje
EsperaDejePulsar
btfss
Pulsador
goto
EsperaDejePulsar
Fin_PulsadorInterrupcion
return
; Subrutina "Timer0_Interrupcion" ------------------------------------------------------;
CBLOCK
Timer0_ContadorA
ENDC
Timer0_Interrupcion
movlw
TMR0_Carga50us
movwf
TMR0
decfsz Timer0_ContadorA,F
goto
Fin_Timer0_Interrupcion
movf
Semiperiodo,W
movwf
Timer0_ContadorA
btfsc
Salida
goto
EstabaAlto
EstabaBajo
bsf
Salida
goto
Fin_Timer0_Interrupcion
EstabaAlto
bcf
Salida
Fin_Timer0_Interrupcion
return
INCLUDE
INCLUDE
INCLUDE
END
<LCD_MENS.INC>
<LCD_4BIT.INC>
<RETARDOS.INC>
4
PROBLEMA 4
(1.5 puntos)
Un sensor potenciométrico de valor nominal 80 Ω , se encuentra conectado
remotamente a un medidor, que se puede modelar como una impedancia
resistiva de 400 kΩ, y a una fuente de alimentación de 12V mediante un
esquema de 3 hilos tal como se muestra en la figura 3 .
SENSOR
POTENCIOMÉTRICO
Rcable
REMOTO
R=70 Ω
R2=R·(1-x)
Alimentación
Vi
Rcable
R1=R·x
Vo L
MEDIDOR
Rcable
resistencia de los cables de
conexión
150 m
Figura 3. Circuito de medida a 3 hilos
a) Calculad la tensión en el medidor en el caso ideal que la resistencia del
cableado sea despreciable (Rcable=0) .
b) Calculad la tensión en el medidor si la resistividad de los cables es 40Ω/km y
el sensor se encuentra a unos 150 m.
c) Calculad la tensión en el medidor, considerando la resistencia de los cables,
utilizando un esquema de 4 hilos (Figura 4).
d)¿Cuál de los dos esquemas eléctricos proporciona una medida de tensión
más próxima al valor ideal?¿Cómo se podría conseguir el valor de tensión ideal
a partir de los dos esquemas anteriores?
5
SENSOR
POTENCIOMÉTRICO
REMOTO
Rcable
R2=R·(1-x)
Alimentación
Rcable
R1 =R·x
Vi
Vo L
M EDIDOR
Rcable
Rcable
resistencia de los cables de
conexión
Figura 4. Circuito de medida a 4 hilos
PROBLEMA 5 (2.5 puntos)
Diseña un sistema de medida de temperatura entre 10 y 50ºC con un error
inferior a 1ºC, utilizando una NTC con los siguientes datos: B=4600K,
R0=100kΩ @ 25ºC y δ=10mW/ºC.
6
Descargar