You are on page 1of 13

SISTEMAS

ELECTRÓNICOS
DIGITALES

SEGUNDA PRÁCTICA
CUENTARREVOL UCI ONES DI GI TAL

















Cur so 2006-2007
Pr of esor : J ai me Gómez Gi l
E.T.S. I ng. Tel ec omuni c ac i ón
Uni ver si dad de Val l adol i d


PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 2/13
I nt r oduc c i ón
La asignatura SISTEMAS ELECTRÓNICOS DIGITALES estudia el diseño y la programación de los sistemas
electrónicos digitales por excelencia, que son los microprocesadores. En cuanto a la parte de programación, en
esta asignatura se opta por el trabajo con el microcontrolador PIC16F84A. En esta práctica se realizan una serie
de pruebas para comprobar de forma real todos los conocimientos adquiridos en la clase de teoría, sobre el
microcontrolador PIC16F84A.
Obj et i vo
El objetivo de esta segunda práctica es afianzar los conocimientos adquiridos en clase de teoría sobre el
microcontrolador Microchip PIC16F84A, realizando varias versiones de un cuentarrevoluciones digital.
Enunc i ado
Disponemos de un eje al que pretendemos medir la velocidad, que gira con velocidades comprendidas entre 0 y
200 vueltas por segundo.
Figura 1: Detector de corte H21A1, conexión recomendada para este detector de corte, geometría de la rueda dentada y disposición del
detector de corte y rueda dentada en nuestra implementación
A dicho eje le acoplamos una rueda con cuatro dientes, que los haremos pasar a través de un detector de corte.
Pretendemos que un microcontrolador esté continuamente midiendo la velocidad a la que gira ese eje, y que
presente la información medida de tres formas diferentes:
Versión VISUAL
El microcontrolador ofrece información de la velocidad de giro mediante una barra de leds. Si todos los
leds están apagados, es que el eje está parado. Cuando el eje gira con velocidades pequeñas se
encenderán unos pocos leds, y cuando el eje gira con velocidades elevadas, se encenderán muchos leds.
Versión PRECISA
El microcontrolador ofrece información numérica de la velocidad de giro mediante displays de 7
segmentos.
Versión CLÁSICA
El microcontrolador ofrece información similar a la de un cuentarrevoluciones de aguja analógico de un
coche.
Un posible algoritmo mediría el número de pulsos detectados durante 1 segundo y, posteriormente, dividiendo
ese número entre 4, se obtendrían las revoluciones por segundo. Pero esto plantearía el siguiente problema; el
número de pulsos detectados en un segundo sería un número entre 0 y 800 (200×4) y ese número no se puede
almacenar en un único registro de 8 bits como los que posee el PIC16F84A. Por ello, se muestrearán los pulsos
entrantes durante la cuarta parte de un segundo y, como el número de dientes de la rueda es 4, ese número serán
las revoluciones por segundo.
Tanto para facilitar como para hacer más ameno y gratificante el trabajo al alumno, esta práctica se divide en
pequeñas y sencillas pruebas, hasta llegar a los diseños definitivos del cuentarrevoluciones digital.
PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 3/13
Un consejo para la realización de estas prácticas: cuando el alumno encuentre serias dificultades para realizar
una prueba, se recomienda pasar a realizar la prueba siguiente, y volver a intentar la problemática pasado un
tiempo partiendo de cero.
PRI MERA PRUEBA
En el circuito real, el detector de corte está conexionado tal y como se muestra en la Figura 2. Identificar el punto
E y mediante un voltímetro medir la tensión en ese punto cuando un diente corta el haz de luz infrarroja y
cuando el diente no la corta.

Figura 2
Anotar y justificar los valores medidos.
SEGUNDA PRUEBA
Dado el circuito de la Figura 3, realizar el organigrama y un programa en ensamblador MPASM que copie el
contenido de la entrada RA4 en RB0.
PIC16F84A
500
RB0
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4
4Mhz
33pF
33pF
OSC1
OSC2
Vss
5
Vdd
100
10K
reset
MCLR


