Solucion 2C

Anuncio
Escuela Politécnica Superior de Elc he
4º Ingeniería Industrial
EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS
2º Parte: Microcontroladores + Instrumentación
Nombre:
______________________________________________________________________
1 de septiembre de 2005
Microcontroladores
CUESTION 1 (0.5 puntos)
En un PIC16F876 se desea que en su reinicialización se a pase a ejecutar un programa que comienza en la
dirección 10 de la memoria de programa. Indicar cómo se consigue.
SOLUCIÓN:
El PIC16F876 pertenece a la gama media, y en esta gama, el vector de reset (la posición de memoria de
programa a la que apunta el PC tras resetear) es la más baja, es decir la 0000. Luego en esa posición se
debe poner una instrucción de salto hacia donde queremos que comience el programa:
org 0x00
goto 0x0A
o bien,
org 0x00
goto 0x10
según se haya interpretado el número 10 del enunciado.
CUESTION 2 (0.5 puntos)
¿Qué instrucciones existen en la gama baja que no tiene la gama media? y, ¿cuáles son específicas de la
gama media y no de la gama baja?
SOLUCIÓN:
Gama baja -> OPTION y TRIS
Gama media -> RETURN, RETFIE, ADDLW Y SUBLW
1
PROBLEMA 1 (3 punto)
Confeccionad un programa en ensamblador para el PIC16F84A, suponiendo que se ejecutará sobre la
tarjeta MicroPICTrainer, que trate sobre el control de los leds conectados al puerto B desde los
interruptores conectados al puerto. En concreto, se desea que RB0 refleje el estado de RA0; RB1 el
complemento de RA0, RB2 tenga el valor de la suma lógica (OR) entre RA0 y RA1 y por último, RB3
tenga el valor de la multiplicación lógica (AND) entre RA0 y RA1.
SOLUCIÓN (A):
Una posible solución es extraer los bits RA0 y RA1 de PORTA a dos celdas de memoria de datos y,
posteriormente, realizar las operaciones mediante el uso de las instrucciones iorwf y andwf, que realizan
las funciones OR y AND con el contenido de dos bytes.
;Control de los leds RB0 y RB1 desde el interruptor RA0.
;RB0 refleja el estado de RA0
;RB1 el complemento de RA0
;RB2 es RA1 or RA0
;RB3 es RA1 and RA0
List
p=16F84
;Tipo de procesador
include"P16F84.INC" ;Definiciones de registros internos
PA0
PA1
PROD
SUM
Inicio
equ
equ
equ
equ
0x11
0x12
0x13
0x14
;aqui
;aqui
;aqui
;aqui
guardaré
guardaré
guardaré
guardaré
el
el
el
el
bit 0 de PORTA (RA0)
bit 1 de PORTA (RA1)
resultado de la operación
resultado de la operación
org
goto
0x00
Inicio
;Vector de Reset
org
0x05
;Salva el vector de interrupción
clrf
bsf
clrf
movlw
movwf
bcf
PORTB
STATUS,RP0
TRISB
b'00011111'
TRISA
STATUS,RP0
;Borra los latch de salida
;Selecciona banco 1
;Puerta B se configura como salida
"and"
"or"
;Puerta A se configura como entrada
;Selecciona banco 0
Loop
clrwdt
movf PORTA,W
andlw b'00000001'
movwf PA0
movf PORTA,W
andlw b'00000010'
movwf PA1
rrf PA1,F
btfsc PORTA,0
goto
RA0_es_1
bcf
PORTB,0
bsf
PORTB,1
call SUMA
call PRODUCTO
goto
Loop
;Refresca el WDT timer
;Mueve el contenido de PORTA a W
;Máscara para obtener RA0
;Copia RA0 a PA0 (RA0 es el bit 0 de PA0)
;Mueve el contenido de PORTA a W
;Máscara para obtener RA1
;Copia RA1 a PA1 (RA1 es el bit 1 de PA1)
;Rota a la drcha. PA1(ahora, RA1 es el bit 0 de PA1)
;RA0 = 1 ??
;Si RA0=1, salta a RA0_es_1
;Pone RB0 a 0 (RA0)
;Pone RB1 a 1 (complemento de RA0)
;Salto a la subrutina que hace RA1 or RA0
;Salto a la subrutina que hace RA1 and RA0
;Bucle sin fin
RA0_es_1
bsf
PORTB,0
bcf
PORTB,1
call SUMA
call PRODUCTO
goto
Loop
;Pone RB0 a 1 (RA0)
;Pone RB1 a 0 (complemento de RA0)
;Salto a la subrutina que hace RA1 or RA0
;Salto a la subrutina que hace RA1 and RA0
;Bucle sin fin
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUMA
movf PA0,W
;Copia PA0 a W
iorwf PA1,W
;RA0 or RA1
movwf SUM
;Salva el resultado en SUM
btfsc SUM,0
;SUM = 1??
goto SUM_es_1
;Si SUM=1, salta a SUM_es_1
bcf PORTB,2
;Pone RB2 a 0
2
return
;Fin subrutina
bsf PORTB,2
;Pone RB2 a 1
return
;Fin subrutina
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUM_es_1
PRODUCTO
movf PA0,W
;Copia PA0 a W
andwf PA1,W
;RA0 and RA1
movwf PROD
;Salva el resultado en PROD
btfsc PROD,0
;PROD = 1?
goto PROD_es_1
;Si PROD=1, salta a PROD_es_1
bcf PORTB,3
;Pone RB3 a 0
return
;Fin subrutina
PROD_es_1
bsf PORTB,3
;Pone RB3 a 1
return
;Fin subrutina
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end
;Fin del programa fuente
SOLUCIÓN (B):
Otra posible solución más compacta consiste en considerar los cuatro casos que ocurren según el valor
de las 2 entradas:
ENTRADAS RA0 · RA1 RA0 + RA1 NOT RA0 RA0
RA1 RA0
RB3
RB2
RB1
RB0
0
0
1
1
0
1
0
1
0
0
0
1
0
1
1
1
1
0
1
0
0
1
0
1
List
p=16F84
;Tipo de procesador
include"P16F84.INC" ;Definiciones de registros internos
org
goto
Inicio
Loop
RA0_es_1
CASO_00
CASO_01
CASO_10
CASO_11
0x00
Inicio
org
0x05
clrf
PORTB
bsf
STATUS,RP0
clrf
TRISB
movlw b'00011111'
movwf TRISA
bcf
STATUS,RP0
clrf PORTB
clrwdt
btfsc PORTA,0
goto
RA0_es_1
bcf
PORTB,0
bsf
PORTB,1
btfsc TORTA,1
goto CASO_10
goto CASO_00
bsf
PORTB,0
bcf
PORTB,1
btfsc TORTA,1
goto CASO_11
goto CASO_01
bcf PORTB,2
bcf PORTB,3
goto Loop
goto CASO_10
bsf PORTB,2
bcf PORTB,3
goto Loop
bsf PORTB,2
bsf PORTB,3
goto Loop
end
;Vector de Reset
;Salva el vector de interrupción
;Borra los latch de salida
;Selecciona banco 1
;Puerta B se configura como salida
;Puerta A se configura como entrada
;Selecciona banco 0
;Inicializa PORTB a 0
;Refresca el WDT timer
;RA0 = 1 ??
;Si RA0=1, salta a RA0_es_1
;Pone RB0 a 0 (RA0)
;Pone RB1 a 1 (complemento de RA0)
;RA1 = 1??
;caso RA1=1 RA0=0
;caso RA1=0 RA0=0
;Pone RB0 a 1 (RA0)
;Pone RB1 a 0 (complemento de RA0)
;RA1 = 1 ??
;caso RA1=1 RA0=1
;caso RA1=0 RA0=1
;or
;and
;bucle infinito
;estos casos son iguales
;or
;and
;bucle infinito
;or
;and
;bucle infinito
;Fin del programa fuente
3
PROBLEMA 2 (3 puntos)
Confeccionad un programa en ensamblador para el PIC16F873, suponiendo que se ejecutará sobre la
tarjeta MicroPICTrainer, que produzca el apagado y encendido de los leds conectados a los bits 1 y 2 del
puerto B (RB1 y RB2) cada 100 ms haciendo uso del sistema TIMER1. Nunca deben estar encendidos o
apagados los dos leds simultáneamente, es decir, la secuencia debe ser:
RB1 RB2
t
t+100 ms
t+200 ms
t+300 ms
Suponed también que el sistema Watchdog ha sido activado en la palabra de configuración y asociarle
un preescalado de 1 dentro de vuestro programa.
SOLUCIÓN:
list
p=16F873
include"P16F873.INC"
Delay
Inicio
Loop
;Tipo de procesador
;Definiciones de registros internos
equ .25000
;cuenta a realizar por TIMER1 con preescalado 4
;para temporizar 100ms
org
goto
;Vector de Reset
0x00
Inicio
org
0x05
clrf PORTB
bsf
STATUS,RP0
clrf
TRISB
bcf
STATUS,RP0
movlw b'11001000'
movwf OPTION_REG
clrf
T1CON
bsf
T1CON,TMR1ON
bsf
T1CON,T1CKPS1
clrwdt
movlw b'00000010'
movwf PORTB
call
PAUSA
movlw b'00000100'
movwf PORTB
call
PAUSA
goto
Loop
;Salva el vector de interrupción
;Borra los latch de salida
;Selecciona banco 1
;Puerta B se configura como salida
;Selecciona banco 0
;Preescaler de 1 asociado al WDT
;Inicializacion del registro de control del TIMER1
;Timer1 ON
;Preescalado a 4 del Timer1
;Refresca el WDT timer
;RB1=1 RB2=0
;Retardo de 100 ms
;RB1=0 RB2=1
;Retardo de 100 ms
;Bucle Infinito
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PAUSA
bcf PIR1, TMR1IF ;Baja bandera del TIMER1
movlw low ~Delay
;carga cuenta a realizar
movwf TMR1L
movlw high ~Delay
movwf TMR1H
ESPERA
btfss PIR1,TMR1IF ;Comprobación del desbordamiento
goto
ESPERA
return
;Retorna al programa principal
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end
;Fin del programa fuente
4
PROBLEMA 3 (3 puntos)
El contenido de la memoria de programa del PIC16F84A a partir de la posición 0000h es el siguiente:
1.
Deducid con ayuda del manual el programa allí almacenado.
2. Si tras resetear el PIC y su memoria de datos, el programa anterior se ejecuta hasta la línea 21
(dirección de programa=0x14), indicad el contenido de las celdas de propósito general de la
memoria de datos, el valor del acumulador (W), y el del contador de programa (PCL).
MEMORIA DE DATOS
address 00
0000
0010
0020
0030
0040
01
02
03
04
05
06
07
08
09
0A 0B 0C 0D 0E 0F
PCL
W
PCL
5
SOLUCIÓN:
Contador
Primera
Inicio
Bucle
equ
equ
0x0c
0x10
org
goto
0x00
Inicio
org
movlw
movwf
movlw
movwf
movlw
movwf
incf
movlw
movwf
incf
movlw
movwf
incf
decfsz
goto
0x05
.10
Contador
Primera
FSR
0x01
INDF
FSR,F
0x23
INDF
FSR,F
0x45
INDF
FSR,F
Contador,F
Bucle
nop
nop
El programa anterior, si se ejecuta hasta la línea 21, almacena el patrón 012345 en 10 posiciones
contiguas de la memoria de datos, empezando desde la dirección 0x10:
W 45h
PCL 15h
6
Instrumentación
PROBLEMA 1 (4 puntos)
Un sensor potenciométrico de valor nominal 50 Ω , se encuentra conectado remotamente a un medidor,
que se puede modelar como una impedancia resistiva de 100 kΩ, y a una fuente de alimentación de 3V
mediante un esquema de 3 hilos tal como se muestra en la figura 1.
SENSOR
POTENCIOMÉTRICO
Rcable
REMOTO
R=50 Ω
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 1
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 2).
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?
7
SENSOR
POTENCIOMÉTRICO
Rcable
REMOTO
R2=R·(1-x)
Alimentación
Rcable
Vi
Vo L
R1 =R·x
M EDIDOR
Rcable
Rcable
resistencia de los cables de
conexión
Figura 2
SOLUCIÓN:
a)Calculad la tensión en el medidor en el caso ideal que la resistencia del cableado sea despreciable
(Rcable=0) .
Si despreciamos la resistencia de los cables y consideramos que la resistencia del medidor es muy alta
(100k Ω) en comparación con las del resto del circuito (decenas de Ω), el circuito resultante es el
siguiente:
Vi
VOL = Vi
R(1-x)
Rx
Rx
= Vi x = 3 x (V )
R(1 − x ) + Rx
VOL = 3x (V )
+
VOL
-
8
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.
Considerando la resistencia de los cables, el circuito resultante del esquema de medida de 3 hilos es el
siguiente:
Vi
Rcable
Rcable = 150m
R(1-x)
VOL = Vi
Rx
40Ω
= 6Ω
1000m
Rx + Rcable
50 x + 6
=3
= 2.4193x + 0.2903 (V )
2 Rcable + R
12 + 50
VOL = 2.4193 x + 0.2903 (V )
+
VOL
Rcable
-
c) Calculad la tensión en el medidor, considerando la resistencia de los cables, utilizando un esquema de 4
hilos (Figura 2).
Considerando la resistencia de los cables, el circuito resultante del esquema de medida de 4 hilos es el
siguiente:
Vi
Rcable
Rcable = 150m
VOL = I ⋅ Rx =
R(1-x)
Rx
+
VOL
Vi
2Rcable + R
Rx =
40Ω
= 6Ω
1000m
3 ⋅ 50 x
= 2.4193 x
12 + 50
(V )
VOL = 2.4193 x (V )
-
Rcable
9
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?
El esquema de 3 hilos disminuye la sensibilidad de la tensión de salida (de 3x a 2.42x),
y además añade una tensión de offset. El esquema de medida de 4 hilos, elimina la
tensión de offset pero sigue teniendo una sensibilidad inferior a la ideal.
Para corregir el error de sensibilidad (previa corrección del error de offset mediante la
utilización del circuito de 4 hilos) amplificaríamos la señal con una ganancia G = 62/50:
SENSOR
POTENCIOMÉTRICO
REMOTO
Rcable
R2 =R·(1-x)
Alimentación
Rcable
R 1=R·x
3x (V)
Vi
Vo L
M EDIDOR
Rcable
Rcable
G
resistencia de los cables de
conexión
10
PROBLEMA 2
( 2 puntos)
En el esquema de la figura 3 se presenta un sistema de control de temperatura mediante una NTC. Se
desea que el relé active la alarma cuando la temperatura ambiente alcanza los 45ºC. Se pide diseñar el
valor del potenciómetro de control de temperatura teniendo en cuenta los siguientes datos:
Relé (Bobina de 30mH y resistencia despreciable): Intensidad de activación = 10mA.
NTC: R0 (25ºC) = 1000 Ω, B = 3290K
Fuente de tensión: Vfuente=12V
Figura 3
SOLUCIÓN:
La NTC es un sensor cuyo valor resistivo depende de la temperatura, de forma que a mayor temperatura
menor es su resistencia. Por tanto, si desde un temperatura ambiente normal, la temperatura asciende
hasta los 45ºC, la resistencia del termistor disminuirá aumentando la corriente de la malla eléctrica en la
que se encuentre. Este hecho nos permite diseñar el valor del potenciómetro, sabiendo que la intensidad
de activación del relé que conecta la alarma es de 10 mA y su equivalente DC es simplemente un
cortocircuito (puesto que el enunciado nos dice que su resistencia es despreciable).
RNTC = R0e
1 1
B  −
 T T0




