Sei sulla pagina 1di 13

SISTEMAS

ELECTRÓNICOS
D I G I TA L E S
SEGUNDA PRÁCTICA
C U E N TA R R E V O L U C I O N E S D I G I TA L

Curso 2010-2011
Profesor: Jaime Gómez Gil
E.T.S. Ing. Telecomunicación
Universidad de Valladolid
Introducció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.

Objetivo
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.

Enunciado
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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 2/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 práctica que no se supo
hacer, pasado un tiempo.
PRUEBA, medición de voltaje en RA4
En el circuito real, el detector de corte está conexionado tal y como se muestra en la Figura 2. Se pretende medir
mediante un voltímetro la tensión en ese punto, cuando un diente corta el haz de luz infrarroja y cuando el diente
no la corta. Para no tener que identificar estos puntos en el circuito, se medirá directamente el voltaje entre las
patillas RA4 (pin 3) y Vss (pin 5) del PIC16F84A sin conectar el PIC. Es decir, en el PIC16F84A Data Sheet se
identificarán estas patillas, y se colocarán las puntas del polímetro sobre los huecos de estas patillas para medir.

Figura 2

Anotar y justificar los valores medidos.


PRUEBA, copiar PORTA en PORTB
Dado el circuito de la Figura 3, realizar el organigrama y un programa en ensamblador MPASM que copie el
contenido de la PORTA en PORTB.
rueda dentada
(vista de perfil) 5 PIC16F84A
Vdd
Vss RB0
RB1
eje giratorio 10K RB2
MCLR RB3
reset 100
5 5 RB4
33pF RB5
OSC1
detector de corte 4Mhz
OSC2 RB6
sección de la H21A1 33pF
rueda dentada RA4 RB7
500 500 500 500 500 500 500 500
270 10K

Figura 3

Girando despacio el eje, comprobar que el diodo conectado a RB4 se enciende y se apaga según la rueda dentada
corta el haz infrarrojo en el detector de corte.
PRUEBA, copiar RA4 en RB0
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, y mantenga apagados los leds RB1 hasta RB7.
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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 3/13


PRUEBA, secuencia de bytes en PORTB
Disponemos del circuito mostrado en la Figura 4.
rueda dentada
(vista de perfil) 5 PIC16F84A
Vdd
Vss RB0
RB1
eje giratorio 10K RB2
MCLR RB3
reset 100
5 5 RB4
33pF RB5
OSC1
detector de corte 4Mhz
OSC2 RB6
sección de la H21A1 33pF
rueda dentada RA4 RB7
500 500 500 500 500 500 500 500
270 10K

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
vuelta al primer estado

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 16 veces
un conjunto de varias líneas en las que lo único que cambia es el valor de salida por la puerta B.
PRUEBA, secuencias de bytes en PORTB con subrutina
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.
PRUEBA, secuencia lenta de bytes en PORTB
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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 4/13


PRUEBA, TIMER contando impulsos
Se dispone del circuito mostrado en la Figura 5.
rueda dentada
(vista de perfil) 5 PIC16F84A
Vdd
Vss RB0
RB1
eje giratorio 10K RB2
MCLR RB3
reset 100
5 5 RB4
33pF RB5
OSC1
detector de corte 4Mhz
OSC2 RB6
sección de la H21A1 33pF
rueda dentada RA4 RB7
500 500 500 500 500 500 500 500
270 10K

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é?
PRUEBA, TIMER contando impulsos con prescaler
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é?
PRUEBA, temporizando 0’25 segundos sin TIMER
Se dispone del circuito mostrado en la Figura 6.
PIC16F84A
5
Vdd RB0
Vss

10K
MCLR
reset 100

33pF
OSC1
4Mhz
33pF
OSC2
500

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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 5/13


PRUEBA, coche fantástico sin TIMER
Se dispone del circuito mostrado en la Figura 7.
5 PIC16F84A
Vdd
Vss RB0
RB1
10K RB2
MCLR RB3
reset 100
RB4
33pF RB5
OSC1
4Mhz
OSC2 RB6
33pF
RB7
500 500 500 500 500 500 500 500

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, realizando la siguiente secuencia:
00000001
00000011
00000111
00001110
00011100
00111000
01110000
11000000
10000000
11000000
01110000
00111000
00011100
00001110
00000111
00000011
vuelta al primer estado