Figura 3
Girando despacio el eje, comprobar que el diodo conectado a RB0 se enciende y se apaga según la rueda dentada
corta el haz infrarrojo en el detector de corte.















PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 4/13
TERCERA PRUEBA
Disponemos del circuito mostrado en la Figura 4.
PIC16F84A
500 500 500 500 500 500 500 500
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR


Figura 4.
Realizar el organigrama y un programa en ensamblador MPASM para que los diodos led se iluminen según la
siguiente secuencia, a cada paso de un diente de la rueda.
00000000
00000001
00000011
00000111
00001111
00011111
00111111
01111111
11111111
11111110
11111100
11111000
11110000
11100000
11000000
10000000
00000000
10000000
11000000
11100000
11110000
11111000
11111100
11111110
11111111
01111111
00111111
00011111
00001111
00000111
00000011
00000001
vuel t a al pr i mer est ado
Es decir, inicialmente los ocho leds están apagados hasta que el primer diente atraviesa el detector de corte,
momento en el que se enciende el led menos significativo. Cuando un segundo diente atraviesa el haz, se
deberán encender los led conectados a RB0 y RB1 y así sucesivamente.
Esta prueba se realizará sin utilizar las funciones de rotación del PIC (rlf y rrf), y se deberá copiar 32 veces
un conjunto de varias líneas en las que lo único que cambia es el valor de salida por la puerta B.
CUARTA PRUEBA
Resolver el mismo problema que en la prueba anterior, pero ahora utilizando una tabla de 32 columnas, es decir,
un conjunto de 32 instrucciones en una subrutina del tipo retlw ‘00001111’, precedidas por una
instrucción del tipo addwf PCL,1. Evidentemente, a la subrutina se la llamará con una instrucción call
subrutina Anotar en la memoria tanto el organigrama como el programa realizado.
PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 5/13
QUI NTA PRUEBA
En la prueba anterior es necesario girar el mando muy despacio para poder percibir el movimiento de las luces en
los leds. Modificar ligeramente el organigrama y programa anterior para que los cambios de estado se realicen
con el paso de 5 dientes en vez de con uno.
SEXTA PRUEBA
Se dispone del circuito mostrado en la Figura 5.
PIC16F84A
500 500 500 500 500 500 500 500
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR


Figura 5
Realizar el organigrama y un programa en ensamblador MPASM que inicialmente configure como entrada al
TIMER los impulsos recibidos por la patita RA4 sin ningún tipo de preescalado, y que posteriormente se
mantenga en un bucle infinito copiando el contenido de TMR0 en PORB. ¿Qué se observa? ¿Por qué?
SÉPTI MA PRUEBA
En la prueba anterior es necesario girar el mando muy despacio para poder percibir el movimiento de las luces en
los leds. Modificar el organigrama y programa anterior, asignando a TMR0 el prescaler con una división de
frecuencia de 16:1. ¿Qué se observa? ¿Por qué?
OCTAVA PRUEBA
Se dispone del circuito mostrado en la Figura 6.
PIC16F84A
500
RB0
4Mhz
33pF
33pF
OSC1
OSC2
Vss
5
Vdd
100
10K
reset
MCLR

Figura 6
Realizar el organigrama y un programa en ensamblador MPASM que haga encenderse y apagarse el led cada
0’25 segundos (se permite un error del 1%). La temporización se hará mediante la llamada a una subrutina que
contendrá bucles anidados, es decir, no se realizará con ayuda del TIMER.







PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 6/13
NOVENA PRUEBA
Se dispone del circuito mostrado en la Figura 7.
PIC16F84A
500 500 500 500 500 500 500 500
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR

Figura 7
Realizar el organigrama y un programa en ensamblador MPASM que realice un encendido de estos leds con la
animación del coche fantástico y el retardo en el encendido de luces del programa anterior (0’25segundos).
Comprobar que la luz tarda en desplazarse de un extremo a otro dos segundos (para ello, los extremos deben
encenderse dos veces, es decir, se deben completar cada ciclo en ocho fases de 0’25 segundos). Se repetirá el
ciclo 20 veces y se comprobará con un cronómetro si el tiempo que ha tardado es de 20 segundos, o si ha habido
algún desfase.
DÉCI MA PRUEBA
Realizar la prueba anterior, pero ahora ayudándonos en la temporización por el registro TIMER.
UNDÉCI MA PRUEBA
Se dispone del circuito mostrado en la Figura 8.
PIC16F84A
500 500 500 500 500 500 500 500
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR


Figura 8
Realizar el organigrama y un programa en ensamblador MPASM que haga lo siguiente:
1. Configurar a la entrada de TMR0 los impulsos generados en la patilla RA4 sin escalado.
2. Poner el TMR0 a cero.
3. Temporizar 0’25 segundos.
4. Mostrar en PORTB el contenido de TMR0.
5. Volver al paso 2.
Nota importante: Debido a que el PIC16F84A sólo posee un TIMER y lo utilizamos para contar los impulsos
entrantes por RA4, la temporización se deberá hacer sin ayuda del TIMER.






PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 7/13
DUODÉCI MA PRUEBA, c uent ar r evol uc i ones VI SUAL
Se dispone del circuito mostrado en la Figura 9.
PIC16F84A
500 500 500 500 500 500 500 500
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR


Figura 9
Realizar el organigrama y un programa en ensamblador MPASM que haga lo siguiente:
1. Configurar a la entrada de TMR0 los impulsos generados en la patilla RA4 sin escalado.
2. Poner el TMR0 a cero
3. Temporizar 0’25 segundos.
4. Según el contenido de TMR0 mostrar en PORTB lo siguiente:
a. Si TMR0=0 entonces PORTB=00000000
b. Si 1≤TMR0≤25 entonces PORTB=00000001
c. Si 26≤TMR0≤50 entonces PORTB=00000011
d. Si 51≤TMR0≤75 entonces PORTB=00000111
e. Si 76≤TMR0≤100 entonces PORTB=00001111
f. Si 101≤TMR0≤125 entonces PORTB=00011111
g. Si 126≤TMR0≤150 entonces PORTB=00111111
h. Si 151≤TMR0≤175 entonces PORTB=01111111
i. Si 176≤TMR0 entonces PORTB=11111111
5. Volver al paso 2.
DECI MOTERCERA PRUEBA
Se dispone del circuito mostrado en la Figura 10.
330x8
a
b
c
d
e
f
g
dp
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
Vss
5
Vdd
100
10K
reset
MCLR
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
100
a
b
c
d
e
f
g
dp
a
b
c
d
e
f
g
dp
a
b
c
a
d
e
f
dp
g
RA2
RA1
RA0
d
ánodo
común
ánodo
común
ánodo
común

Figura 10
Realizar el organigrama y un programa en ensamblador MPASM que presente un 2 en el display central.
DECI MOCUARTA PRUEBA
Realizar la prueba anterior, pero ahora presentando un 222 (un 2 en los tres displays).





PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 8/13
DECI MOQUI NTA PRUEBA
Se dispone del circuito mostrado en la Figura 11.
330x8
a
b
c
d
e
f
g
dp
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
Vss
5
Vdd
100
10K
reset
MCLR
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
100
a
b
c
d
e
f
g
dp
a
b
c
d
e
f
g
dp
a
b
c
a
d
e
f
dp
g
RA2
RA1
RA0
d
ánodo
común
ánodo
común
ánodo
común

Figura 11
Realizar el organigrama y un programa en ensamblador MPASM que presente un 123 en los displays. Para
conseguirlo se entra en un bucle en el que:
1. Se saca 1 en el dígito más significativo.
2. Retardo de 1ms.
3. Se saca 2 en el dígito central.
4. Retardo de 1ms.
5. Se saca 3 en el dígito menos significativo.
6. Retardo de 1 ms.
7. Vuelta al paso 1.
DECI MOSEXTA PRUEBA
Se dispone del circuito mostrado en la Figura 12.
330x8
a
b
c
d
e
f
g
dp
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
Vss
5
Vdd
100
10K
reset
MCLR
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
100
a
b
c
d
e
f
g
dp
a
b
c
d
e
f
g
dp
a
b
c
a
d
e
f
dp
g
RA2
RA1
RA0
d
ánodo
común
ánodo
común
ánodo
común
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4