RNTC ( 45º C) = 1000e
1 
 1
3290
−

 318 298 
≈ 500Ω
Aplicando la ley de Ohm a la malla eléctrica del esquema de la figura 3:
V = I·(RNTC + P)
12 = 10·10-3 ·(500 + P) --> P = 700Ω
Luego, utilizaremos un potenciómetro de valor nominal 1kΩ y lo ajustaremos al valor obtenido de
700Ω.
11
TEST(4 puntos. Resp Correcta = 0.25 puntos. Resp Incorrecta = -0.25 puntos)
Indica si los siguientes enunciados son verdaderos (V) o falsos (F):
1
Un bimetal es un sensor primario formada por dos semiconductores con distinto coeficiente
de dilatación térmica unidos firmemente, por ejemplo, mediante soldadura autógena, y
sometidos a la misma temperatura.
F
2
Las galgas extensiométricas se basan en la variación de la inductancia eléctrica de un
conductor o semiconductor cuando es sometido a un esfuerzo mecánico.
F
3
Un sensor primario convierte una magnitud física de cualquier tipo en una magnitud de tipo
resistivo.
F
4
Las aplicaciones de las LDRs se centran en la medida de luz (fotometría) y en la detección
de cambios de luz.
V
5
Los metales se caracterizan por poseer coeficientes térmicos positivos de variación de la
resistencia eléctrica, ello es producto de que al aumentar en los mismos la energia interna
aumenta su resistividad.
V
6
Los termistores son sensores de temperatura de tipo resistivo. El nombre de termistor nace
de la contracción de las palabras inglesas "thermal" y "resistor".
V
7
Las NTCs y PTCs son sensores cuya curva de calibración es totalmente lineal con la
variación de la temperatura.
F
8
Se denomina condensador diferencial al formado por tres placas planas paralelas, en donde,
en general, las placas exteriores suelen ser fijas y la placa central móvil, en respuesta a la
variable a detectar.
V
9
Los sensores capacitivos pueden utilizarse como sensores de proximidad para la detección
de objetos metálicos y no metálicos.
V
10
Los sensores inductivos no pueden utilizarse para la medida de distancias puesto que su
equivalente en DC es un cortocircuito.
F
11
Un termopar es un sensor de temperatura construido por dos semiconductores dopados
fuertemente cuya característica principal es que produce una tensión proporcional a la
diferencia de temperaturas entre los puntos de unión de ambos semiconductores.
F
12
El efecto piezoeléctrico se produce en los cristales de cuarzo.
V
13
El amplificador operacional integrado 741 tiene un CMRR infinito
F
14
El amplificador de instrumentación es un amplificador diferencial con dos seguidores en las
entradas, cuyas características más importantes son: baja impedancia de entrada, alto
CMRR, alta impedancia de salida y ganancia estable y variable con una sola resistencia.
F
15
El efecto Hall consiste, básicamente, en la aparición de una tensión sobre un conductor por
el que circula una corriente al situarlo bajo la influencia de un campo magnético.
V
16
El término piezoeléctrico tiene origen griego: piezo significa presión, por lo que se podría
asignar un significado etimológico de electricidad producida por la presión.
V
12
Descargar