El retardo en la secuencia 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 dieciseis 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 80 segundos, o si ha habido algún desfase.
PRUEBA, coche fantástico sin TIMER
Realizar la prueba anterior, pero ahora ayudándonos en la temporización por el registro TIMER.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 6/13


PRUEBA, cuentarrevoluciones binario
Se dispone del circuito mostrado en la Figura 8.
rueda dentada
(vista de perfil) 5 PIC16F84A
Vdd
Vss RB0
RB1
eje giratorio 10K RB2
MCLR RB3
reset 100
5 5 RB4
33pF RB5
OSC1
detector de corte 4Mhz
OSC2 RB6
sección de la H21A1 33pF
rueda dentada RA4 RB7
500 500 500 500 500 500 500 500
270 10K

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.
PRUEBA, cuentarrevoluciones VISUAL
Se dispone del circuito mostrado en la Figura 9.
rueda dentada
(vista de perfil) 5 PIC16F84A
Vdd
Vss RB0
RB1
eje giratorio 10K RB2
MCLR RB3
reset 100
5 5 RB4
33pF RB5
OSC1
detector de corte 4Mhz
OSC2 RB6
sección de la H21A1 33pF
rueda dentada RA4 RB7
500 500 500 500 500 500 500 500
270 10K

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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 7/13


PRUEBA, dígito 2 en un display 7 segmentos
Se dispone del circuito mostrado en la Figura 10.
PIC16F84A a a a a
5 RB0
Vdd RB1 b
c f b f b f b
Vss RB2
RB3 d g g g
RB4 e
10K RB5 f e c e c e c
MCLR g
RB6 d d d
reset 100 RB7 dp
dp dp dp
330x8 ánodo ánodo ánodo
33pF RA2 común común común
OSC1
4Mhz RA1
33pF
OSC2 RA0
Figura 10

Realizar el organigrama y un programa en ensamblador MPASM que presente un 2 en el display central.


PRUEBA, dígitos 222 en tres displays 7 segmentos
Realizar la prueba anterior, pero ahora presentando un 222 (un 2 en los tres displays).
PRUEBA, dígitos 123 en tres displays 7 segmentos
Se dispone del circuito mostrado en la Figura 11.
PIC16F84A a a a a
5 RB0
Vdd RB1 b
c f b f b f b
Vss RB2
RB3 d g g g
RB4 e
10K RB5 f e c e c e c
MCLR g
RB6 d d d
reset 100 RB7 dp
dp dp dp
330x8 ánodo ánodo ánodo
33pF RA2 común común común
OSC1
4Mhz RA1
33pF
OSC2 RA0
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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 8/13


PRUEBA, cuentarrevoluciones preciso con ceros
Se dispone del circuito mostrado en la Figura 12.
rueda dentada
(vista de perfil) 5 PIC16F84A a a a a
V dd RB0
RB1 b
V ss c f b f b f b
RB2
RB3 d g g g
eje giratorio 10K e
RB4
MCLR RB5 f e c e c e c
reset 100 g
RB6 d d d
5 5 RB7 dp
dp dp dp
33pF 330x8
OSC1 ánodo ánodo ánodo
detector de corte 4Mhz RA2 común común común
H21A1 OSC2
sección de la 33pF RA1
rueda dentada RA4 RA0
270 10K

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.
PRUEBA cuentarrevoluciones PRECISO
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.
PRUEBA, apagado y encendido de motor DC
Se dispone del circuito mostrado en la Figura 13.
12
L293B 5

5 PIC16F84A Motor
Vdd RA0 DC 12
Vss RA1
RA2 12

10K 10K I0
MCLR RB0 10K I1
reset 100 RB1 10K I2
RB2 10K I3
RB3
33pF
OSC1
4Mhz 10K I4
OSC2 RB4 10K I5
33pF RB5 10K I6
RB6
RB7
10K I7
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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 9/13


PRUEBA, control de potencia de motor DC
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.
PRUEBA, giro de motor PAP
Se dispone del circuito mostrado en la Figura 14.

Motor PaP
de 48 pasos
012 3

L293B 5

5 PIC16F84A
Vdd
RB2
Vss RB4
RB0
RB1
10K 5
RB3
MCLR
reset 100