Figura 12
Realizar el organigrama y un programa en ensamblador MPASM que se mantenga en el bucle:
1. Configurar a la entrada de TMR0 los impulsos generados en la patilla RA4 sin escalado.
2. Poner el TMR0 a cero.
3. Temporizar 0’25 segundos.
4. Mostrar durante unas décimas de segundo (entre 2 y 10 décimas) el número de vueltas contenido en
TMR0 en los displays.
5. Volver al paso 2.
DECI MOSÉPTI MA PRUEBA c uent ar r evol uc i ones PRECI SO
Con el fin de mejorar la legibilidad, se pide modificar el programa anterior para que no se presenten los ceros a
la izquierda. En el caso de que la rueda esté parada se visualizará únicamente el punto del dígito menos
significativo.



PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 9/13
DECI MOCTAVA PRUEBA
Se dispone del circuito mostrado en la Figura 13.
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR
RA0
RA1
RB4
RB5
RB6
RB7
10K
10K
10K
10K
RB0
RB1
RB2
RB3
10K
10K
10K
10K
I 0
I 1
I 2
I 3
I 4
I 5
I 6
I 7
L293B
Mot or
DC
5
12
RA2
12
12

Figura 13
Realizar el organigrama y un programa en ensamblador MPASM para que:
• Mediante I7 se encienda o se apague el motor.
• Mediante I6 se controle el sentido de giro del motor.
DECI MONOVENA PRUEBA
Se dispone del circuito mostrado en la Figura 13.
Realizar el organigrama y un programa en ensamblador MPASM para que:
• Mediante I7 se controle que se encienda o se apague el motor.
• Mediante I6 se controle el sentido de giro del motor.
• Mediante el resto de los interruptores se controle la potencia suministrada al motor, , de forma que se
hace corresponder potencia cero a I5I4I3I2I1I0 =000000 y máxima potencia a I5I4I3I2I1I0=111111 y
valores intermedios corresponderán a potencias intermedias.















PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 10/13
VI GÉSI MA PRUEBA
Se dispone del circuito mostrado en la Figura 14.
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR
RB4
RA0
RA1
RA2
RA3
10K
10K
10K
10K
I 0
I 1
I 2
I 3
L293B 5
Mot or PaP
de 48 pasos
RB0
RB1
RB3
RB2
012 3
5

Figura 14
Realizar el organigrama y un programa en ensamblador MPASM para que:
• El motor gire con un periodo entre pasos de 2 décimas de segundo.

VI GESI MOPRI MERA PRUEBA
Se dispone del circuito mostrado en la Figura 14.
Realizar el organigrama y un programa en ensamblador MPASM para que:
• Mediante I1 se encienda o se apague el motor.
• Mediante I2 se controle el sentido de giro del motor.
• El motor gire con un periodo entre pasos de 2 décimas de segundo.

VI GESI MOSEGUNDA PRUEBA
Se dispone del circuito mostrado en la Figura 14.
Realizar el organigrama y un programa en ensamblador MPASM para que:
• El motor gira de forma continua en un único sentido, siendo el tiempo de cada paso el valor
representado por I3I2I1I0 multiplicado por 0’02 segundos.
¿Entre qué valores están comprendidas las r.p.m. del motor?









PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 11/13
VI GESI MOTERCERA PRUEBA, c uent ar r evol uc i ones CLÁSI CO I
Se dispone del circuito mostrado en la Figura 15.
2
0
24
12 36
6
4
8
10
18 30
44
42
14
40
16
20
22
26
38
28
32
34
46
192
0
96
144 256 48
vuel t as
por
segundo
0123
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR
RB4
L293B 5
RB0
RB1
RB3
RB2
12
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
RA4

Mot or
PaP
48
pasos

Figura 15
Se pide diseñar el organigrama y realizar el programa en ensamblador MPASM, para obtener sobre la escala
numerada las revoluciones por segundo a las que gira el eje. Antes de empezar a ejecutar el programa se deberá
llevar manualmente la aguja a la posición 0. Cuando la aguja se mueva para mostrar un nuevo valor, lo hará a
una velocidad de 1 vuelta por segundo.















PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 12/13
VI GESI MOCUARTA PRUEBA
Se dispone del circuito mostrado en la Figura 16.
270 10K
5 5
eje giratorio
rueda dentada
(vista de perfil)
sección de la
rueda dentada
detector de corte
H21A1
PIC16F84A
4Mhz
33pF
33pF
OSC1
OSC2
5
Vdd
Vss
100
10K
reset
MCLR
100
10K
reset
MCLR
RA4
RA0
S3003 S3003
Futaba
MOTOR
Futaba S3003 actuando
como servo de
posición
128
2
5
5
0
6
4
1
9
2
vueltas
por segundo

Figura 16
Realizar el organigrama y un programa en ensamblador MPASM que la aguja marque la posición 0.
VI GESI MOQUI NTA PRUEBA
Se dispone del circuito mostrado en la Figura 16.
Realizar el organigrama y un programa en ensamblador MPASM que la aguja marque la posición 255
VI GESI MOSEXTA PRUEBA, c uent ar r evol uc i ones CLÁSI CO I I
Se dispone del circuito mostrado en la Figura 16.
Realizar el organigrama y un programa en ensamblador MPASM que realice la siguiente secuencia:
• Enviar durante 1 segundo una señal PWM correspondiente a la posición 0.
• Enviar durante 1 segundo una señal PWM correspondiente a la posición 255.
• Volver al inicio.
De este modo se simulará un limpiaparabrisas.
VI GESI MOSÉPTI MA PRUEBA
Realizar el organigrama y un programa en ensamblador MPASM que mejore el anterior, haciendo que la aguja
tenga 8 posiciones por las que vaya pasando, en vez de únicamente dos en los extremos. El tiempo que tiene que
tardar la aguja en ir de un extremo a otro debe ser también de 1 segundo.
VI GESI MOCTAVA PRUEBA , c uent ar r evol uc i ones CLÁSI CO I I
Se dispone del circuito mostrado en la Figura 16.
Realizar el organigrama y un programa en ensamblador MPASM para que en la escala numerada se obtenga en
todo momento las revoluciones por segundo a las que gira el eje.
J or nadas par a l a r eal i zac i ón de l a pr ác t i c a
Esta práctica se realizará durante todos las jornadas de LABORATORIO DE SISTEMAS ELECTRÓNICOS DIGITALES de
noviembre y diciembre. En total son 7 semanas lectivas, y como hay 28 pruebas, el alumno debería realizar 4
pruebas cada semana. No obstante, conviene realizar más pruebas al comienzo, por si pudieran surgir
dificultades en alguna de ellas que haga al alumno atascarse y dedicarla más tiempo del esperado. A modo de
sugerencia, a continuación se presenta una planificación que asegura al alumno realizar todas las pruebas aunque
surjan las típicas dificultes en la finalización de la práctica, que le hagan dedicar más tiempo del esperado.
• 1-2 de noviembre: miércoles festivo
PRÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 13/13
• 7-8 de noviembre: pruebas 1 a 5.
• 14-15 de noviembre: pruebas 6 a 10.
• 21-22 de noviembre: pruebas 11 a 16.
• 28-29 de noviembre: pruebas 17 a 23.
• 5-6 de diciembre: miércoles festivo
• 12-13 de diciembre: pruebas 24 a 28
• 19-20 de diciembre: libre
Para poder ir cumpliendo estos objetivos semana a semana, el alumno debe realizar en casa los programas,
simularlos con MPLAB SIM, y utilizar las horas de laboratorio para probar las pruebas y depurar los errores. Si
el alumno sólo dedica las horas de laboratorio, no tendrá tiempo suficiente para realizar todas las pruebas.
Ot r os c oment ar i os ac er c a de l a pr ác t i c a
Aunque no se entrega memoria, es muy importante DIBUJAR EL ORGANIGRAMA de cada uno de los
programas antes de empezar a editar el código.