10K I0
33pF RA0 10K I1
4Mhz
OSC1 RA1 10K I2
33pF
OSC2 RA2 10K I3
RA3

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.

PRUEBA, encendido y giro de motor PAP


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.

PRUEBA, control de velocidad de motor PAP


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?

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 10/13


PRUEBA, cuentarrevoluciones CLÁSICO con motor PAP
Se dispone del circuito mostrado en la Figura 15.
rueda dentada
(vista de perfil)
46 0 2
44 0 4
42 6
192
eje giratorio 40 8
vueltas
38 por 10
segundo

5 5 36 144 256 48 12
34 14
0123
detector de corte
sección de la H21A1 32 16 Motor
PaP
rueda dentada 30 18 48
28 96
20 pasos
270 10K 26 24 22
5 PIC16F84A
Vdd
Vss RA4

L293B 5
10K
MCLR
reset 100

RB2
RB4
33pF RB0
OSC1
4Mhz RB1
OSC2 12
33pF RB3

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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 11/13


PRUEBA, posición extrema izquierda en motor servo de posición
Se dispone del circuito mostrado en la Figura 16.
rueda dentada
(vista de perfil)

eje giratorio

5 5

detector de corte 128


sección de la H21A1
rueda dentada

19
64

2
270 10K
5 PIC16F84A vueltas
Vdd RA4 por segundo
Vss

255
0
10K
MCLR MOTOR
reset 100
Futaba Futaba S3003 actuando
como servo de
33pF S3003
OSC1 posición
4Mhz
33pF
OSC2
RA0
Figura 16

Realizar el organigrama y un programa en ensamblador MPASM que la aguja marque la posición 0.


PRUEBA, posición extrema derecha en motor servo de posición
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
PRUEBA, limpiaparabrisas con motor servo de posición
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.

VIGESIMOCTAVA PRUEBA , cuentarrevoluciones CLÁSICO con motor servo de


posición
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.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 12/13


Jornadas para la realización de la práctica
Esta práctica se realizará durante todos las jornadas de LABORATORIO DE SISTEMAS ELECTRÓNICOS DIGITALES
desde el 21 de octubre al 9 de diciembre. En total son 8 semanas lectivas, y 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, ya que se deja
libre la última jornada como margen para estos imprevistos.
 13 de octubre: hasta la prueba, secuencias de bytes en PORTB
 20 de octubre: hasta la prueba, TIMER contando impulsos con prescaler
 27 de noviembre: hasta la prueba, cuentarrevoluciones binario
 3 de noviembre: hasta la prueba, dígitos 123 en tres displays 7 segmentos
 10 de noviembre: hasta la prueba, control de potencia de motor DC
 17 de noviembre: hasta la prueba, cuentarrevoluciones CLÁSICO con motor PAP
 24 de noviembre: hasta la prueba, cuentarrevoluciones CLÁSICO con motor servo de posición
 1 de diciembre: sin asignación para esta semana, para compensar posibles retrasos en semanas
anteriores

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.

Detalles muy importante sobre la realización de esta práctica


Hay tres detalles muy importantes sobre el trabajo en esta práctica que el profesor quiere resaltar:

 Se debe dibujar el organigrama cada una de las pruebas antes de comenzar a editar el código. Los
alumnos muchas veces no dan importancia a realizar el organigrama, pero el profesor insiste en que es
de vital importancia que se realice siempre el organigrama antes de realizar el código en ensamblador,
dadas las características de este tipo de lenguaje. Además, en el examen se tendrá que presentar el
organigrama.
 El profesor insiste en que los alumnos deben superar las dificultades que surjan en las prácticas ellos
mismos. Se aconsejan no ver la solución de las pruebas de otros alumnos de este u otros años, para
tener experiencia en resolver dificultades el día de la realización del examen final de la asignatura.
 En la medida de lo posible, se recomienda en el laboratorio usar principalmente el PIC16F84A Data
Sheet para realizar la programación. Se pueden usar también los apuntes teóricos de la asignatura, pero
se debe dar prioridad al uso del Data Sheet.

P RÁCTICA 2: CUENTARREVOLUCIONES DIGITAL 13/13

Potrebbero piacerti anche