Vous êtes sur la page 1sur 230

Problemas de

Luis Gil Sánchez


UPV Ingeniero Técnico Industrial en la Universitat
Politècnica de València (UPV), Ingeniero en Elec-

electrónica digital
trónica en la Universitat de València y doctor
por la UPV (2007).
En la actualidad es profesor titular de univer-
sidad en la UPV adscrito al Departamento de
Ingeniería Electrónica. Lleva impartiendo do-
Luis Gil Sánchez cencia desde hace más de 30 años en asigna-
turas relacionadas con la electrónica digital y de
Javier Ibáñez Civera otras especialidades de electrónica. Es autor de

Eduardo García Breijo


varios libros docentes sobre electrónica digital y
simulación de circuitos electrónicos en editoria-
les de la UPV y nacionales. También es autor de
numerosas participaciones en congresos docen-
Problemas de electrónica digital tes nacionales e internacionales. Además, ha
trabajado en proyectos de innovación docente
Luis Gil Sánchez en el área de la electrónica digital.
Javier Ibáñez Civera Su tarea de investigación se ha centrado en
Eduardo García Breijo el desarrollo de sensores, instrumentación
y análisis de datos siendo autor de más de
Existen numerosas publicaciones docentes, tanto nacionales como múltiples artículos de divulgación científica y

Problemas de electrónica digital


internacionales, que recogen los conceptos teóricos fundamentales de comunicaciones en congresos científicos
de la electrónica digital, pero no hay tantas publicaciones que estén internacionales.
centradas en problemas y menos en la resolución de exámenes de
tipo test. En cambio, la mayoría de los alumnos buscan este tipo de Javier Ibáñez Civera
publicaciones porque es el mejor método para aprender la teoría y Ingeniero Técnico Industrial en la Universitat
poder enfrentarse con éxito a los exámenes de esta materia. Politècnica de València (UPV), Ingeniero en
Electrónica (Universitat de València) y doctor
Con este libro de problemas de electrónica digital los autores por la UPV (2009).
deseamos aportar nuevo material docente a la especialidad, so- En la actualidad es profesor titular de univer-
bretodo en algunos conceptos que son menos tratados por otros sidad en la UPV adscrito al Departamento de
libros de problemas como son: ejercicios de conexión a la entrada Ingeniería Electrónica. Lleva impartiendo do-
y a la salida de dispositivos digitales, diseño de máquinas de esta- cencia desde hace más de 30 años en asigna-
dos finitos, programas en lenguaje C para microcontroladores de turas relacionadas con la electrónica digital, así
tipo PIC, etc. La publicación se ha dividido por temas siguiendo como de otras especialidades de electrónica. Es
los bloques tradicionales de la electrónica digital. En cada tema se autor de varios libros docentes sobre electrónica
presentan sus correspondientes problemas y preguntas de tipo de digital y simulación de circuitos electrónicos en
test, así como una bibliografía básica para consultar el contenido editoriales de la UPV y nacionales. También es
teórico del tema. Pero también se han introducido otros ejercicios autor de múltiples participaciones en congresos
más largos y complejos que abarcan los contenidos de varios temas docentes nacionales e internacionales. Además,
para que así el alumno puede tener una visión más global de la ha participado en proyectos de innovación do-
cente en el área de la electrónica digital.
especialidad.
Su tarea de investigación se ha centrado en
Con el contenido de esta obra los autores esperamos que el lector el desarrollo de dispositivos optoelectrónicos,
avance en los conocimientos de la electrónica digital y que pueda sensores, instrumentación y análisis de datos
aplicarla a su vida académica y profesional. siendo autor de más de múltiples artículos de
divulgación científica y de comunicaciones en
Colección Académica
congresos científicos internacionales
Colección de carácter multidisciplinar,
orientada a los estudiantes y cuya finalidad Eduardo García Breijo
es apoyar la gestión docente conforme a Ingeniero Técnico Industrial en la Universitat
los planes de estudio de las titulaciones Politècnica de València (UPV), Ingeniero en
universitarias impartidas en la Universitat Electrónica (Universitat de València) y doctor
Politècnica de València, constituyendo bi- por la UPV (2004).
bliografía recomendada para el aprendizaje Catedrático de Universidad adscrito al Depar-
de una asignatura. Los títulos de la colección tamento de Ingeniería Electrónica de la Univer-
se clasifican en distintas series según el área sitat Politècnica de València. Lleva impartiendo
de conocimiento y la mayoría de ellos están docencia hace más de 25 años en asignaturas
disponibles tanto en formato papel como relacionadas con la electrónica digital. Es autor
de varios libros sobre electrónica digital, micro-
electrónico.
controladores y simulación de circuitos digitales
Todos los títulos de la colección están eva- en editoriales tanto de la UPV como nacionales
luados por el departamento de la Universitat e internacionales. Además, ha participado en
Politècnica de València en el que se inscribe EDITORIAL proyectos de innovación docente en el área de
la materia, atendiendo a la oportunidad de la la electrónica digital.
obra para el estudiante y la adecuación de la También ha publicado artículos de divulgación
metodología empleada en su didáctica. científica y ha participado en congresos de
innovación docente en el área de la electrónica
Para conocer más información sobre la EDITORIAL digital
EDITORIAL
colección, los títulos que la componen
y cómo adquirirlos puede visitar la web UNIVERSITAT POLITÈCNICA DE VALÈNCIA
http://www.lalibreria.upv.es
Luis Gil Sánchez
Javier Ibáñez Civera
Eduardo García Breijo

PROBLEMAS
DE ELECTRÓNICA DIGITAL

EDITORIAL
UNIVERSITAT POLITÈCNICA DE VALÈNCIA
Colección Académica

Para referenciar esta publicación utilice la siguiente cita: Gil Sánchez, Luis; Ibáñez Civera,
Javier; García Breijo, Eduardo (2018). Problemas de electrónica digital. Valencia: Editorial
Universitat Politècnica de València

Los contenidos de esta publicación han sido revisados por el Departamento de Ingeniería
Electrónica de la Universitat Politècnica de València

Primera edición, 2018 (versión impresa)


Primera edición, 2018 (versión electrónica)

© Luis Gil Sánchez


Javier Ibáñez Civera
Eduardo García Breijo

© 2018, de la presente edición: Editorial Universitat Politècnica de València


distribución: www.lalibreria.upv.es / Ref.: 6422_01_01_01

ISBN: 978-84-9048-655-9 (versión impresa)


ISBN: 978-84-9048-656-6 (versión electrónica)

La Editorial UPV autoriza la reproducción, traducción y difusión parcial de la presente publicación con fines
científicos, educativos y de investigación que no sean comerciales ni de lucro, siempre que se identifique y se
reconozca debidamente a la Editorial UPV, la publicación y los autores. La autorización para reproducir, difundir o
traducir el presente estudio, o compilar o crear obras derivadas del mismo en cualquier forma, con fines
comerciales/lucrativos o sin ánimo de lucro, deberá solicitarse por escrito al correo edicion@editorial.upv.es
Luis Gil Sánchez

Ingeniero Técnico Industrial en la Universitat Politècnica de València (UPV), Ingeniero en Electrónica en la Universitat de
València y doctor por la UPV (2007).

En la actualidad es profesor titular de universidad en la UPV adscrito al Departamento de Ingeniería Electrónica. Lleva
impartiendo docencia desde hace más de 30 años en asignaturas relacionadas con la electrónica digital y de otras
especialidades de electrónica. Es autor de varios libros docentes sobre electrónica digital y simulación de circuitos electrónicos
en editoriales de la UPV y nacionales. También es autor de numerosas participaciones en congresos docentes nacionales e
internacionales. Además, ha trabajado en proyectos de innovación docente en el área de la electrónica digital.
Su tarea de investigación se ha centrado en el desarrollo de sensores, instrumentación y análisis de datos siendo
autor de más de múltiples artículos de divulgación científica y de comunicaciones en congresos científicos
internacionales.

Javier Ibáñez Civera

Ingeniero Técnico Industrial en la Universitat Politècnica de València (UPV), Ingeniero en Electrónica (Universitat de
València) y doctor por la UPV (2009).

En la actualidad es profesor titular de universidad en la UPV adscrito al Departamento de Ingeniería Electrónica. Lleva
impartiendo docencia desde hace más de 30 años en asignaturas relacionadas con la electrónica digital, así como de otras
especialidades de electrónica. Es autor de varios libros docentes sobre electrónica digital y simulación de circuitos electrónicos
en editoriales de la UPV y nacionales. También es autor de múltiples participaciones en congresos docentes nacionales e
internacionales. Además, ha participado en proyectos de innovación docente en el área de la electrónica digital.
Su tarea de investigación se ha centrado en el desarrollo de dispositivos optoelectrónicos, sensores, instrumentación y
análisis de datos siendo autor de más de múltiples artículos de divulgación científica y de comunicaciones en congresos
científicos internacionales

Eduardo García Breijo

Ingeniero Técnico Industrial en la Universitat Politècnica de València (UPV), Ingeniero en Electrónica (Universitat de
València) y doctor por la UPV (2004).

Catedrático de Universidad adscrito al Departamento de Ingeniería Electrónica de la Universitat Politècnica de València.


Lleva impartiendo docencia hace más de 25 años en asignaturas relacionadas con la electrónica digital. Es autor de varios
libros sobre electrónica digital, microcontroladores y simulación de circuitos digitales en editoriales tanto de la UPV como
nacionales e internacionales. Además, ha participado en proyectos de innovación docente en el área de la electrónica
digital.

También ha publicado artículos de divulgación científica y ha participado en congresos de innovación docente en el


área de la electrónica digital
PRÓLOGO

Los autores del libro deseamos ofrecer a los estudiantes de electrónica digital una amplia colección
de problemas resueltos y de preguntas de tipo test sobre la materia. Este material surge como resultado de
la amplia experiencia docente a lo largo de varios años en la asignatura de Electrónica Digital en el Grado
en Ingeniería Electrónica Industrial y Automática de la Universitat Politècnica de València (UPV) pero el
libro se ha enfocado y redactado para que sea útil para estudiantes de otras titulaciones y universidades
donde se impartan conocimientos de electrónica digital. Como esta publicación incluye únicamente
problemas, al inicio de cada tema se ha incorporado una amplia y detallada bibliografía donde el
alumno podrá aprender o ampliar los conocimientos teóricos necesarios para que pueda entender y
resolver los ejercicios y problemas desarrollados en esta publicación.
La publicación se divide en dos partes, la primera corresponde a los conceptos generales de
electrónica digital utilizando circuitos integrados estándar y donde también se incluyen dispositivos
programables por hardware (PLD) con un especial énfasis en resolución de problemas de conexión de
elementos de entrada y salida a dispositivos digitales, al desarrollo de sistemas secuenciales síncronos y la
programación en lenguaje VHDL. La segunda parte del libro se dedica a los dispositivos microcontroladores.
En la actualidad nos hemos centrado en el dispositivo PIC16F88 de Microchip. Esta parte se basa
fundamentalmente en la programación en lenguaje C (con compilador XC8) de las diversas prácticas y para
desarrollar un trabajo final de la asignatura. Estas tareas poseen una naturaleza bien distinta de la primera
parte de la asignatura.
La presentación de los problemas se realiza por temas. Para cada uno se ofrecen una serie de
preguntas de tipo test con cuatro respuestas alternativas donde se ofrece las soluciones después de la
última pregunta y por otra parte se presentan problemas resueltos. Además, al final de la primera parte se
ha incorporado un capítulo con problemas de sistemas digitales completos que incluyen problemas de
mayor complejidad y envergadura, donde se abarcan los contenidos de distintos temas anteriores. De
esta forma se pretende que el alumno vea una aplicación más real y completa de los contenidos que
se van desgranando en cada uno de los temas.
Esperamos que con esta publicación el alumno pueda lograr los conocimientos necesarios para
superar esta asignatura y que además le sea útil en el resto de los estudios de la electrónica.

I
ÍNDICE

TEMA 1. ELECTRÓNICA DIGITAL COMBINACIONAL .................................................................................... 1

TEMA 2. CIRCUITOS INTEGRADOS DIGITALES .......................................................................................... 13

TEMA 3. ASTABLE Y MONOESTABLE ........................................................................................................ 41

TEMA 4 BIESTABLES ................................................................................................................................ 47

TEMA 5. CONTADORES ............................................................................................................................ 55

TEMA 6. REGISTROS DE DESPLAZAMIENTO ............................................................................................. 63

TEMA 7. MÁQUINAS DE ESTADO ............................................................................................................. 71

TEMA 8. MEMORIAS ............................................................................................................................... 95

TEMA 9. DISPOSITIVOS LÓGICOS PROGRAMABLES (PLD) ......................................................................... 99


LENGUAJE VHDL ................................................................................................................................ 102

TEMA 10. SISTEMAS DIGITALES COMPLETOS ......................................................................................... 119

TEMA 11. MICROCONTROLADORES ....................................................................................................... 153

MICROPROCESADOR PIC16F88 ......................................................................................................... 155

TEMA 12. LENGUAJE C PARA COMPILADOR XC8 .................................................................................... 159


A - CONTROL DE PUERTOS ................................................................................................................ 160
B - TEMPORIZACIONES ...................................................................................................................... 166
C - SALIDAS EN DISPLAY DE 7 SEGMENTOS ....................................................................................... 168
D - SALIDAS EN PANEL LCD (16X2) ..................................................................................................... 170
E - CONVERSIÓN ANALÓGICA - DIGITAL ............................................................................................ 177
F - TEMPORIZADORES TMR0 Y TMR1 ............................................................................................... 187
PROBLEMA EXÁMENES SOBRE PIC16F88 .......................................................................................... 191

ANEXO .................................................................................................................................................. 215


LIBRERÍA CONTROL PANEL LCD ......................................................................................................... 215
LIBRERÍA PARA CONTROL DEL CONVERTIDOR ANALÓGICO/DIGITAL ............................................... 216
LIBRERÍA PARA CONTROL PWM ........................................................................................................ 217

BIBLIOGRAFÍA GENERAL ........................................................................................................................ 219

III
Archivos complementarios

El lector podrá descargar los archivos que corresponden a las diferentes librerías relacionadas en el libro
a partir de los siguientes enlaces o código QR

upvADlib.png tiny.cc/0153_upvADlib

upvLCDlib.png tiny.cc/0153_upvLCDlib

upvPWMlib.png tiny.cc/0153_upvPWMlib

IV
TEMA 1
ELECTRÓNICA DIGITAL
COMBINACIONAL

En este tema se realiza una introducción a la parte inicial de la electrónica digital, es decir los
sistemas de numeración binario y hexadecimal, las funciones y puertas lógicas, simplificación de funciones
y circuitos lógicos combinacionales (multiplexor, codificador, decodificador y circuitos aritmético-lógicos).
Para conocer y profundizar en los conceptos de este tema existe una amplia bibliografía ya que esta
parte es la más básica de la electrónica digital
A continuación se enumeran algunos libros de electrónica digital escritos en castellano, indicando
los temas en donde se desarrollan los aspectos referentes a funciones lógicas y electrónica combinacional:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Pearson Educación. Temas: 2, 3, 4,
5 y 6.
• Tocci, Ronald J. y otros. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson Educación.
Temas: 2, 3, 4, 6 y 9.
• Mandado, Enrique; Martín, José Luis. Sistemas Electrónicos Digitales”. 10º ed. Marcombo. Temas: 1, 2,
3 y 5.
• Mano, M. Morris (2016). Diseño Digital. 3ª ed. Pearson. Temas: 1, 2, 3, 4 y 5.
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Temas: 1,
2, 3, 4, 5 y 6.
• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital. Editorial Universitat
Politècnica de València. Temas: 1, 2 y 6.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València Temas: 1, 2, 3, 5 y 6.

1
Problemas de electrónica digital

PREGUNTAS TIPO TEST DE ELECTRÓNICA COMBINACIONAL

1. El número decimal 16 escrito en hexadecimal es:

a) 10 b) F c) 16 d) FF

2. El número escrito en BCD (Binary Code Decimal) 00101000 corresponde al decimal:


a) 40
b) 28
c) 101000
d) 10

3. ¿Cuál es el valor del complemento a dos del número binario: 1101?

a) 1101 b) 0010 c) 0011 d) 0010

4. ¿Qué función lógica corresponde a la siguiente tabla de verdad?

A B F
0 0 1 a) NOR exclusiva
0 1 0 b) NAND
1 0 0 c) NOR
1 1 1 d) OR exclusiva

5. La función lógica: = ∙ es equivalente a:

a) = +
b) = ∙
c) = +
d) = ∙

6. ¿Cuál es la función lógica en F del circuito de puertas de la figura?

a) F = ( A ⊕ B) ⋅ C
b) F = ( A ⋅ B) + C
c) F = ( A + B) ⋅ C
d) F = ( A ⊕ B ) ⊕ C

7. La función lógica = + + ̅ puede quedar simplificada:

a) B b) 1 c) A+B d) A

2
Tema 1.Electrónica digital combinacional

8. ¿Cuál de los siguientes circuitos digitales es de tipo secuencial?

a) Multiplexor
b) Codificador
c) Comparador
d) Ninguno de los anteriores

9. ¿Cuál de los siguientes circuitos digitales es de tipo combinacional?

a) Biestable
b) Multiplexor
c) Contador
d) Latch

10. ¿Cuál es la expresión más simplificada del siguiente cuadro de Karnaugh?

DC 00 01 11 10
BA a) ∙ ∙ + ∙ ∙
00 x 0 x x b) +
01 x 0 1 x c) ∙ + ∙
11 1 0 1 x d) ∙ +
10 1 0 x x

11. ¿Cuál es la expresión más simplificada del siguiente cuadro de Karnaugh?

CB 00 01 11 10 a) ⨁ ⨁
A b)
0 x 1 x 1 c) ∙ ∙ + ∙ ∙ + ∙ ∙ + ∙ ∙
1 1 x 1 x d) 1

12. ¿Cuántas entradas de control debe tener un multiplexor de 16 entradas de datos?

a) 3 b) 4 c) 8 d) 16

13. ¿Qué tarea realiza el siguiente circuito multiplexor (74157)?

a) Selección entre dos palabras de 4 bits cada una por medio de


una entrada de control
b) Selección entre cuatro palabras de 2 bits cada una por medio
de dos entradas de control
c) Selección entre ocho entradas de 1 bit por medio de tres
entradas de control
d) Ninguna de los anteriores

3
Problemas de electrónica digital

14. ¿Qué aplicación podemos obtener con un multiplexor analógico?

a) Mostrar el valor de salida digital en un visualizador de 7 segmentos


b) Conversión analógico-digital de una señal
c) Trabajar con múltiples sensores para un único sistema de medida
d) Realizar operaciones aritméticas analógicas

15. ¿Para qué se utiliza la entrada Latch Enable / Strobe del decodificador BCD – 7 segmentos (74HC4511)?

a) Para activar todas las salidas y encender todos


los segmentos del visualizador de 7 segmentos
b) Para desactivar todas las salidas y apagar todos
los segmentos del visualizador
c) Para bloquear todas las salidas y mantener la
información del visualizador
d) Para elegir un visualizador en ánodo o cátodo
común

16. El circuito integrado comparador de dos números de 4 bits (7485) posee 3 entradas auxiliares. ¿Cuál es
su misión?

a) Comparar más de dos números


b) Comparar dos números de más de 4 bits
c) Sumar el acarreo a los números a comparar
d) Seccionar los números a comparar

17. ¿Cuál es la diferencia entre un semisumador y un sumador completo de un bit?

a) El semisumador divide por la mitad el resultado de la suma


b) El semisumador no tiene en cuenta el acarreo inicial de la anterior suma
c) El semisumador no calcula el acarreo de salida
d) El sumador puede sumar números positivos y negativos mientras que el semisumador solo
números positivos

18. El acarreo final de salida de la suma de dos números binarios:

a) Se desprecia
b) Es el bit menos significativo del resultado de la suma
c) Es el bit más significativo del resultado de la suma
d) Es siempre cero

4
Tema 1.Electrónica digital combinacional

Soluciones

1. a) El número decimal 16 en binario es 10000. Para pasar de binario a hexadecimal se agrupan cada
cuatro bits empezando por el LSB.
2. b) Se toman grupos de 4 bits: 0010=2 y 1000=8
3. c) Se intercambian unos por ceros y se suma uno: 1101 ↔ 0010 + 1= 0011
4. a) = ⨁ = ∙ + ∙
5. a) Aplicación de la ley de Morgan e involución. = ̿ + = +
6. a) Combinación de puertas XOR, NOT y AND
7. b) + ̅ = 1, y 1+B=1
8. d) Todos los circuitos son combinacionales.
9. b) El resto de circuitos son secuenciales.
10. b) En una función incompleta los valores indeterminados (X) se pueden sustituir de forma independiente
por 1 o por 0. En este caso vale la pena sustituirlos todos por1 para así obtener la expresión final
más sencilla y se obtiene dos grupos de 8 celdas.
11. d) Todas las X se substituyen por 1
12. b) 24=16
13. a) Dicho C.I. está formado por cuatro multiplexores de dos entradas de datos cada uno con una entrada
de selección común.
14. c) El multiplexor selecciona una de varias entradas de datos, como es analógico permite trabajar con
sensores.
15. c) la entrada LE/STB: 1: Lath Enable; 0= Strobe (bloquea)
16. b) En este caso se utilizan dos C.I., uno para los cuatro bits de menor peso y el otro para los de mayor
peso
17. b) Solo suma dos bits
18. c) El acarreo final es bit más significativo del resultado

5
Problemas de electrónica digital

PROBLEMAS. ELECTRÓNICA COMBINACIONAL


Problema 1.1
Diseñar el circuito lógico de un sistema de votación de un jurado de 3 miembros (A, B y C). Cada miembro
vota 0 o 1. La salida del circuito es una lámpara (F), esta lámpara estará encendida (1) cuando la mayoría de
los miembros del jurado vote 1 y estará apagada (0) cuando la mayoría vote 0.

Realizar:
a) Tabla de verdad y función lógica canónica.
b) Simplificar mediante cuadros de Karnaugh. Escribir la función lógica.
c) Dibujar el circuito lógico simplificado.

Solución
a)
A B C F Fijándose en las combinaciones en las que F vale 1
0 0 0 0
0 0 1 0 = ̅∙ ∙ + ∙ ∙ + ∙ ∙ ̅+ ̅∙ ∙
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

B)
AB 00 01 11 10 Función simplificada (suma de los grupos de la
C A∙B tabla)
0 0 0 1 0
1 0 1 1 1 = ∙ + ∙ + ∙
A∙C
B∙C

C)

6
Tema 1.Electrónica digital combinacional

Problema 1.2
Diseñar un circuito lógico para la selección de 2 alarmas (A y B) en una salida F mediante una entrada de
selección (S ), Si C=0 entonces F vale lo mismo que A y si C=1 entonces F vale lo mismo que B.

Alarma A
(0 ó 1) A Alarma A o B
Circuito F
Alarma B a
(0 ó 1) Diseñar Si C=0 → F = Alarma A
B Si C=1 → F = Alarma B

Selector
S
Realizar:
a) Tabla de verdad y función lógica canónica.
b) Simplificar mediante cuadros de Karnaugh. Escribir la función lógica.
c) Obtener función lógica utilizando solo la función NAND de dos entradas.
d) Dibujar el circuito lógico simplificado con C.I. 7400 (puertas NAND de dos entradas).

Solución
a)
S A B F Fijándose en las combinaciones en las que F vale 1
0 0 0 0
0 0 1 0 = ̅∙ ∙ + ̅∙ ∙ + ∙ ̅∙ + ∙ ∙
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1

B)
AB 00 01 11 10 Realizando la suma lógica de la expresión de cada
S grupo:
0 0 0 1 1 /S∙A
1 0 1 1 1 = ̅∙ + ∙
S∙B

c) Negando dos veces y aplicando la ley de Morgan:

= ̅∙ + ∙ = ̅∙ + ∙ = ̅∙ ∙ ∙

Con 4 puertas NAND de dos entradas solo se necesita un C.I. 7400

7
Problemas de electrónica digital

Problema 1.3
Diseñar un circuito lógico que permita seleccionar 2 magnitudes: TEMPERATURA (A) y HORA (B) de UN
dÍígito (BCD) para mostrarlo en un visualizador de 7 segmentos (F) mediante una entrada de selección (S),
de forma que si S=0 entonces F corresponde con A y si S=1 entonces F corresponde con B. Además, existe
una señal de bloqueo (E) de forma que permita mantener el valor del visualizadoraunque se cambie las
entradas

Solución

Se puede utilizar un multiplexor de dos números de cuatro bits cada uno (74HC157). Para la salida se
utilizará un circuito decodificador de BCD a 7 segmentos (74HC4511) y un visualizadorde 7 segmentos con
sus resistencias limitadoras de corriente. Este decodificador posee una entrada LE/STB donde se conecta la
entrada E de forma que si E=0 habilita las entradas y si E=1 las bloquea.

8
Tema 1.Electrónica digital combinacional

Problema 1.4
Diseñar un circuito lógico que permita seleccionar 2 magnitudes: Temperatura (A) y Hora (B) de DOS dígitos
(BCD) cada una para mostrarlo en dos visualizadorde 7 segmentos (F) mediante una entrada de selección
(S), de forma que si S=0 entonces F corresponde con A y si S=1 entonces F corresponde con B.

Solución

Es una extensión del problema anterior, simplemente hay que utilizar dos multiplexores dobles de 4 bits
(74HC157), pero con el control (S) común a ambos multiplexores. En este caso no hay entrada de
bloqueo por lo que no se ha incorporado un circuito decodificador de BCD a 7 segmentos (74HC4511).

9
Problemas de electrónica digital

Problema 1.5
Diseñar el circuito lógico para el control de una máquina fotocopiadora. Esta máquina tiene una selección
del número de copias a realizar (Preset) de un máximo de 9 copias y un contador del número de copias
realizadas. El sistema determinará cuando la máquina tiene que parar. Además, indicará el número de
copias realizadas y las que faltan por realizar, ambos datos se mostrarán en un visualizador de 7 segmentos.

Solución

Se realizará una comparación entre el número de selección de copias (preset) y el del contador, para ello se
utilizará un circuito comparador 7485, donde la salida A=B servirá para indicar Stop.
Para saber el número de las copias que faltan por realizar es necesario un circuito restador (resta el valor
de la selección menos el valor del contador). Para lograr una resta hay que sumar el minuendo con el
complemento a dos del sustraendo. El complemento a dos de un número se obtiene intercambiando unos por
ceros y al resultado se suma uno.
Para obtener el circuito restador se utiliza un circuito sumador (7483) y cuatro puertas inversoras para
invertir el valor de contador. La entrada de acarreo inicial se conecta a tensión de alimentación (Vcc) para
sumar uno. Se añaden dos visualizadores de 7 segmentos para conocer el número de copias realizadas y las
que faltan por realizar.

10
Tema 1.Electrónica digital combinacional

Problema 1.6
Diseñar un circuito lógico para el control de la dirección del motor de un ascensor (arriba, abajo o paro) de
un edificio de 8 plantas (0 a 7).
• F0…F7 es el sensor de presencia del ascensor en una planta (final de carrera).
• B0...B7 es el botón de llamada al ascensor desde rellano.
• Deberá haber un visualizador de siete segmentos donde se indica la posición (planta) donde se
encuentre el ascensor y otro del piso de llamada.
• Utilizar bloques de circuitos digitales combinacionales.

Solución

La entrada de cada pulsador y de cada posición del ascensor se codificará a binario mediante codificador de 8 a
3. Posteriormente se realizará una comparación entre ambos números y en función del resultado se sabe si el
ascensor tiene que subir, bajar o permanecer parado.

Otra opción es utilizar dos C.I. comparadores de 4 bits cada uno (7485) conectados en cascada. De esta
forma se compararían ambos números directamente como dos números de ocho bits cada uno.

11
TEMA 2
CIRCUITOS INTEGRADOS
DIGITALES

En este tema se profundiza en las características eléctricas de los circuitos integrados digitales con
especial dedicación a la conexión de dispositivos a las entradas y a las salidas, estudiando los circuitos
eléctricos de conexión y calculando los niveles de tensión y corriente.
La bibliografía de este tema es amplía en lo referente a las características físicas y eléctricas de los
circuitos integrados digitales, pero es muy limitada la referente a problemas con dispositivos de entrada y
de salida.

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Pearson Educación. Tema: 12.
• Tocci, Ronald J. y otros. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson. Tema: 8
• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 6.
• Mano, M. Morris (2016). Diseño Digital. 3ª ed. Pearson. Tema: 10.
• Roth, Charles H. (2004) Fundamentos de Diseño Lógico. 5ª ed. Paraninfo. Temas: 1, 2, 3, 4, 5, 7, 8 y 9
• Hermosa, Antonio (1997). Técnicas electrónicas digitales: tecnología y circuitería en TTL y CMOS. Ed.
Marcombo.
• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital. Editorial Universitat
Politècnica de València. Tema: 3
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València.. Tema: 4

PREGUNTAS DE TIPO TEST CIRCUITOS INTEGRADOS DIGITALES


1. ¿Cuál es la cargabilidad a nivel bajo de las puertas lógicas que tienen los siguientes datos de catálogo?

IIHmax = 0,4 mA; IOHmax = -50 mA; IILmax = -1 mA; IOLmax = 25 mA


a) -2
b) 50
c) 25
d) No hay ninguna cargabilidad porque sale un valor negativo

13
Problemas de electrónica digital

2. La tensión de entrada a nivel bajo de una puerta lógica está comprendida entre:
a) 0 y VILmax
b) VILmax y VIHmin
c) VIHmin y Vcc
d) 0 y Vcc

3. ¿Cuál es margen de ruido a nivel alto de las puertas lógicas que tienen los siguientes datos de
catálogo? VIHmin= 3V; VOHmin= 4V; VILmax= 0,6V; VOLmax= 0,2V

a) 1V b) 0,6V c) 0,4V d) 0,2V

4. La puerta lógica de la figura (74LS00) tiene salida en totem-pole, ¿Qué error se ha cometido al montar
el circuito?

a) Falta la resistencia de pull-up entre la salida de la puerta y


alimentación.
b) El transistor debe ser de tipo MOS.
c) La salida de la puerta lógica no puede ser negada.
d) Falta la resistencia entre la salida de la puerta y la base del
transistor.

5. ¿Por qué se dice que la tecnología TTL es bipolar?


a) Porque los dispositivos tienen un polo positivo y otro negativo.
b) Porque está formada por transistores bipolares (BJT) en conmutación.
c) Porque es bidireccional, es decir las entradas y salidas de los dispositivos se pueden intercambiar.
d) Porque se puede alimentar tanto con tensión positiva como tensión negativa.

6. A las puertas lógicas que poseen una salida en alta impedancia se denominan:
a) Colector abierto.
b) Buffer.
c) Histéresis.
d) Triestado.

7. ¿Cuál debe ser el valor máximo de R para asegurar un nivel bajo de tensión en la entrada de la puerta
TTL de la figura, cuando el interruptor esté abierto?

14
Tema 2. Circuitos integrados digitales

Datos de la puerta lógica: +5V

VILmax = 1 V; VIHmin = 2,2 V; IIL = - 0,5 mA


Vi Vo
a) 1,2 KΩ
b) 2 KΩ R IIL
c) 3 KΩ
d) 5 KΩ

8. En la pregunta anterior el valor de la IIL es un número negativo. ¿Cuál debe ser el motivo?

a) Que la puerta necesita una fuente de tensión de alimentación negativa.


b) En las puertas digitales las tensiones y corrientes son siempre positivas, luego no tiene sentido, es
un error.
c) Que la corriente sale de la puerta.
d) Que la corriente corresponde a la entrada de la puerta (Vi).

9. En una puerta inversora CMOS el transistor Q1 conducirá:

+Vdd
G1 S1
a) Cuando también lo haga Q2.
Q1 b) Cuando a la entrada se le aplica una señal cercana a Vdd.
Entrada A D1 Salida Y c) Cuando a la entrada se le aplica una señal cercana a cero.
D2
d) Siempre debe conducir Q1 para así permitir la corriente de
Q2
G2 salida.
S2

10. En las puertas lógicas con tecnología TTL, las corrientes de entrada IIH e IIL (en valores absolutos) suele
ser:

a) IIH > IIL


b) IIH < IIL
c) IIH = IIL
d) Ninguna de las anteriores

11. ¿Cuál es el valor más adecuado de RB para activar el motor del circuito de la figura con I=400 mA?
Siendo los datos del transistor: VBE=1 V; hFEmin=40 (βsat) y utilizando una puerta lógica con VOHmin=4V.

a) 300 Ω
b) 400 Ω
c) 7,5 Ω
d) 1 KΩ

15
Problemas de electrónica digital

12. Una puerta inversora CMOS está formada por:

a) Dos transistores de canal n.


b) Dos transistores de canal p.
c) Dos transistores de canal C.
d) Un transistor MOS de canal n y otro de canal p.

13. Del circuito de la puerta inversora Tótem-Pole de la figura, ¿Cuál es el estado de conducción de Q3 y Q4
cuando se encuentra la salida de la puerta en nivel alto:

a) No conducen ninguno de los dos


b) Conduce Q4, pero no Q3
c) Conduce Q3, pero no Q4
d) Conducen los dos

14. Las puertas con histéresis se caracterizan por tener:

a) Poseer un tercer estado en alta impedancia


b) Salida en colector abierto
c) Actúan como un filtro para la eliminación de los rebotes de los pulsadores de entrada
d) El nivel de tensión para la conmutación de nivel bajo a nivel alto (L → H) es diferente de nivel alto a
bajo (H → L)

15. Por el LED se desea que circule una corriente de I=20mA,


si Vcc=5V, VD=1,6V y VOL=0,4V. ¿Cuál debe ser el valor
más adecuado de R?

a) 250Ω
b) 230Ω
c) 170Ω
d) 150 Ω

16
Tema 2. Circuitos integrados digitales

Soluciones

1. c) Cargabilidad a nivel bajo = |IOLmax/ IILmax| = |25 mA /-1 mA| = 25


2. a) VIL es rango de tensión entre 0V y VILmax
3. a) Margen ruido nivel alto: NMH= VOHmin - VIHmin = 4V-3V = 1V
4. d) Sin resistencia de base se aplica la tensión de salida directamente a la base del transistor y el circuito
no funciona adecuadamente.
5. b) TTL: Transistor-Transistor Logic.
6. d) La salida de las puertas triestado pueden encontrarse a nivel alto, nivel bajo o alta impedancia.
7. b) Rmax=VILmax / IIL = 1V/0,5mA = 2 KΩ.
8. c) Las corrientes que entran en un C.I. se consideran positivas y las que salen del C.I. negativas
9. c) Q1 es un transistor de canal P luego conducirá cuando en su puerta (G1) se aplique una tensión
negativa respecto al surtidor S1.
10. b) En cambio en tecnología CMOS estos valores son iguales para nivel alto y bajo.
11. a) = = = 300Ω.
/

12. d) CMOS significa “Complementary MOS” es decir un transistor de canal n y otro de canal p
13. c) La salida debe tener acceso a tensión de alimentación por medio de Q3 y desconexión de masa por
Q4.
14. d) El nombre procede por similitud con materiales magnéticos.
15. d) R=(Vcc-VD-VOLmax)/I = (5 - 1,6 - 0,4)/20mA= 150Ω

17
Problemas de electrónica digital

PROBLEMAS. CIRCUITOS INTEGRADOS DIGITALES


Problema 2.1
En los siguientes circuitos se controla la señal de entrada de la puerta lógica inversora de tecnología TTL
(74LS04) mediante un interruptor y una resistencia para conectar la entrada (Vi) a nivel alto (Vcc=+5V) o a
nivel bajo (GND).
Obtener el valor máximo de las resistencias R1 y R2 de forma que, cuando el interruptor esté abierto,
a la entrada de la puerta se tenga bien definido el nivel lógico correspondiente en cada caso.

Fuente: 74LS04. ON Semiconductor, 1999

Solución
R1: Resistencia debajo del interruptor.
Para determinar el valor máximo de R hay tener en cuenta que cuando el interruptor esté abierto por la R
circula una corriente procedente de la entrada de la puerta lógica que provocará una caída de tensión en la R.
Para que la entrada (Vi) se mantenga un nivel bajo (L) la tensión en la resistencia deberá ser menor que la
VILmáx=0,8V. Por otro lado, la corriente de entrada puede ser hasta IILmax=0,4 mA.
Luego la Rmáx= VILmáx/IILmax = 0,8V/0,4mA= 2KΩ. (Valor bajo).
En cuanto al valor mínimo, hay que tener en cuenta que afectará al consumo cuando el interruptor esté
cerrado ya que: I=Vcc/R.

R2: Resistencia arriba del interruptor


De forma similar al caso anterior, para determinar el valor máximo de R hay tener en cuenta que
cuando el interruptor esté abierto por la R circula una corriente procedente de la entrada de la puerta
lógica que provocará una caída de tensión. Para que en la entrada (Vi) se mantenga un nivel alto (H) la
tensión en la resistencia deberá ser superior que la VIHmin =2V. Por otro lado, la corriente de entrada puede
ser hasta IIHmax=20µA. Luego la Rmáx = (Vcc-VILmáx)/IILmax = (5-2V)/ 20µA = 150KΩ. Valor superior al
caso anterior.
En cuanto al valor mínimo, hay que tener en cuenta que afectará al consumo cuando el interruptor
esté cerrado ya que: I=Vcc/R.

18
Tema 2. Circuitos integrados digitales

Problema 2.2
De forma similar al ejercicio 1, determinar los valores máximos de las resistencias (R1 y R2) para el control
de entrada una puerta de tecnología CMOS (74HCT04) por medio de interruptor.

Fuente: 74HCT04. ON Semiconductor, 2007

Solución

R1: Resistencia debajo del interruptor.


De forma similar al ejercicio 1, para que en la entrada (Vi) se mantenga un nivel bajo (L) cuando el
interruptor está la tensión en la resistencia deberá ser menor que la VILmáx=0.8V. Por otro lado, la corriente de
entrada puede ser hasta IILmax = ±0,1µA.
Luego la Rmáx = VILmáx/IILmax = 0,8V/0,1µA = 800KΩ.
En cuanto al valor mínimo, hay que tener en cuenta que afectará al consumo cuando el interruptor esté cerrado
ya que: I = Vcc/R.

R2: Resistencia arriba del interruptor


En la tecnología CMOS las corrientes de entrada de entrada (II) son iguales tanto a nivel alto como a nivel
bajo. En la tabla IImax=±0,1µA.
Para que en la entrada (Vi) se mantenga un nivel alto (H) la tensión en la resistencia deberá ser
superior que la VIHmin=2V. Luego la Rmáx = 5-VILmáx/IILmax = 5-2V/0,1µA= 30MΩ. (valor elevado).

En cuanto al valor mínimo, hay que tener en cuenta que afectará al consumo cuando el interruptor
esté cerrado ya que: I=Vcc/R.

19
Problemas de electrónica digital

Problema 2.3
Se desea diseñar el control de entrada de un garaje mediante un sensor óptico de barrera de forma que,
cuando pasa un vehículo (corta la barrera) se debe generar una señal de nivel de tensión alto (H) a un
circuito digital formado dispositivos de tecnología HCT. El sensor óptico está formado por LDR de modo que
cuando no hay vehículo (llega luz) la resistencia es R = 500Ω y cuando se corta la barrera (oscuridad) es
R = 10KΩ

Fuente: 74HCT04. ON Semiconductor, 2007

Solución

a) Circuito de entrada. La LDR junto con la resistencia R forma un divisor de tensión que aplica una
Vcc ⋅ LDR LDR ⋅ (Vcc − VI )
tensión a la entrada de la puerta NOT: VI = → RI =
R1 + LDR VI

De esta forma, cuando haya luz la resistencia de LDR disminuye y la Vi disminuye y cuando haya oscuridad
la resistencia de LDR aumenta y la Vi aumenta.
Oscuridad: : la salida debe ser un “1” lógico (>VIHmín):

Vcc ⋅ LDRosc LDRosc ⋅ (Vcc − VIH min ) 10 K ⋅ (5 − 2)


VI > VIH min = → RI = = = 15 KΩ
R1 + LDRosc VIH min 2

Luz: la salida debe ser un “0” lógico (<VILmax):

Vcc ⋅ LDRluz LDRluz ⋅ (Vcc − VIL max ) 500 ⋅ (5 − 0,8)


VI > VIL max = → RI = = = 2,62 KΩ
R1 + LDRluz VIL max 0,8

Se toma un valor normalizado intermedio de los extremos. Ej: 8,81KΩ (normalizada 8,6KΩ)

20
Tema 2. Circuitos integrados digitales

Problema 2.4
Determinar valor de R1 y R2 en cada uno de los circuitos de la figura para que circule por LED rojo una
corriente ID=15mA, sabiendo que la caída de tensión en el LED es: VD=1,6V. Puertas 74LS04 y 74HCT04.

Solución

74LS04.

Fuente: 74LS04. ON Semiconductor, 1999

Según datos de esta puerta lógica las corrientes: IOHmax = -0,4 mA y IOLmax = 8 mA, por lo que es inferior a la corriente que
precisa el LED (ID = 15mA).
En la práctica el circuito integrado sí que puede suministrar corriente suficiente para iluminar el LED, pero a costa de
bajar la tensión. De esta forma las fórmulas del cálculo de la resistencia no son válidas.

74HCT04.

Fuente: 74HCT04. ON Semiconductor, 2007

Según datos de la puerta las tensiones de salida límites a T=25ºC son: VOHmin =3,84V y VOLmin =0,26V
, ,
a) Activo por nivel alto. 1 = = = 150Ω
, ,
b) Activo por nivel bajo: 2 = = = 209Ω

21
Problemas de electrónica digital

Problema 2.5
Diseñar un circuito necesario para activar un pequeño motor de continua que funciona a 12V y que
necesita una corriente de 400 mA mediante una puerta inversora 74LS04 y 74HCT04 con la salida a nivel
“H”. Utilizar el transistor bipolar BD135 (ICmax=2A; βsat=40 (hFEmin); .VBEmax=1V)

Fuente BD135G ON Semiconductor, 2013

Fuente BD135G ON Semiconductor, 2013

Solución

La corriente de colector del transistor será 400mA (menor que ICmáx (BD135)=1,5A).
IC 400 mA
La de base: I B = = = 10 mA
β sat 40

Puerta 74LS04. IOHmax=-0,4mA es inferior a la que necesita la base del transistor luego no es valida para
esta aplicación.

Puerta 74HCT04. IOHmax= -25mA > IB=25mA. Sí que es válida para esta aplicación.

VOHmín − VBEsat 4V − 1V
RB = = = 300Ω
IB 10mA

Como valor normalizado se puede tomar RB=270Ω


(inferior al valor calculado para así asegurar la saturación del transistor)

Nota. En estos primeros ejercicios se ha comprobado que las puertas de tecnología CMOS (HCT) es mucho
más adecuada que las de tecnología TTL (subfamilia LS) para realizar tareas de control de tensión y
corriente a la entrada y de salida de los circuitos integrados. Por este motivo en el resto de los problemas
de este tema se va a utilizar mayoritariamente circuitos integrados CMOS concretamente de la subfamilia
HCT, que además es compatible con TTL.

22
Tema 2. Circuitos integrados digitales

Problema 2.6

Se desea controlar el encendido y apagado de una lámpara incandescente (L1) de 12V/2W mediante un
sensor de luz (LDR) de forma que en claridad (LDRluz = 200 Ω) la lámpara permanezca apagada y en
oscuridad (LDRosc = 10 kΩ) la lámpara permanezca encendida.
Se utiliza el circuito de la figura que consiste en un adaptador de señal de la LDR de tal forma que, en cada
uno de los extremos de luminosidad posible (Claridad/Oscuridad) suministre una tensión que sea
compatible con los niveles lógicos de una puerta inversora de tecnología HCT.
Determinar el rango de variación de la resistencia RB y elegir un valor.
A. La salida de la puerta lógica debe controlar la lámpara L1.
B. Comprobar que hace una falta una etapa de amplificación de corriente (Q1). Utilizar un transistor
BD135 (datos en problema anterior: βsat=40, VBEmax=1V;: ICmax =1,5A)
C. Calcular un valor adecuado de RB.

Solución

b) Circuito de entrada. La LDR junto con la resistencia R forma un divisor de tensión que aplica una
5 ⋅ R1
tensión a la entrada de la puerta NOT: VI =
R1 + LDR

De esta forma, cuando haya luz la resistencia de LDR disminuye y la Vi aumenta y cuando haya oscuridad
la resistenci de LDR aumenta y la Vi disminuye.

Oscuridad: : la salida debe ser un “0” lógico (<VILmax):


5 ⋅ R1
VI < VIL max = ; VIL max ⋅ R1 + VIL max ⋅ LDRosc = 5 ⋅ R1
R1 + LDRosc

VIL max ⋅ LDRosc 0,8 ⋅ 10 K


R1 = = = 1904Ω
5 − VIL max 5 − 0,8

Luz: la salida debe ser un “1” lógico (>VIHmín):

23
Problemas de electrónica digital

5 ⋅ R1 VIH min ⋅ LDRluz 2 ⋅ 200


VI > VIH min = R1 = = = 133,3Ω
R1 + LDRluz 5 − VIH min 5− 2

Se toma un valor normalizado intermedio de los extremos. Ej: 1KΩ

c) Circuito de salida

La corriente de colector del transistor será Ic=P/V=2/12=166mA (<Iomax=25mA).


IC 166mA
La de base: I B = = = 4,15mA (<IOHmín)
β sat 40
V − V BEsat 4V − 1V
Así, R B = OHmín = = 722 Ω . Como valor normalizado se puede tomar RB=390Ω
IB 4,15 mA

Problema 2.7
Diseñar un circuito necesario para activar un pequeño motor de continua que funciona a 12V y que
necesita una corriente de 200mA mediante una puerta inversora 74LS06 (COLECTOR ABIERTO) con la salida
a nivel “H”. Utilizar el transistor bipolar BD135.

Solución

La corriente de colector del transistor será Ic = P/V = 2/12 =166mA.


IC 200mA
La corrient de base: I B = = = 5mA
β sat 40

VCC − VBEsat 12V − 1V


R1 = = = 2200Ω
IB 5mA

24
Tema 2. Circuitos integrados digitales

Problema 2.8
Se pretende diseñar un sistema de transporte de objetos formado por:
a) un pequeño motor de C.C. (12V, 300 mA) que hace girar una cinta transportadora
b) dos barreras fotoeléctricas (A y B) formadas cada una por una lámpara y un sensor de luz (LA-SA y
LB-SB). Los sensores son LDR con Rluz = 200 Ω y Roscuridad = 5 KΩ.
c) Un interruptor P que determina el funcionamiento del sistema.

El funcionamiento del sistema es el siguiente:

a) Si “P” está abierto el control del sistema lo determina la barrera A. Es decir, si un objeto corta la
barrera A, el motor se detiene para realizar un proceso A e ignora a la barrera B.
b) Si “P” está cerrado el control del sistema lo determina la barrera B. Es decir, si un objeto corta la
barrera B, el motor se detiene para realizar un proceso B e ignora a la barrera A.
c) Si no se detecta ningún objeto el motor estará en funcionamiento permanentemente. Así mismo,
considerar las lámparas LA y LB encendidas permanentemente.

Se pide:

1) Diseñar un circuito para el interruptor P de forma que cuando esté abierto proporcione un “0” lógico y
cuando esté cerrado un “1” lógico.
2) A partir de las características de las puertas lógicas, diseñar el circuito de polarización de las LDR para
que en ausencia de objeto proporcionen un “1” lógico y cuando detecten un objeto proporcionen un
“0” lógico.
3) Diseñar el circuito de excitación del motor para que gire con un “1” lógico. Utilizar, si es necesario,
transistores bipolares de propósito general (βsat = 40, ICmáx = 2A, VBEsat = 1V).
4) Utilizando el mínimo número de puertas NAND cuyas hojas características se adjuntan, diseñar el
circuito de control para el funcionamiento previsto. Dibujar el esquema completo. Se considera una
alimentación de +5V para los circuitos lógicos y de +12V para el motor.

25
Problemas de electrónica digital

Datos de las hojas características del 74HCT00:

Fuente: 74HCT04 de ON Semiconductor, 2007

Fuente: 74HCT04. ON Semiconductor, 2007

Los fabricantes pueden ofrecer gran variedad de valores de cada parámetro según las condiciones de
test del circuito. En las tablas las condiciones para la tensión de salida (Vo) son la corriente de salida y la
temperatura. Se ha elegido los valores para temperatura ambiente de 25ºC y la de la corriente más cercana
al ejemplo del problema.. Estos valores son los que se han marcado en las tablas.

Solución

a)
Como la IILmax =0,1μA es muy pequeña, para hacer los cálculos se desprecia respecto
a la que puede circular por la R.

Para determinar el valor máximo de R hay que tener en cuenta que cuando el
interruptor esté abierto por la R circula una corriente que provocará una c.d.t. que
deberá ser menor que la VILmáx=0.8V; para así estar seguro que en la entrada hay un
nivel bajo (L). Esta tensión se produce por una corriente que como máximo es
IILmax=0,1μA

Luego la Rmáx= VILmáx / IILmax = 0,8V/0,1μA= 8MΩ. Valor muy elevado, común para la tecnología CMOS.

26
Tema 2. Circuitos integrados digitales

En cuanto al valor mínimo, hay que tener en cuenta que afectará al consumo cuando el interruptor esté
cerrado ya que: I=5V/R.

Suele ser válido cualquier valor de R entre 1KΩ y 100KΩ

b)
La primera decisión es determinar si la LDR va arriba o debajo de la R.

Como el enunciado indica que debe haber un 1 lógico cuando haya luz en la LDR
y o lógico cuando haya oscuridad, la LDR debe conectarse entre Vcc y entrada
5 ⋅ R1
(arriba) porque así el divisor de tensión es: VI =
R1 + LDR
De esta forma, cuando haya luz la resistencia de LDR disminuye y la Vi aumenta y
cuando haya oscuridad la resistenci de LDR aumenta y la Vi disminuye.

Datos:

LDRluz=0.2K; LDRosc=5K; VILmáx=0.8V.; VIHmín=2V.

Se calculan los valores extremos de R1 que cumpla esas condicines y se elege un valor intermedio:

Oscuridad: : la salida debe ser un “0” lógico (<VILmax):


5 ⋅ R1 VIL max ⋅ R1 + VIL max ⋅ LDRosc = 5 ⋅ R1
VI < VIL max = ;
R1 + LDRosc

VIL max ⋅ LDRosc 0,8 ⋅ 5K


R1 = = = 952Ω
5 − VIL max 5 − 0,8

Luz: la salida debe ser un “1” lógico (>VIHmín):

5 ⋅ R1 VIH min ⋅ LDRluz 2 ⋅ 200


VI > VIH min = R1 = = = 133,3Ω
R1 + LDRluz 5 − VIH min 5− 2

Se toma un valor normalizado intermedio de los extremos. Ej: 560Ω

c)
La corriente de colector del transistor será 300mA
(<Icmáx=2A).
IC
La de base: I B =
β mín =
300mA = 7,5mA (<IOHmín)
40
VOHmín − VBEsat 4V − 1V
Así, RB = = = 0,4 K
IB 7,5mA
Como valor normalizado se puede tomar RB=390Ω

27
Problemas de electrónica digital

d)
Tabla de verdad
P SA SB M
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1

Mapa de Karnaught M = P ⋅ SA + P ⋅ SB

P
SA,SB 00 01 11 10 M = P ⋅ S A ·P ⋅ S B
0 0 0 1 1
1 0 1 1 0

Circuito Final Completo:

28
Tema 2. Circuitos integrados digitales

Problema. 2.9
Se desea realizar una instalación de seguridad para un aula-laboratorio. Se dispone para ello de tres
elementos sensores y un actuador:

Sensores:
• Detector de presencia (DP). Sensor PIR que actúa sobre un contacto que está normalmente cerrado y al
detectar la presencia de un ser vivo se abre.
• Detector de apertura de puerta (AP). Contacto magnético que activa un interruptor. Si la puerta está
cerrada el interruptor está cerrado. Si la puerta está abierta el interruptor está abierto.
• Detector de día/noche (DN). Se utiliza una LDR para detectar si es de día (RLDR=1KΩ) o de noche
(RLDR=50KΩ).

Actuador:
• Sirena eléctrica (S) de 12V, 3W.

La alarma se debe activar en las siguientes condiciones:


Si es de día, la puerta está cerrada y hay presencia de gente.
Si es de noche y hay presencia de gente.

Para la realización del circuito electrónico se utilizarán puertas NAND de dos entradas 74LS00 de la
familia TTL cuyas características se adjuntan.

Se pide:

a) Diseñar los circuitos de adaptación del sensor PIR para que en presencia de gente proporcione un
“1” lógico y del detector magnético para que con la puerta cerrada proporcione un “0” lógico.
b) Diseñar el circuito de adaptación de la LDR para que durante el día suministre un “0” lógico y
durante la noche un “1” lógico.
c) Diseñar el circuito de excitación de la sirena desde una puerta lógica de forma que cuando esta
proporcione un “1” lógico la sirena se active. Utilizar, si es necesario, transistores bipolares de
media potencia con βsat = 50, VBEsat =1V, ICmáx=1A, VCEmáx = 100V.
d) Diseñar el circuito lógico para el funcionamiento descrito y dibujar el esquema completo.

29
Problemas de electrónica digital

Fuente. 74LS00 de Motorola

Solución

a. Sensores de Presencia

Los interruptores abiertos deben comportarse como “1” lógico:


Cálculo de R1 y R2
Despreciando la corriente de entrada a la puerta
VCC - R1·II >VIHmín ; por tanto: R1 < (5 - VIHmín)/II , siendo II=20μA y VIHmín=2V

Con ello, 1 < = 150 . El mismo valor que R2.

Valor normal R1=R2=100KΩ

b) Sensor Día-Noche

Cálculo de R. VDN= Vcc · LDR/(R3+LDR);


Día: LDR=1K y VDN < VILmax (0,8V), o sea:
∙ ∙( , )
< 0,8 , con ello → 3 > = 5,25
,

Noche: LDR=50K y VDN > VIHmin (2V), o sea:

∙ ∙( )
> 2 , con ello → 3 < = 75
Se elige un valor intermedio entre los dos extremos. Ej: R1=39K

30
Tema 2. Circuitos integrados digitales

c) Circuito de excitación de la sirena

Ic = P/V = 3W/12V = 0,25A.


IB= Ic/β = 0,25/50 = 5mA.

Como se debe activar a nivel alto:


VOHmin=RB· IB + VBE → RB < (VOHmin- VBE) / IB

( , )
Con ello < = 0,34

RB < 340Ω

4.- Diseño lógico.

DN AP DP S
DN: Día =0 / Noche=1
0 0 0 0
AP: Puerta (abierta 1 / cerrada=0)
0 0 1 0
0 1 0 1 DP: Gente=1 / Nadie=0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1

AP-DP
DN 00 01 11 10
0 1
1 1 1

S = DN ·DP + DP · AP y aplicando Morgan: S = DN ·DP · DP·AP

31
Problemas de electrónica digital

Problema 2.10
Se desea controlar una estación de riego compuesta por un depósito de agua y una bomba de impulsión
(B). El circuito a diseñar deberá activar la bomba (señal B) con un nivel lógico alto cuando se necesite
realizar el riego. Con el fin de controlar el proceso, se incluyen los siguientes elementos:

1.- Detector de nivel del depósito (D). Proporciona un nivel lógico bajo (L) si el depósito de agua está vacío
y un nivel alto (H) si el depósito está lleno.
2.- Sensor de humedad (H). Para controlar el estado del suelo se dispone de un sensor de humedad que
proporciona un nivel lógico alto si el campo necesita ser regado y un nivel bajo (L) si el terreno está
húmedo.
3.- Interruptor de estación (E). El interruptor se coloca en una de sus dos posiciones en función de la
estación del año (interruptor abierto = primavera-verano = “1” lógico; interruptor cerrado = otoño
invierno = ”0” lógico).
4.- Detector de día/noche (N). Se utiliza una LDR que presenta una resistencia en oscuridad > 10 KΩ y de
día < 1 kΩ. Proporciona un “1” lógico durante el día y un “0” lógico durante la noche.

La bomba B se deberá activar si el suelo está seco y hay agua en el depósito (con el fin de evitar que
se averíe la bomba al funcionar en vacío). En las estaciones cálidas solo se podrá regar de noche, mientras
que en el resto de las estaciones se podrá hacer en cualquier momento.

Se pide:

a) Obtener el circuito lógico para la activación de la bomba (utilizar puertas NAND de dos entradas).
b) Diseñar las conexiones del interruptor de estación para que cumpla las especificaciones dadas.
c) Diseñar el circuito de la LDR para que cumpla las especificaciones dadas.
d) Si la bomba utilizada es de 24V, 1A, Diseñar el circuito de activación necesario utilizando un
transistor bipolar de propósito general con βsat = 50 y VBEsat = 1 V.

Utilizar las puertas NAND de la familia 74HCT cuyas principales características eléctricas (T=25ºC) son:
Entrada: VIHmin= 2V; VILmax=2V, IImax=±0,1µA.
Salida: VOHmin=3,98V; VOLmax=0,26V, IOmax=±25mA

32
Tema 2. Circuitos integrados digitales

Solución

a)

b) Interruptor abierto = “1”; cerrado =”0”


Las puertas utilizadas son CMOS. La corriente de entrada es 1μA con
VIHmin=2V. La corriente de entrada de la puerta es depreciable frente a la del
divisor de tensión
Con el interruptor abierto, la caída de tensión en R1 deberá ser inferior a
Vcc- VIHmin = 5-2 = 3V (con alimentación de 5V);
con ello, R1máx= 3V/1μA;
R1 < 3MΩ; se puede escoger 100KΩ

c) LDRluz < 1KΩ → “1”; LDRosc > 10KΩ → “0”


VCC
VN = R2· ;
LDR + R2

De día, VN debe ser superior a VIHmín=2V, siendo LDR<1KΩ


5V
R2· > 2V  R2 > 0,67KΩ
1K + R2

De noche, VN debe ser inferior a VILmáx=0,8V; siendo LDR>10KΩ


5V
R2· < 0,8V  R2 < 1,9KΩ
10K + R2
Se puede elegir R2= 1K2.

33
Problemas de electrónica digital

d)
La bomba necesita 1A. por tanto la corriente de colector
será de 1A. Para saturar el transistor se necesita una
corriente de base mínima de:
IC 1A
IB ≥ ; IB ≥ ; IB ≥ 20mA
βsat 50

La corriente máxima que puede suministrar la puerta es


25mA. Para el cálculo de R3, la salida de la puerta a nivel
alto proporciona como mínimo VOHmín=3,84V

VB − VBEsat
VB = R3·I B + VBEsat → R3 ≤
IB
3,84 − 1
R3 ≤ = 147 Ω
20
Se puede tomar R3=100Ω

Circuito completo Final:

34
Tema 2. Circuitos integrados digitales

Problema 2.11

Diseñar un circuito electrónico digital para el control automático de la dirección de un coche de juguete
que debe circular siguiendo una pista guía negra entre las ruedas.

Vista Frontal:

El coche posee un interruptor (P) para la puesta en marcha (P=1) y pararlo (P=0).

Para lograr el control, el vehículo dispone de ruedas de tracción independiente, izquierda y derecha
(RI y RD) activadas por sendos motores, y de dos sensores ópticos junto a las ruedas formados por:
fotocélula de reflexión y de LDR (SI y SD).

Una vez puesto en marcha el vehículo, avanza siguiendo la guía con tracción en las dos ruedas, pero si
alguno de los 2 sensores detecta la pista negra actúa frenando su rueda correspondiente. Cuando el sensor
deje de detectar la pista negra volverá a poner en marcha la rueda correspondiente. En caso de que los dos
sensores detecten la pista negra el coche debe pararse. Para realizar el circuito digital se va a utilizar
circuitos integrados de la subfamilia HCT.

Determinar:

a) Circuito de acoplamiento del interruptor al circuito digital. Parado (P=0), marcha (P=1).
b) Circuito de acoplamiento de las fotocélulas al circuito digital por medio de LDR. La resistencia de la LDR
cuando el sensor detecta la zona blanca es RLDR=400 Ω y cuando no la detecta (toca la línea negra) es
RLDR=5 KΩ.
c) Circuito de control de los motores del coche de juguete MI y MD (características motores: I=400mA,
V=12V. Transistor: βsat=40, VBE=1).
d) Circuito lógico digital para el control de los motores de las ruedas (MI y MD) a partir de los sensores SI y
SD y del interruptor P.

35
Problemas de electrónica digital

Solución
a) Circuito de acoplamiento del interruptor al circuito digital.
Parado (P=0), marcha (P=1)
Interruptor arriba. Resistencia abajo.

R1max = VILmax/IILmax = 0,8V/0,1µA = 8MΩ

Ej. R1=100KΩ

b) Circuito de acoplamiento de las fotocélulas al circuito digital por medio de LDR

Detecta línea negra → LDRosc = 3KΩ → Nivel lógico 1


No detecta línea negra → LDRluz = 525Ω → Nivel lógico 0 LDR abajo

VI = Vcc⋅LDR/(R2+ LDR)
R2 = LDR⋅(Vcc-VI)/VI

∙( ) ∙( , )
Luz: 2 < = = 2736
,

∙( ) ∙( )
Oscuridad: 2 > = = 4500

2736<R2<4500 → Ej. R2=3,3KΩ

c) Circuito de control de los motores del coche de juguete MI y MD

IB = IC/βsat = 400m/40 = 10mA > Iomax

− 3,98 − 1
< = ≅ 300
10

36
Tema 2. Circuitos integrados digitales

d) Circuito lógico digital para el control de los motores de las ruedas (MI y MD) a partir de los sensores SI y SD
y del interruptor P.

P SI SD MI MD
0 0 0 0 0
0 0 1 0 0
0 1 0 0 0 = ∙ = ∙ = + = +
0 1 1 0 0
1 0 0 1 1 = ∙ = ∙ = + = +
1 0 1 1 0
1 1 0 0 1
1 1 1 0 0

Circuito Lógico con Puertas NOR (74HCT02):

Problema 2.12

Se desea construir un contador de vueltas para un circuito de coches de carreras de juguete. Para ello se
dispone en cada pista de una barrera fotoeléctrica formada por una bombillita de tensión 5V y corriente
100mA y una LDR con Rluz = 150Ω y Rosc =12KΩ. El sistema se basa en el contador ascendente-descendente
(U/D) de la figura. Su funcionamiento es el siguiente:
El usuario, mediante cuatro microinterruptores selecciona el número de vueltas totales de la carrera (hasta
un máximo de 9). Tras pulsar el botón de inicio, el contador carga el número total de vueltas a realizar, lo
muestra en un visualizador de 7 segmentos y está preparado para funcionar: cada vez que se cruce la
barrera fotoeléctrica, el contador desciende una unidad, mostrando en el visualizador las vueltas que faltan
para finalizar la carrera. Cuando se llegue a la última vuelta, (en el visualizador aparece el número 0) y se
activa una lámpara indicadora (5V, 100mA). Al cruzar META, el contador vuelve a cargarse con el número
total de vueltas y se desactiva la lámpara indicadora de última vuelta.
Utilizar circuitos integrados tecnología TTL
Se pide:

a) Diseñar el circuito necesario de la barrera fotoeléctrica (suponer la


bombillita encendida), de forma que cada vez que un coche la cruce
proporcione un pulso de nivel lógico alto. (SUB1).

37
Problemas de electrónica digital

b) Diseñar los circuitos de los microinterruptores y botón de INICIO para el funcionamiento descrito.
(SUB2 y Bloque A).
c) Diseñar el circuito de activación de la lámpara indicadora de última vuelta. Utilizar, si es necesario,
transistores bipolares de características generales
(hFEmín = 40 (βsat), ICmáx = 1 A, VCEmáx= 40 V, VBEmáx = 1 V) (SUB3).
d) Si se desea que durante la última vuelta la lámpara parpadee, en lugar de estar permanentemente
encendida, ¿Cuál sería el circuito necesario para el SUB3? Dibuja, al menos, los bloques necesarios.

Datasheet de MOTOROLA

38
Tema 2. Circuitos integrados digitales

Solución
. Circuito total de control

a.- Diseño de la Resistencia serie con LDR (R7).


Con luz debemos tener en CLK un nivel bajo:
VILmáx=0.8V; RLUZ=0.15KΩ:
5V·RLUZ/(RLUZ+R8) < 0.8V, con ello: R8>0,78KΩ
Cuando pase el cochecito (oscuridad) debemos tener un nivel alto:
VIHmin= 2; ROSC=12KΩ:
5V·ROSC/(ROSC+R7)>2V; con ello: R7<18K. Se elige R7=10KΩ

b.- Botón de inicio que actúa sobre PL. Además, cuando el contador finaliza (llega a cero) al siguiente pulso de
reloj se pone a “9”, debiendo ser detectado este caso para iniciar la cuenta desde el valor preestablecido en los
microinterruptores. (Puertas U6:A y U7:A del esquema). El cálculo de R8 debe de contemplar en la entrada de la
puerta un nivel H, por tanto:

Vcc-VINIT = R8·IIH ; con VINIT>VIHmin se obtiene R8< (Vcc- VIHmin)/ IIH; R8<150KΩ. Se elige R8=10KΩ

En el caso de los microinterruptores, cuando están abiertos proporcionan un nivel lógico bajo. Para ello, las
resistencias R3 a R6, deben cumplir la condición:

R3·IIL < VILmáx, siendo IIL = -0,4mA y VILmáx=0,8V, se obtiene: R3<2KΩ. Se eligen R3 a R6 = 1KΩ

39
Problemas de electrónica digital

c.- El circuito lógico debe cumplir que cuando todas las salidas del contador estén a “0”, se active el transistor
(se activará a nivel “H”).

S = Q0·Q1·Q2·Q3 = Q0 + Q1 + Q2 + Q3 , circuito que se materializa mediante las puertas lógicas U3 y U4.

La salida a nivel alto no es suficiente para activar la lamparita (100mA). Por ello, se usa un transistor en la
configuración del esquema. Será necesario diseñar la resistencia de base R7 con las siguientes condiciones:

VOHmin=2,7V; IBsat = ICsat/hFEmin = 100mA/40 = 2,5mA; VBEsat = 1V

IB > IBsat ; (VOHmin- VBEsat)/R2 > IBsat ; o sea : R2 < (VOHmin- VBEsat) /IBsat ; R7 < 0.68KΩ Se elige R2 = 0.47K

d) Este apartado permite varias soluciones. En todas ellas es necesario utilizar una señal nueva de reloj de baja
frecuencia para el parpadeo. En el esquema de la figura anterior se propone una solución utilizando un biestable.
Se puede utilizar, asimismo, una puerta AND de dos entradas, una para el nuevo reloj y otra para la señal de fin
de cuenta (detección del “0”), atacando su salida a la resistencia de base del transistor.

40
TEMA 3
ASTABLE Y MONOESTABLE

Este breve tema sirve de transición entre la electrónica digital combinacional y la secuencial. Se
realiza un estudio de los circuitos astables (generador de señal cuadrada) y monoestable (temporizador). Se
toma como base el C.I. 555 donde se aplican los circuitos y expresiones propuestos por el fabricante.
La bibliografía sobre este tema es relativamente escasa, algunos ejemplos:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Ed. Pearson Educación. Tema: 7
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Apén. 2.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València Tema: 2

PREGUNTAS DE TIPO TEST DEL TEMA 3


1. Con el circuito de la figura podemos obtener
un:
a) Monoestable no redisparable.
b) Monoestable redisparable.
c) Astable.
d) Biestable.

2. Determinar el valor del tiempo de temporización de un circuito


monoestable con CI 555 para. tomando R=1MΩ y C=10nF

a) 1s
b) 10 s
c) 100 ms
d) 10 ms

Fuente. LM555 de Texas Instruments, 2015

3. ¿Cuál será el ciclo de trabajo de una señal oscilatoria con tH = 20 ms y tL = 60 ms?

a) 20% b) 60% c) 80% d) 25%

41
Problemas de electrónica digital

4. ¿Qué aplicaciones tienen en común el C.I.: 555 y el 74HC4538


(figura)?

a) Monoestable
b) Biestable
c) Astable
d) No tienen aplicaciones comunes Fuente: LM555 de
Texas Instruments, 2015

5. ¿Qué circuito necesita una señal de disparo (trigger) para arrancar?

a) Astable con R-C


b) Astable con cristal de cuarzo
c) Monoestable
d) Biestable

6. El tiempo de temporización de un circuito monoestable con C.I. 555 viene determinado por:

a) La duración de la señal de disparo.


b) El nivel de la señal de disparo.
c) La tensión de alimentación.
d) El valor de los componentes del circuito R-C externo.

7. ¿Cuál es la aplicación más común de un circuito monoestable?

a) Generador de señal
b) Temporizador
c) Tacómetro
d) Memoria de un bit

8. Calcular el valor más aproximado de RA, RB y C del circuito astable


con C.I. 555 para que la frecuencia de la señal de salida sea de 1Hz.

a) C=10μF, RA=1MΩ, RB=50k


b) C=0,1μF, RA=10K, RB=5K
c) C=10nF, RA=8K, RB=2k
d) C=1μF, RA=800K, RB=100K

42
Tema 3. Astable y monoestable

Soluciones a las Preguntas de Test del Tema 3 (Astables y Monoestables)

1.- c) Circuito oscilador utilizando una puerta inversora con histéresis y R y C externo.
2.- d) C=10 nF equivale a C=0,01µF, luego se toma la segunda línea vertical y se busca el cruce con la línea de
R=1MΩ.
3-. d) CT% = tH/ (tH + tL) = 20 ms/ (20 ms + 60 ms) x100 = 25%.
4.- a) El C.I. 74HC4538 tiene aplicación específica como monoestable y el 555 tiene varias aplicaciones, entre ellas
también monoestable.
5.- c) Los circuitos astable y biestable no necesitan señal de disparo.
6.- d) El funcionamiento de basa en la carga y descarga de un condensador a través de una resistencia externa.
7.- b) Una vez realizado el disparo al monoestable se mantiene la señal de salida durante el tiempo determinado por el
valore de C y de R.
8.- d) El punto de coordenada C=1μF y f=1Hz pasa cerca de la línea: RA+2RB=1MΩ. El resto de opciones no
coincide la suma de las resistencias.

43
Problemas de electrónica digital

PROBLEMAS TEMA 3 (ASTABLES Y MONOESTABLES)

Problema 3.1
Se desea generar una señale de reloj de frecuencia 100Hz y con
un ciclo de trabajo (duty) del 75%. Para ello, utilizaremos el
circuito 555 configurado como astable. En el laboratorio solo se
dispone de condensadores de C=100μF.
Hallar el valor de R1 y R2 del circuito.

Solución

El valor del ciclo de trabajo determinará la relación entre resistencias R1 y R2


 R + R2 
CT =  1  ⋅100% = 75
 R1 + 2 ⋅ R2 
R1 + R2 = 0,75 ⋅ ( R1 + 2 ⋅ R2 ) → 0,25 ⋅ R1 = 0,5 ⋅ R2 → R1 = 2 ⋅ R2

La expresión de la frecuencia en función de los valores de las dos R y C:


1,44
f ≅
( R1 + 2 ⋅ R2 ) ⋅ C
1,44
100 = → 400 ⋅ R2 = 1,44 ⋅10 7 → R2 = 36 KΩ ; R1=R2/2 = 18KΩ
(2 ⋅ R2 + 2 ⋅ R2 ) ⋅100nF

Problema 3.2
Se pretende diseñar un circuito que, mediante un pulsador P, controle la temporización de una lámpara de
12V y 12W de forma que justo en el momento de pulsar P se encienda durante 7 segundos. No se
establecerá otra temporización hasta que no acabe la que esté en curso. Además, el encendido de la
lámpara puede habilitarse o deshabilitarse mediante un interruptor S. Se pide:

a) Completar el cableado del circuito de la figura.


b) Hallar valores de: Rx (para CX = 100μF), R1MAX (valor máximo de R1) y R2.
Datos del transistor BJT: βsat=50; VBEsat=1V

44
Tema 3. Astable y monoestable

Solución

Al pulsar P se aplica una señal de nivel bajo luego el circuito monoestable debe activarse por flanco de
bajada. El enunciado indica que debe ser NO redisparable. Las conexiones vienen determinadas en hojas
características del dispositivo:

Fuente: 4638 Faichild Semiconductor

a)

b)

Cálculo de Rx: T = 0,7·Rx·Cx → Rx = T/0,7·Cx=7/0,7·100·10-9 = 1MΩ

Cálculo de R1MAX = VILmax/IILmax=0,8V /1mA = 800KΩ

Cálculo de R2 = (VOHmin-VBE)/IB = (3,98-1)/IB

Ic = P/V = 12/12=1A; IB = Ic/βsat= 1/50= 20mA

R2 = (3,98-1)/20mA = 149Ω

45
TEMA 4
BIESTABLES

En este tema se estudian los dispositivos elementales de la electrónica digital secuencial y que
servirán de base para los siguientes temas. Se analizan los dispositivos asíncronos (latch) R-S y D y los
síncronos (biestables) J-K y D, y se pone énfasis en la resolución de cronogramas.
Al ser el tema base de los circuitos secuenciales la bibliografía es muy amplia. Ejemplos:
• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Ed. Pearson Educación. Tema: 7
• Tocci, Ronald J. y otros. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson. Temas 8.
• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales”. 10º ed. Marcombo. Tema: 4
• Roth, Charles H. (2004). Fundamentos de Diseño Lógico. 5ª ed. Paraninfo. Tema: 11.
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Tema: 7.
• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital. Editorial Universitat
Politècnica de València-. Tema: 4.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València. Tema: 7

PREGUNTAS DE TIPO TEST DEL TEMA 4

1. Un dispositivo LATCH D (cerrojo) posee como entradas principales:


a) D (dato) y E (enable o habilitación).
b) Set y Reset.
c) J y K.
d) Reloj y D (dato).

2. ¿Cuál es valor de la salida Q cuando las entradas se encuentran como la figura y se aplica un pulso de
reloj?

a) Indeterminado
b) 0
c) 1
d) Depende del estado previo

47
Problemas de electrónica digital

3. ¿Cuál de los siguientes cronogramas del biestable J-K con Clear activo a nivel bajo y reloj activo por
flanco de bajada es correcto?
a) b)
Clear Clear
CLK CLK

J J
K K

Q Q
c)
d)

Clear
Clear
CLK
CLK
J J
K K
Q Q

4. de los siguientes cronogramas de la salida Q de un biestable J-K activo por flanco de bajada con
entradas asíncronas Clear y Set es correcto?
A) B)

C) D)

48
Tema 4. Biestables

5. ¿Cuál de los siguientes cronogramas de la salida Q de un biestable J-K activo por flanco de bajada con
entradas asíncronas Clear y Set es correcto?
A) B)

C) D)

6. ¿Cuál de los cronogramas de la salida Q del biestable D activo por flanco de subida con entrada
asíncrona Clear es correcto?

A) B)

C) D)

49
Problemas de electrónica digital

7. ¿Qué tipo de biestable tiene como aplicación inmediata la división por dos de la frecuencia de la señal
de reloj?
a) R-S b) T c) latch D d) D
8. Para realizar un circuito de Autoreset (Clear) en el biestable de la figura por medio de un circuito R-C, el
condensador (descargado) se debe conectar:

a) entre Clear y masa J Q


b) entre Clear y alimentación CLK
c) entre alimentación y masa K Q
d) Entre reloj (CLK) y masa
Clear
9. Si en el circuito de la figura conectamos la línea T a nivel alto ¿qué frecuencia tendrá la señal obtenida
a la salida Q del biestable JK?

a) La mitad de la frecuencia de la señal conectada a CLK.


b) El doble de la frecuencia de la señal conectada a CLK.
c) Igual a la frecuencia de la señal conectada a CLK.
d) La salida Q permanecerá estable

Soluciones de Preguntas de Test del Tema 4 (Biestables)


1. a) Es un dispositivo asíncrono.
2. c) Al estar J=1, K=0 y entradas asíncronas a 1 se produce un SET cuando llegue el pulso de reloj.
3. b) Inicialmente la señal de Clear=0 está activada (Q=0), luego los cronogramas c) y d) no pueden ser
correctos. Hasta que Clear esté desactivada no puede ser Q=1, luego el cronograma a) tampoco es
correcto. De esta forma el cronograma correcto es b).
4. b) Inicialmente está activada la señal Set asíncrono que ocasiona que la salida Q=1, luego la gráfica
D) no puede ser correcta. En el momento que la señal de Clear (asíncrona) pasa a nivel bajo la
salida Q pasa a nivel bajo, luego no puede ser correcta la gráfica A). Cuando la señal de Clear
vuelve a nivel alto la salida dependerá de las señales síncronas y el reloj, luego no puede ser
correcta la gráfica C). Por lo tanto, la solución es B).
5. a) La señal asíncrona Set=0 provoca que la salida Q=1 independientemente del resto de señales
síncronas. El cronograma a) es la único que durante este periodo siempre Q=1.
6. a) Inicialmente está la señal de Clear activada ocasionando (Q=0) pero cuando se desactiva Clear la
salida Q no puede cambiar hasta que llegue señal de reloj (luego no puede ser correcta la gráfica B)
ni D). Como el biestable es activo por flanco de subida no puede ser correcto la gráfica C). Luego la
solución correcta es A).
7. b) Siempre que T=1.
8. a) Si se conecta el C descargado a Clear, al conectar la tensión de alimentación se aplica un nivel bajo
en Clear y se produce el Reset (Q=0). Una vez cargado el condensador se deshabilita el Clear.
9. a) Actúa como divisor de frecuencia por dos.

50
Tema 4. Biestables

PROBLEMAS TEMA 4. BIESTABLES

Problema 4.1
Al biestable de la figura se le aplica las señales que se muestran en el cronograma. Dibujar las trazas de la
salida Q

Fuente: 74HCT73 Philips SemIconductors

Solución
Reloj activo por flanco de bajada y Reset activo por nivel bajo. Inicialmente el Reset está activo, luego la salida
Q=0. En el flanco de bajada del pulso nº 2 J=K=0, luego Q permanece estable (Q=0). En el flanco de bajada del
pulso nº 3 J=K=1, luego Q voltea (Q=1). En el flanco de bajada del pulso nº 4 J=K=1, luego Q voltea (Q=0).

51
Problemas de electrónica digital

Problema 4.2
Al biestable de la figura se le aplica las señales que se muestran en el cronograma. Dibujar las trazas de la
salida Q.

Solución
Biestable con reloj activo por flanco de bajada y Reset y Set asíncronos activos por nivel bajo. Inicialmente el
Reset está activo luego la salida Q=0. En los pulsos 1, 2 y 3 tienen el control del biestable las entradas síncronas
J y K según la tabla de funcionamiento. Cuando la señal de Set=0 la salida Q=1 de forma asíncrona.

52
Tema 4. Biestables

Problema 4.3
Completa el cronograma correspondiente al circuito formado por biestables JK y D.

Cronograma:

Solución

Hay que fijarse que en este caso el biestable D es activo por flanco de bajada mientras que el biestable JK lo
es por flanco de subida. Además la señal D coincide con la señal J del biestable JK y la salida del biestable
D (Qo) coincide con la señal K del biestable JK. Como no hay señales asíncronas el control del biestable lo
tienen las entradas síncronas J-K y D según la tabla de funcionamiento.

53
Problemas de electrónica digital

Problema 4.4

A los biestables de la figura se le aplican las señales que se muestran en el cronograma.

Dibujar las trazas de la salida Q1 y Q2, justificando cada una de sus variaciones.

Solución

Hay que fijarse que el biestable D es activo por flanco de SUBIDA mientras que el biestable JK lo es por
flanco de BAJADA. Además la salida del biestable D (Q1) coincide con la señal K del biestable JK.
Inicialmente Reset=0 entonces Q1=Q2=0. A partir del pulso nº 2 el control del biestable lo tienen las
entradas síncronas J-K y D según la tabla de funcionamiento. En el pulso nº 7 Reset vuelve a nivel bajo,
luego Q1=Q2=0.

54
TEMA 5
CONTADORES

En este tema se estudian los contadores electrónicos digitales como una aplicación básica de los
biestables. Se analiza el desarrollo de contadores asíncronos realizados con biestables independientes y los
contadores síncronos utilizando dispositivos comerciales de contadores.
Es un tema común en los libros de electrónica digital general. Ejemplos:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Pearson Educación. Tema: 8.
• Tocci, Ronald J. y otros. (2016) Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson. Tema: 7.
• Roth, Charles H. (2004) Fundamentos de Diseño Lógico. 5ª ed. Paraninfo. Tema: 12
• Mandado, Enrique; Martín, José Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 4.
• Mano, M. Morris (2016) Diseño Digital. 3ª ed Ed. Pearson. Tema: 6.
• Roth, Charles H. (2004) Fundamentos de Diseño Lógico. 5ª ed. Ed. Paraninfo. Tema: 12.
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Tema: 7.
• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital. Editorial Universitat
Politècnica de València.. Tema: 4.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València- Tema: 9

PREGUNTAS DE TEST DEL TEMA 5


1. Se dice que un contador es binario, cuando:
a) Cuenta hasta 2.
b) Cuenta de dos en dos.
c) El último valor de la cuenta es par (múltiplo de 2).
d) Cuenta desde 0 hasta 2n-1, siendo n el número de biestables.

2. Para obtener un contador asíncrono se utiliza fundamentalmente:


a) Biestable T (J-K con entradas unidas).
b) Latch D.
c) Biestable D.
d) Latch R-S.

3. En un contador asíncrono ¿Cuáles son los valores de transición entre los números 4 (0100) y 5 (0101)?
a) Ninguno porque pasa de un número par a impar.
b) Pasa por 6 (0110).

55
Problemas de electrónica digital

c) Pasa por 6 (0110) y 7 (0111).


d) Los contadores asíncronos no tienes valores de transición.

4. Con los componentes de la figura (contador bidireccional BCD y puerta NAND) se desea realizar un
contador de módulo 4 a 8 (ambos inclusive), ¿dónde irán conectadas las entradas de la puerta NAND?

Fuente: 74190 de Philips Semiconductors

a) A las salidas Q3 y Q1
b) A las salidas Q3 y Q0
c) A la salida Q3
d) No hace falta ninguna puerta lógica

5. Con el mismo contador de la pregunta anterior, ¿qué niveles lógico se conectarán a las entradas
D[3..0]?

a) Todas las entradas D[3..0] a masa.


b) D2 a masa y D0, D1 y D3 a Vcc.
c) D2 a Vcc y D0, D1 y D3 a masa.
d) Es indiferente porque estas entradas no se utilizan en esta aplicación.

6. Un contador síncrono se caracteriza por:

a) La señal de reloj actúa directamente solo en el primer biestable.


b) La señal de reloj actúa directamente solo en el último biestable.
c) La señal de reloj actúa directamente en todos los biestables.
d) A pesar de su nombre, este contador no necesita señal de reloj.

7. Considerando el circuito de la figura, basado en el contador bidireccional binario 74LS191 ¿cuál es el


número decimal más alto que se observará en las salidas [Q3..Q0]?

Fuente: SN74LS191 de Motorola

56
Tema 5. Contadores

a) 12
b) 9
c) 11
d) 15

8. Se conecta tres contadores decimales BCD (74190) de la forma que indica la figura, la frecuencia de
reloj del contador de la derecha es 100 Hz ¿Cuál debe ser la frecuencia del reloj externo (CLOCK)?

a) 1 Hz
b) 100 Hz
c) 1 KHz
d) 10 KHz

Fuente SN74LS190 de Motorola

Soluciones a las Preguntas de Test del Tema 5 (Contadores)

1. d) Por ejemplo, el contador binario de 4 bits cuenta desde 0 a 15.


2. a) Biestable J-K con las dos entradas unidas para formar un biestable T y conectada a nivel alto (H), actúa
como divisor de frecuencia por dos.
3. a) Para pasar de 4 (0100) a 5 (0101) solo cambia el bit de menor peso luego no se producen valores de
transición.
4. b) Según la tabla de funcionamiento la carga de entradas en paralelo (Preset) es asíncrona. Entonces, si se
quiere que cuente hasta 8, hay que detectar el número 9 (1001). Por lo tanto, las entradas de la puerta NAND
hay que conectarlas a Q3 y Q0 y cuando estén ambas a nivel alto (9) entonces la salida pasará a nivel bajo
ocasionando una carga del contador.
5. c) Las entradas de paralelo D[3..0] deben estar conectadas a 0100 para realizar una carga del 4.
6. c) De ahí su nombre.
7. c) La puerta NAND está conectada a las salidas Q3 y Q2 del contador, luego detecta el número 12 (1100).
Como el contador posee el preset (carga) asíncrono, cuando se detecte ese número se cargara las entradas
D[3..0] que están a cero. Entonces el número 12 no llegará a apreciarse por lo que el último es el 11.
8. d) Conexión de tres contadores decimales en cascada. El contador de la derecha corresponde a las centenas,
luego la frecuencia de reloj debe ser 100 mayor, que actuará sobre el contador de las unidades.

57
Problemas de electrónica digital

PROBLEMAS DEL TEMA 5. CONTADORES

Problema 5.1
Realizar las conexiones necesarias en el contador BCD de la figura (74160) cuya tabla de funcionamiento se
facilita para que realice la secuencia de conteo: 3, 4, 5, 6 y 7 de forma cíclica. Utilizar, si es necesario, las
puertas lógicas que se consideren oportunas.

Fuente SN74LS160 de Motorola

Solución

Se desea obtener un contador de 3 a 7. Como la carga en paralelo es síncrona habrá que detectar el
número 7 y entonces realizar una carga 3 (0011) en las entradas de paralelo. Hará falta la conexión de una
puerta NOR de tres entradas.

58
Tema 5. Contadores

Problema 5.2
Con el C.I. contador bidireccional BCD 74190 (y otros dispositivos necesarios) realizar un contador de
módulo 10 que realice la cuenta de forma alternativa ascendente y descendente de forma automática. Es
decir que cuando llegue la cuenta al 9, al siguiente pulso de reloj, cuente hacia atrás hasta llegar a cero, y
en este momento vuelva a cambiar de sentido volviendo a ascender la cuenta hasta 9, y así sucesivamente.

Fuente SN74LS190 de Motorola

Solución

a) Para indicar el sentido de la cuenta habrá que actuar sobre la entrada D/U del circuito contador, de
forma que cuando D/U= 0 asciende y cuando D/U= 1 desciende.
b) Para saber que ha llegado a fin de cuenta habrá que utilizar la salida RC0 (RC en el símbolo lógico) del
contador, que genera un nivel bajo (L) cuando llega a 9 (ascendente) o a 0 (descendente). En otros
casos esta salida es nivel alto (H).
c) Para cambiar el valor de la señal D/U y dejarla fija cuando cambiar el valor de RCO hará falta un
elemento de memoria de 1 bit, que se puede lograr con un biestable de tipo T con la entrada a nivel alto,
donde la salida RCO se conecta a la entrada de reloj del biestable (activo por flanco de bajada) y la
salida Q se conecta a la entrada D/U del contador. Ver esquema (CE en el símbolo lógico corresponde
a E en el circuito).

59
Problemas de electrónica digital

Problema 5.3
Obtener un contador en código Gray de tres bits (G2, G1 y G0) utilizando un circuito contador binario de
tres bits (Q2, Q1 y Q0).

Solución
Hay que determinar el circuito combinacional de salida que relaciona las entradas Q2, Q1 y Q0 procedentes del
contador con las salidas en código Gray (G2, G1 y G0)

Q2 Q1 Q0 G2 G1 G0 Q2 00 01 11 10
Q1
0 0 0 0 0 0 Q0
0 0 0 1 1
0 0 1 0 0 1 1 0 0 1 1

0 1 0 0 1 1 G2=Q2

0 1 1 0 1 0
Q2 Q1 00 01 11 10
1 0 0 1 1 0 Q0
0 0 1 0 1
1 0 1 1 1 1 1 0 1 0 1
1 1 0 1 0 1 1= 2∙ 1+ 2∙ 1= 2⊕ 1

1 1 1 1 0 0
Q2 00 01 11 10
Q1
Q0
0 0 1 1 0
1 1 0 0 1
0 =∙ 1 ∙ 0 + 1 ∙ 0 = 1⨁ 0

60
Tema 5. Contadores

Problema 5.4
Diseñar el circuito de control de un semáforo cuya secuencia de encendido “1” y apagado “0” de las luces
roja, amarilla y verde (R, A, V) se indican en la siguiente tabla de verdad.

El circuito estará formado por un contador binario de 4 bits (Q3, Q2, Q1,
Q0) y puertas lógicas que actúen como decodificador de las tres luces (R,
A, V) a partir de las salidas del contador (Q).

A partir de la tabla de verdad dada,

1. Obtener las ecuaciones lógicas simplificadas de las funciones R, A y V.

2. Dibujar circuito lógico completo y comprobar funcionamiento.

Solución

R A
Q3Q2 00 01 11 10 Q3Q2 00 01 11 10
Q1Q0 Q1Q0

00 0 0 1 0 00 0 0 0 1
01 0 0 1 0 01 0 0 0 1
11 0 0 1 1 11 0 1 0 0
10 0 0 1 1 10 0 1 0 0

= 3∙ 2+ 3∙ 1 = 3∙ 2∙ 1+ 3∙ 2∙ 1
: = 3 ∙ 2 + 3 ∙ 1

Circuito completo:

61
Problemas de electrónica digital

Problema 5.5
Se desea obtener un circuito electrónico que realice el rellenado al azar de quinielas (1 X 2), pero de forma
que, la opción “1” tenga el doble de posibilidades de salir que la “X” y el “2”. Las opciones “X” y “2” deben
de tener las mismas posibilidades. El circuito se debe realizar por medio de dos métodos:

a) Utilizando el C.I. contador 74LS190 y las puertas lógicas necesarias. Completar todas las conexiones de
la siguiente figura.

Solución

Q0 Q1 UNO EQUIS DOS


0 0 1 0 0
0 1 1 0 0
1 0 0 1 0
1 1 0 0 1

A partir de las tablas de verdad:

= 0 = 0∙ 1 DOS= 0 ∙ 1

62
TEMA 6
REGISTROS DE
DESPLAZAMIENTO

En este se tema se introduce otra aplicación de una combinación de varios biestables. Está basado en
la aplicación de circuitos integrado de registros de desplazamiento. En muchos libros este tema está
incluido dentro de los contadores. Ejemplos bibliográficos:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Ed. Pearson Educación. Tema: 9.
• Tocci, Ronald J. y otros. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson Educación.
Tema: 7.
• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 4.
• Mano, M. Morris (2016). Diseño Digital. 3ª ed. Pearson. Tema: 6.
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Tema: 7.
• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital. Editorial Universitat
Politècnica de València. Tema: 4.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València. Tema: 8

PREGUNTAS DE TEST DEL TEMA 6

1. En el C.I. del registro de desplazamiento universal bidireccional 74LS194, cuya tabla se muestra ¿Qué
entrada tiene mayor preferencia?

a) S1
b) S0
c) CP
d) MR

Fuente: 74LS194 de Philips Semiconductors

63
Problemas de electrónica digital

2. En el C.I. del registro de desplazamiento del problema anterior 74194, si deseamos obtener un registro
de desplazamiento paralelo-serie con desplazamiento hacia la izquierda, habrá que:

a) Conectar las entradas S1=1 y S0=1 y posteriormente S1=1 y S0=0.


b) Conectar las entradas S1=1 y S0=0 y posteriormente S1=1 y S0=1.
c) Conectar las entradas S1=1 y S0=1 y posteriormente S1=0 y S0=0.
d) Conectar las entradas S1=0 y S0=1 y posteriormente S1=1 y S0=1.

3. El número de cuentas (o combinaciones) de un contador anillo de n biestables es:

a) n b) 2∙n c) 2n d) 2n-1

4. En el circuito del registro de desplazamiento del problema anterior (74LS194) ¿Qué conexión habrá que
realizar para obtener un contador en anillo con desplazamiento a la derecha

a) Conectar Q3 con Q0.


b) Conectar Q3 con DSR.
c) Conectar Q0 con DSR.
d) No se puede lograr un contador en anillo ya que este circuito es un registro de desplazamiento.

5. La aplicación principal de un dispositivo UART (Universal Asynchronous Receiver-Transmitter ) es:


a) Obtener un retardo de tiempo (Time Delay)
b) Lograr un contador en anillo
c) Transmisión de datos Serie-Paralelo y Paralelo-Serie
d) Contador asíncrono

6. En el registro de desplazamiento paralelo – serie C.I. 74166, cuya tabla de verdad se representa. ¿Qué
entrada tiene mayor preferencia?

Fuente: 74HC166 Philips Semiconductors

a) PE b) CE c) Ds d) D0-D7

7. En el mismo registro de desplazamiento de la pregunta anterior, al realizar una carga en paralelo. Las
salidas toman el valor de:

a) La entrada Ds de forma asíncrona.


b) Las entradas D0-D7 de forma asíncrona.
c) Las entradas D0-D7 pero cuando llegue el flanco de bajada del reloj.
d) Las entradas D0-D7 pero cuando llegue el flanco de subida del reloj.

64
Tema 6. Registros de desplazamiento

Solución de Preguntas de Test Tema 6 (Registro de Desplazamiento)

1. d) Cuando la señal MR=L las salidas Q pasan a nivel bajo (L) independientemente del estado del resto
de las señales de entrada.
2. a) Primero la carga de entradas en paralelo (S1=1 y S0=1) y luego desplazamiento de la información
de las salidas hacia izquierda (S1=1 y S0=0).
3. a) Al realimentar la salida del último biestable (Q3) con la entrada serie del primero cada n pulsos de
reloj vuelve a empezar la secuencia.
4. b) Hay que realizar una realimentación entre el último biestable (Q3) y la entrada serie (DSR) para
desplazamiento a la derecha.
5. c) Permite la conversión de paralelo a serie
6. b) Cuando CE=h se produce el mantenimiento “hold” de las salidas sin importar el estado del resto de
la entradas.
7. d) La señal CP (reloj) de este dispositivo actúa por flanco de subida ( ↑).

65
Problemas de electrónica digital

PROBLEMAS DE REGISTROS DE DESPLAZAMIENTO

PROBLEMA 6.1
Se desea implementar un convertidor paralelo-serie de 8 bits. Para ello se utilizan dos registros de
desplazamiento de 4 bits (74194) cuya tabla de funcionamiento es la siguiente:

Fuente: 74LS194 de Philips Semiconductors


Se pide:
a) Terminar de cablear el circuito para que cumpla con el modo de funcionamiento planteado teniendo en
cuenta que en la entrada del dispositivo U1 se establecen los valores D0,D1,D2,D3 = ‘0001’ y en la entrada
de U2 se establecen los valores D0,D1,D2,D3 = ‘1001’.

b) Indicar el procedimiento de variación de entradas.

c) Dibujar el cronograma de la “Salida” serie del registro de 8 bits.

CLK
MR
S0
S1
Salida

66
Tema 6. Registros de desplazamiento

Solución:

a) Para obtener un registro de desplazamiento de 8 bits mediante dos registros de 4 bits la salida Q3 del
primer circuito (U1) se conecta a la entrada serie por la derecha (SR) del segundo circuito (U2).
La salida serie del registro total se realizará por el pin Q3 del circuito U2
Para lograr D0,D1,D2,D3 = ‘0001’ y D0,D1,D2,D3 = ‘1001’ se conectan los pines correspondientes de
U1 y U2 a masa cuando sea el valor lógico sea 0 y Vcc cuando el valor lógico sea 1.

b) Inicialmente se activa el reset (MR=0), de esta forma la Salida=0

• Para realizar la carga en paralelo S1=1 y S0=1.


• Para realizar el desplazamiento a la derecha S1=0 y S0 =1
• Por el terminal de Salida se obtiene la secuencia: 1, 0, 0, 1, 1, 0, 0, 0; y posteriormente continua con ceros
porque la señal de entrad serie (SR) del circuito U1 está conectado a masa

67
Problemas de electrónica digital

PROBLEMA 6.2

Teniendo en cuenta el circuito de la figura y


la tabla de verdad del registro de
desplazamiento universal 74LS194

Fuente: Philips Semiconductors

a) Indicar cuál sería la función del circuito

b) ¿Qué valor tomarían Q3..Q0 en U1 si MR=1, S1=1, S0=1 y D3..D0=1010

c) Completar el siguiente cronograma

1 2 3 4 5 6 7 8 9

CLK

S0

U1:Q0

68
Tema 6. Registros de desplazamiento

Solución

a) La salida Q0 del circuito U2 está conectado a la entrada serie hacia la izquierda (SL= del circuito U1).
Luego es un registro de desplazamiento de entrada paralelo-salida serie de 8 bits con desplazamiento a
la izquierda.

Entradas de Control: S1 fija a Vcc luego solo hay dos posibilidades:


S1-S0=11 Carga Paralelo.
S1-S0=10 Desplazamiento Serie a la izquierda.

b) MR=1 (Reset deshabilitado).

Entradas Paralelo: U2:0110; U1: 1010. Entrada Serie Izquierda. 1

c) Por U1:Q0 se producirá la secuencia 01010110 y posteriormente todo 1 porque la entrada SL del
circuito U2 está conectada a Vcc

69
TEMA 7
MÁQUINAS DE ESTADO

En este tema se desarrollan las máquinas de estados finitos para obtener cualquier sistema secuencial
síncrono. En los problemas se plantea el diseño de un circuito electrónico a través de unas especificaciones
en donde hay que obtener un diagrama de estados (de tipo Moore o Mealy) y en ocasiones también el
circuito digital que lo implementa. Para realizar esta tarea se utiliza el software educativo Boole-Deusto
(http://weblab.deusto.es/website/boole_deusto.html).
Una de las originalidades de esta publicación es la proliferación de problemas sobre diseño de
máquina de estados, que no es demasiado habitual en los libros de electrónica digital.
Bibliografía general.

• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 4
• Mano, M. Morris (2016). Diseño Digital. 3ª ed. Pearson. Tema: 5.
• Roth, Charles H. (2004). Fundamentos de Diseño Lógico. 5ª ed. Paraninfo. Temas: 13, 14, 15 y 16.
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Temas: 7
y 8.
• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital. Editorial Universitat
Politècnica de València.. Tema: 5.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València. Tema: 10

PREGUNTAS DE TEST

1. La máquina de estados de Mealy se diferencia de la de Moore en que:

a) Las salidas dependen directamente de los estados y de las entradas.


b) Las salidas dependen directamente solo de los estados.
c) Es un sistema asíncrono y por lo tanto no necesita señal de reloj.
d) Ambas máquinas de estados son iguales, simplemente son dos formas de denominarla.

2. Si un sistema secuencial síncrono posee 11 estados, ¿Cuántos biestables se necesitan para


implementarlo?

a) 3 b) 4 c) 5 d) 11

71
Problemas de electrónica digital

3. Según la tabla de excitación del biestable J-K, si salida Q = 1 y se desea que al siguiente pulso de reloj
permanezca Q = 1 es necesario que:

a) J=0 y K=0
b) J=1 y K=0
c) J indiferente y K=0
d) No se puede lograr esta opción

4. Una máquina de estados posee 3 entradas, ¿Cuántas “flechas” saldrán de cada estado del diagrama?

a) 3 b) 4 c) 6 d) 8

5. La máquina de estados de la figura es:


a) Mealy de cuatro salidas y dos entradas
b) Mealy con una entrada y una salida
c) Moore con una entrada y una salida
d) Moore con dos entradas (sale dos flechas) y una
salida

6. En el diagrama de la figura ¿Qué estados


son equivalentes entre sí?

a) No hay estados equivalentes


b) E1, E2 y E3
c) E1 y E2
d) E0 y E3

7. ¿Qué error se ha cometido en el diagrama de la figura de la pregunta anterior?

a) Desde Q3 solo sale una flecha.


b) En Q2 hay una flecha que sale y entra en el mismo estado (y además no tiene punta).
c) Los nombres de los estados empiezan por Q cuando es necesario que empiecen por E (las Q
significa biestables).
d) No hay ningún error (“el autómata es correcto y determinista”).

72
Tema 7. Máquinas de estado

8. En el diagrama de la figura ¿Qué estados


son equivalentes entre sí?

a) No hay estados equivalentes.


b) E0 y E1.
c) E0, E1 y E3.
d) E3 y E2.

9. ¿Cuántos biestables son necesarios para implementar el diagrama de estados de la pregunta anterior?

a) 1 b) 2 c) 3 d) 4

10. ¿Qué error se ha cometido en el diagrama de estados de la figura que implementa una máquina de
Mealy formada por tres estados con una entrada y una salida

a) Falta el estado Q2
b) Hay una flecha que tiene el mismo
estado origen y destino
c) Desde el estado Q3 falta una flecha
d) Desde el estado Q1 falta una flecha

Soluciones de Preguntas de Test Tema 7 (Máquinas de Estado)

1. a) Es la definición de máquina de Mealy.


2. b) Número máximo de estados con 4 biestables: 24=16.
3. c) Tercera opción de la tabla de excitación.
4. c) El doble del número de entradas (para valor 0 y para valor 1).
5. c) Cada estado de una máquina de Moore tienen asignado unas salidas (por ello se dibujan dentro del círculos)
y por cada entrada se dibujan dos flechas (para valor 0 y para valor 1).
6. a) Todos los estados tienen distinta combinación de salidas luego no puede haber estados equivalentes.
7. d) El resto de opciones de la pregunta no es motivo de error en un diagrama de estados.
8. b) Q0 y Q1 tienen las mismas salidas (01) y el destino de las flechas es el mismo para cada valor de la entrada
(cuando es 0 el destino es Q1 y cuando es 1 el destino es Q3).
9. b) Para implementar cuatro estados hacen falta dos biestables.
10. d) El resto de opciones son ciertas, pero no son errores del diagrama de estados.

73
Problemas de electrónica digital

PROBLEMAS DE MÁQUINAS DE ESTADO


Problema 7.1
Obtener el diagrama de estados (máquina de Moore) y el circuito digital que lo implementa de un sistema
secuencial síncrono formado por una entrada “P” y tres salidas A, B y C, de forma que si:

• P=0 las salidas sean siempre ABC = 000 (Reset)


• P=1 las salidas realicen la secuencia:
ABC = 100, 010, 001, 100, 010, 001,...
(contador anillo de 3 bits)

Solución

Diagrama de estados (Moore). Una entrada (P), tres salidas (ABC)

Utilizando el programa Boole-Deusto se obtienen las siguientes expresiones simplificadas del circuito
Posee cuatro estados por lo que se necesita dos biestables (Q1 y Q0).
Utilizando biestables JK: Salidas:
J0=(P) (no depende tipo biestable)
K0=(~q1)+(~P)
J1=(P*q0) A=(q1*q0)
K1=(~P)+(q0) B=(q1*~q0)
C=(~q1*q0)
Utilizando biestables D:
D0=(P*~q0)+(P*q1)
D1=(P*q1*~q0)+(P*~q1*q0)
El Circuito digital utilizando biestables J-K resulta más simple que si se utiliza biestables de tipo D.

74
Tema 7. Máquinas de estado

Problema 7.2
Diseñar un sistema secuencial síncrono para controlar un indicador luminoso intermitente con dos
lamparitas (L1 y L0) que pueden funcionar de dos maneras según una entrada de control ( C).
Si C = 0 el encendido y apagado de las luces es simultaneo según el diagrama
Si C = 1 el encendido y apagado de las luces es alternativo según el diagrama
Una vez empezado el un ciclo de periodo T debe acabarse, aunque se cambie el valor de la entrada C

L1

C=0 t
L0
CLK
L1 t
T
C L0

L1
t
C=1
L0
t
T

Solución

• Se parte de un estado inicial (E0) en que ambos ciclos tienes las dos salidas a nivel bajo.
• Cuando C=0 el ciclo posee el nivel alto una duración doble que el nivel bajo por que se necesitan dos
estados (E3 y E4) con las mismas salidas.

Diagrama con cinco estados luego se necesitan tres biestables.

Utilizando el programa Boole-Deusto se obtienen las siguientes expresiones simplificadas

Utilizando biestables JK: Utilizando biestables D:

J0=(~q2*~q1) D0=(~q2*~q1*~q0)
K0=(1) D1=(~C*~q2*~q1)+(~q1*q0)
J1=(~C*~q2)+(q0) D2=(q1*q0)
K1=(1) Salidas
J2=(q1*q0) L0=(q1)+(q2)
K2=(1) L1=(q0)+(q2)

75
Problemas de electrónica digital

Se elige biestables de tipo JK porque así resulta el circuito más sencillo:

Circuito electrónico Digital con biestables JK:

Las entradas cuyas ecuaciones valen 1 (K0, K1 y K2) se conectan a Vcc

Problema 7.3

Obtener un generador de señal cuadrada en donde la relación entre el tiempo a nivel alto (H) y a nivel bajo
(L) sea programable por medio de una señal de control (C).
Las dos opciones de la forma de señal de salida (SAL) queda indicada en el siguiente diagrama de tiempos:

CLK
C
SAL
CIRCUITO
A C=0
DISEÑAR
CLK SAL
C=1

Solo se permite el cambio de tipo de ciclo cuando la salida esté a nivel bajo (L). Utilizar máquina de Moore.
Utilizar el circuito con biestables J-K

• Solución Problema 7.3


Se parte de un estado inicial (E0) en que ambos ciclos tienes las dos salidas a nivel bajo.
Se necesitan solo tres estados (dos biestables)

76
Tema 7. Máquinas de estado

Utilizando el programa Boole-Deusto se obtienen las siguientes expresiones simplificadas del circuito
Ecuaciones: (sale más sencillo con biestables JK)

J0=C·q1’
K0=1
J1=C’+q0
K1=1
SAL=q0+q1

Problema 7.4
Diseñar un generador de señal cuadrada (SAL) para el control PWM de un motor, en donde la relación
entre el tiempo en nivel alto (H) y el nivel bajo (L) es programable por medio de dos entradas de control C1
y C0, según el siguiente diagrama de tiempos (4 opciones):

CLK

C1 00
SAL
C0 CIRCUITO 01
A
DISEÑAR
CLK C1,C0 10

11

Solo se permite el cambio de tipo de ciclo cuando la salida esté a nivel bajo (L).
Utilizar máquina de Moore. Utilizar el circuito con biestables J-K

Solución Problema 7.4

El estado inicial (E0) es común para los cuatro ciclos porque en todos ellos la salida está a nivel bajo.
Según la combinación de entradas el sistema entra en un ciclo que no sale hasta que vuelve al estado inicial
(combinación XX9

77
Problemas de electrónica digital

Simplificando estados equivalentes.

Observando el diagrama anterior se comprueba que los estados E1, E3 y E6 son equivalentes porque tienen
la misma salida (1) y destino común (E0) para todas combinaciones de entradas, luego se puede reducir a
un solo estado que llamaremos E1.
A su vez, los estados E2 y E5 también son equivalentes entre sí porque tienen la misma salida (1) y el mismo
destino (porque al ser E3 y E6 equivalentes se han reducido a uno solo). Luego finalmente se obtiene un
diagrama con solo cuatro estados.

Utilizando el programa Boole-Deusto se obtienen las siguientes expresiones simplificadas del circuito

Ecuaciones:

J0=q1+C0
K0=1
J1=C1·q0’
K1=q0’
SAL=q0+q1

78
Tema 7. Máquinas de estado

Circuito completo de control PWM para un motor.

Utilizando un esquema jerárquico del programa ISIS-Proteus en donde se ha incluido un subcircuito (SUB1)
en cuyo interior se encuentra el circuito de la máquina de estados. Además, se añadido un contador (74190)
donde la señal de reloj es activada por un pulsador y cuyas dos salidas de menor peso se conectan a las
entradas C1 y C0. De esta forma, a cada pulsación se cambia el ancho de pulso de la señal de salida. La
salida (SAL) se conecta a la base de un transistor que controla la conducción de un motor de 12V. De esta
forma el motor trabajo en modo de modulación de ancho de pulso (PWM) consiguiendo que su velocidad
varíe con el pulsador del contador. La frecuencia del reloj debe ser lo suficientemente alta para que el
movimiento del motor sea continuo.

Problema 7.5
Diseñar un circuito secuencial síncrono tal que al pulsar en P (P=”1”) encienda un LED con la siguiente
secuencia:

• 8 segundos el LED encendido.


• 1 segundo apagado.
• 1 segundo encendido.
• Se apaga el LED y queda a la espera de una nueva pulsación de “P”.

Notas:
Utilizar una señal de reloj de 1seg. de periodo.
Mantener P en “1” hasta que se encienda el LED.

79
Problemas de electrónica digital

Solución

Dos opciones de diseño:

a) Utilizar solo una máquina de estados

Se obtiene una máquina de estados demasiado grande para realizar una tarea muy sencilla (solo tiene una
entrada y una salida). Posee 11 estados por lo que se necesitan 4 biestables. Pero se observa que casi toda
la tarea consiste en obtener un contador de ocho, luego puede ser conveniente utilizar para esta tarea un
contador comercial y obtener un sistema mixto (máquina estados y contador)

b) Combinación de Máquina de estados + circuito contador (74161).

• Cuando se pulse la entrada P se pone en marcha un circuito contador (IC) que cuenta hasta 8 (1000).
• Cuando llega a este número (8) se utiliza una salida del contador (Q3) que indica fin de cuenta y sirva
para activar una entrada del diagrama de estados que bloquee la cuenta y apague el LED.
• Otro estado vuelva a encender el LED (y permanezca el contador bloqueado).
• Vuelta al estado inicial (LED apagado).

80
Tema 7. Máquinas de estado

Nueva máquina de estados. Se añade una entrada más (inicio de cuenta) y una salida más (fin de cuenta).
Por lo tanto, posee dos entradas y dos salidas:

RESULTADOS DEL AUTÓMATA DE MOORE. Utilizando el programa Boole-Deusto se obtienen las siguientes
expresiones simplificadas del circuito

J0=(q1)+(P)
K0=(q1)+(FC) IC=(~q1*q0)
J1=(FC*q0) LED=(q0)
K1=(q0)

81
Problemas de electrónica digital

Problema 7.6
Diseñar el CIRCUITO DE CONTROL para el arranque y paro de un motor por medio de dos pulsadores (P1 y
P2) de forma que, el primer pulsador actúa como interruptor general y el segundo pone en marcha el
motor (M). El pulsador P1 servirá, además para parar el motor.
El proceso de arranque y paro será el siguiente:
- Al presionar P1 se enciende un LED rojo.
- Si después de pulsa P2, el motor (M) entra en funcionamiento, se enciende un LED verde y se apaga el LED
rojo.
- El motor se detendrá si se pulsa de nuevo P1, con lo cual también se apagará el LED verde.

Nota: Tener en cuenta que el mismo pulsador (P1) sirve para parar el motor y para volver a iniciar el
sistema de arranque.

Solución

El estado E3 hay que ponerlo para esperar a que se suelte P1. Sino al pulsar P2 en E2 se pararía
rápidamente a E3 y a E0

82
Tema 7. Máquinas de estado

1) Expresiones simplificadas

Utilizando el programa Boole-Deusto se obtienen las siguientes expresiones simplificadas del circuito

Biestable JK Biestable D
J0=(P1) D0=(~P2*~q1*q0)+(P1*~q0)+(P1*q1)
K0=(P2*~q1)+(~P1*q1) D1=(q1*~q0)+(P1*q1)+(P2*~q1*q0)
J1=(P2*q0)
K1=(~P1*q0)

LR=(~q1*q0)
LV=(q1)
M=(q1)

2) Circuito más sencillo (con biestables J-K)

83
Problemas de electrónica digital

Problema 7.7
Obtener el diagrama de estados de un sistema secuencial síncrono para controlar unas luces intermitentes
con dos lamparitas (L1 y L0) que pueden funcionar de distinta forma según la posición de una entrada de
control C de la siguiente forma:
Si C=0 -> L1 y L0 parpadean de forma simultánea (periodo encendido y apagado iguales).
Si C=1 -> L1 y L0 parpadean de forma alternativa (periodo encendido y apagado iguales).
Cuando se cambie el valor de la entrada C el sistema tendrá que cambiar de forma de trabajar lo más
rápido posible.

a) Utilizando máquina de Moore lo más simplificada posible. Determinar el número de biestables


b) Utilizando máquina de Mealy lo más simplificada posible. Determinar el número de biestables

c) Con dos entradas de control (C1 y C0) funcionando de la siguiente forma:

C1=0 y C0=0 → L1 y L0 apagadas.


C1=0 y C0=1 → L1 y L0 parpadean de forma simultánea (periodo encendido
y apagado iguales).
C1=1 y C0=0 → L1 y L0 parpadean de forma alternativa (periodo encendido
y apagado iguales).
C1=1 y C0 =1 → L1 y L0 encendidas fijas.

Utilizando máquina de Moore u Mealy

Solución:

a) Máquina de Moore
Una entrada C y dos salidas (L1 y L0). Cuatro
estados para cada una de las cuatro combinaciones
de encendido de las luces.
Se forman dos bucles, uno para C=0 y otro para
C=1. Cada vez que C cambia de valor se cambia de
bucle

b) Máquina de Mealy. Como las salidas no van asiganadas a un estado solo son necesarios dos estados
formando siempre un bucle entre ello pero en función del valor de la entrada va cambiando el valor de
las salidas.

84
Tema 7. Máquinas de estado

c) Máquina de Moore. De forma similar al apartado a), la máquina tiene cuatro estados para cada una de
las cuatro combinaciones de salida. Pero ahora tiene dos entradas por lo que hay cuatro combinaciones
de entrada.
En caso de C1=C0=0 la máquina se bloquea en estado E0 (salidas 00). En caso de C1=C0=1 la
maquina se bloquea en en el estado E3 (salidas 11).
De cada estado salen cuatro flechas para cada una de la combinaciones de entradas.

Máquina de Mealy:
De forma similar al apartado b) solo son necesarios dos estados. Ahora se forma un bucle cerrado con luces
encendidas fijas (11) y otro para luces apagadas fijas (00)

85
Problemas de electrónica digital

Problema 7.8
Se desea obtener un circuito electrónico síncrono para activar tres lámparas (A, B, y C) de manera que solo
una de ellas esté encendida al mismo tiempo y el encendido varíe en forma de vaivén, es decir siguiendo la
secuencia: 100 -> 010 -> 001 -> 010 -> 100 -> 010 etc. (contador en “anillo” alternativo). Dos casos:
a) El tiempo de encendido es igual para las tres lámparas.
b) El circuito posee otra entrada de control de tiempo (T) de manera que:
T = 0 el tiempo encendido de la lámpara A y C es el doble que la de B
T = 1 el tiempo de encendido de las tres lámparas es el mismo.

Obtener el diagrama de estados de una máquina de Moore que realice la aplicación descrita. Determinar el
número de estados mínimos y número de biestables necesarios.

Solución.

• Hay que tener presente que debe haber dos estados con las salidas 010, uno para cada sentido de la
secuencia, luego hace falta cuatro estados.
• La máquina de estados no tiene entradas, la secuencia es fija

B)
• Máquina de estado con una entradas (T) y tres salidas (A,B,C).
• Cuando T=0 la máquina pasa por dos estados con la misma combinación de salidas (100 y 001) y
cuando T=1 solo por un estado con estas combinaciones de salida. En ambos casos, son
necesarios dos estados con la combinación 010, uno para la ida y otro para la vuelta.

Nº estados: 6 -> nº biestables: 3

86
Tema 7. Máquinas de estado

Problema 7.9
Un sistema secuencial síncrono está formado por una entrada de datos en serie (X), una entrada de
reloj que permite la entrada de datos y unas salidas. Se desea obtener la suma de los dos últimos bits
que han entrado por el termina de entrada de datos (X) a cada pulso de la entrada de reloj (CLK).
Realizar el diagrama de estados del sistema secuencial síncrono

b) Modificar el diagrama para que el valor de la salida sea la suma del bit presente en X más el anterior.

XT-1: Dato en X en el pulso anterior


XT-2 : Dato en X dos pulsos anteriores
X
XT-2 XT-1 SAL Sistema
SAL
0 0 0 a
0 1 1 CLK Diseñar
1 0 1
1 1 2

Solución
Máquina de Moore
Como el número máximo es dos necesitamos dos salidas. Máquina de estados con una entrada (X) y dos salida:
SAL1 y SAL0

Mealy. Es la suma del número anterior con el actual en X. Solo se precisan dos estados

87
Problemas de electrónica digital

Problema 7.10
Mediante el circuito de la figura se pretende controlar un semáforo. Se utiliza para ello:
 Una señal de reloj de 1 segundo.
 Un contador síncrono decimal (BCD) 74LS191.
 Un circuito secuencial a diseñar.
El circuito secuencial realizará el control de cada uno de los estados del semáforo. La secuencia cíclica y la
temporización de cada uno de los colores Rojo (R), Amarillo (A) y Verde (V) son las siguientes:

Verde (18 segundos) -> Amarillo (1 segundo) -> Rojo (9 segundos)


Circuito Secuencial
Entradas Salidas
FC R A V CE
(Final de Cuenta) (Rojo) (Amarillo) (Verde) (Habilitación)

a) Dibujar el cronograma correspondiente a las señales FC y PL (suponiendo que la señal CE se


mantiene a nivel bajo).

15 3
P0 Q0 R
1 P1 Q1 2
10 6 FC
P2 Q2 A
9 P3 Q3 7
CIRCUITO V
5 U/D RC 13
SECUENCIAL
4 CE TC 12
SEÑAL DE PL CE
14 CP PL 11
RELOJ DE
1 SEGUNDO
74LS191

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

CP

FC

PL

Características del contador decimal 74LS191

Fuente: SN74LS191 de Motorola

b) Implementar el diagrama de estados MOORE del circuito secuencial. Para las salidas utiliza el
mismo orden que el descrito en la tabla anterior, es decir: R, A, V y PL.

88
Tema 7. Máquinas de estado

Solución

a)

La señal FC (fin de cuenta) se activa a nivel alto cuando Q3=1, es decir en la cuenta del número 8.

La señal PL (Parallel Load) se activa a nivel bajo (puerta NAND) cuando Q3=1 y Q0=0, es decir en la
cuenta número 9. Esta señal provocará una carga asíncrona de las entradas en paralelo que está
conectadas a masa. Esta señal equivale a un reset que hace desactivar la puerta NAND y hace que el
contador cuente hasta 9

b) Cada estado tiene cuatro salidas (Rojo, Amarillo, Verde, CE) y una entrada FC. La entrada servirá para
mantener mediante un bucle el estado activo durante 8 segundos.
La máquina de estados está formada por cuatro estados, dos para la luz verde, uno para la amarilla y
otro para la luz roja.
El estado de la luz amarilla (E2) no tiene bucle, solo está un segundo en ella y la salida CE=1 para que
el contador no cuente (HOLD)

89
Problemas de electrónica digital

Problema 7.11
Dibuja un diagrama de estados tipo MOORE de un circuito secuencial síncrono que controle el proceso de
secado de piezas industriales.

El proceso es el siguiente:
• El operario deposita la pieza dentro del radio de acción del detector A.
• Entonces, la cinta transportadora se pondrá en marcha desplazando la pieza hacia la derecha
dirigiéndose hacia la cámara climática.
• Cuando el detector B detecte la pieza (dentro de la cámara climática) la cinta se parará y se pondrá en
marcha la cámara comenzando el proceso de secado.
• Cuando el sensor de temperatura detecte la temperatura programada, la pieza estará seca y por tanto
el sistema apagará la cámara climática y la cinta transportadora se pondrá en marcha dirigiéndose de
nuevo hacia el detector A.
• Cuando el detector A detecte la pieza parará la cinta y quedará a la espera de que la pieza se retire.
• Cuando la pieza se retire el sistema se reiniciará al estado inicial.

Nota: una vez iniciado el proceso el sistema debe terminar toda la secuencia.

Cámara
Climática
Pieza a
secar Sensor Tª
Motor

Detector A Detector B

Resumen de los elementos. (Utiliza este orden para diseñar el diagrama de estado)

Entradas Salidas
DA DB ST MD MI CC
Sensor de Motor a Motor a Cámara
Detector A Detector B
Temperatura derechas izquierdas climática

• El motor puede girar a derechas o a izquierdas. Para ello se utilizan dos líneas diferentes (MD y MI).
El nivel de activación es por nivel alto.
• El nivel de activación de la cámara es por nivel alto.
• Los detectores proporcionan un nivel alto cuando la pieza entra dentro de su radio de acción.
• El sensor de temperatura proporciona un nivel alto cuando se alcanza la temperatura programada.

90
Tema 7. Máquinas de estado

Solución

Máquina de estados con tres entradas (DA, DB y CC) y tres salidas (MD, MI y
CC)

E0: estado inicial. Sistema parado. Cuando DA se activa pasa a estado siguiente.
E1: cinta transportadora en marcha hacia la derecha. Cuando detecta DB se pasa a estado siguiente.
E2: cinta parada y cámara climática en marcha. Cuando sensor temperatura detecta la temperatura
programada pasa al estado siguiente.
E3: Cámara climática apagada. Cinta transportadora en marcha hacia la izquierda. Cuando se vuelva a
activar el detector A pasa al estado Q0 (estado inicial).

Problema 7.12

Se desea realizar el control de un proceso de secado por infrarrojos de objetos que llegan a una cámara en
una cinta transportadora. El esquema del proceso se muestra en la siguiente figura:

91
Problemas de electrónica digital

El funcionamiento es el siguiente:

1.- Un operario sitúa el objeto en la posición “A”. Al pulsar el botón “P” el motor “M” (M=1) se pone en
movimiento hacia la derecha en dirección a la Cámara de secado (D/I=1).

2.- Cuando el objeto llega al final de carrera “Int”, se detiene el motor (M=0) y activa con una señal “ON” la
emisión infrarroja de la cámara. El tiempo de emisión es controlado por un reloj (anexo al sistema) que
proporciona la señal “OFF” a nivel alto al finalizar el tiempo de radiación.

3.- Una vez finalizado el secado, el motor se pone otra vez en movimiento en sentido contrario (D/I=0) para
detenerse al interrumpir la barrera fotoeléctrica “F” (F=0).

NOTA: Las situaciones del proceso no definidas en los puntos anteriores, se definirán según libre criterio del
alumno.

Se pide:

Realizar una tabla de variables, siguiendo el ejemplo:

Nombre de variable tipo Descripción actividad


P entrada Pulsador Pulsado = “1”
M salida Motor En marcha M=”1”

Dibuja el diagrama de estados de una máquina de Moore con el funcionamiento descrito.

Solución

a)

Nombre de tipo Descripción actividad


variable
P entrada Pulsador Pulsador = “1”
M salida Motor En marcha M=”1”
D/I salida dirección D/I=1 derecha
INT entrada fin de carrera 1=fin de carrera
C salida emisión IR ON=1 cámara
F entrada barrera fotoeléctrica f=0 delante barrera
inic salida inicio contador 1=inicio
finc entrada fin de cuenta 1=fin de cuenta

b) La distribución de entradas: P-INT-F-FINC, de salidas: M-DI-C-INIC

E0: estado de reposo (M=0). Hasta que no se pulse el botón (P=1) no sale de este estado
E1: estado de poner en marcha el motor (M=1) para mover la cinta hacia la derecha (D/I=1), Cuando llegue al
final de carrera (INT=1) el motor se detiene y pone en marcha la cámara de infrarrojos (C=1) y el temporizador
(inic=1)
E2: estado con cámara infrarrojos funcionando. Cuando llegue fin temporización (finc=1) se detiene.

92
Tema 7. Máquinas de estado

E3: estado de poner en marcha el motor (M=1) para mover la cinta hacia la izquierda (D/I=0). Cuando el objeto
corte la barrera fotoeléctrica (F=0) el motor se detiene (M=0)

Utilizando el programa Boole-Deusto se obtiene el circuito electrónico digital formado por dos biestables de tipo
JK.

93
TEMA 8
MEMORIAS

Se trata de un tema descriptivo sobre la tecnología y la estructura de las memorias de


semiconductores en el que no se suelen realizar problemas Es un tema habitual en la mayoría de los libros
de electrónica digital. Ejemplos:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Pearson Educación. Tema: 10.
• Tocci, Ronald J. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson Educación. Tema:
12.
• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 7.
• Mano, M. Morris. Diseño Digital. 3ª ed (2016) Ed. Pearson. Tema: 7.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Univsersitat Politècnica de
València. Tema: 12

PREGUNTAS DE TIPO TEST

1. Las memorias DRAM (RAM dinámica) son memorias volátiles que se caracterizan por:

a) Necesitar un proceso de refresco de la información almacenada


b) No necesitar un proceso de refresco de la información almacenada
c) Estar formada por circuitos biestables D.
d) Ser más rápida que la SRAM.

2. ¿Cuál de las siguientes memorias es no volátil?

a) DRAM
b) FLASH
c) RAM estática
d) RAM dinámica

3. Para direccionar una memoria de 16 Kbytes ¿Cuántas líneas de dirección son necesarias?

a) 8 b) 10 c) 12 d) 14

95
Problemas de electrónica digital

4. ¿Cuantas palabras se puede almacenar en una memoria de 211x8 bits?

a) 8
b) 11
c) 2048
d) 16384
5. En el circuito de la figura, si m=10 y n=8 ¿Cuál será el tamaño de la palabra obtenida con el conjunto
de las dos memorias?

a) 8
b) 10
c) 16
d) 20

6. ¿Por qué necesitan las memorias RAM dinámicas un circuito de refresco?

a) Para disminuir su temperatura.


b) Para actualizar su información.
c) Para modificar la información.
d) Para rescatar información perdida.

7. Las UVPROM, se caracterizan por ser memorias que se:

a) Borran y escriben por medio de radiación ultravioleta.


b) Borran y escriben eléctricamente.
c) Borran por medio de radiación ultravioleta pero se escriben eléctricamente.
d) Borran eléctricamente pero se escriben por medio de radiación ultravioleta.

8. Las EEPROM, se caracterizan por ser memorias que se:

a) Borran y escriben por medio de radiación ultravioleta.


b) Borran y escriben eléctricamente.
c) Borran por medio de radiación ultravioleta pero se escriben eléctricamente.
d) Borran eléctricamente pero se escriben por medio de radiación ultravioleta.

9. ¿Qué tipo de memoria se utilizan en: cámaras fotográficas, reproductores MP3/MP4 y ficheros en
discos USB?

a) Memorias Flash
b) Memoria DRAM (RAM dinámica)
c) Memoria SRAM (RAM estática)
d) Memoria ROM de máscara

96
Tema 8. Memorias

10. La siguiente figura muestra el patillaje de la memoria SRAM CY7C149


¿qué tamaño tiene dicha memoria?

a) 512 palabras de 4 bits.


b) 1024 palabras de 8 bits.
c) 512 palabras de 8 bits.
d) 1024 palabras de 4 bits.

Fuente: CY7C149 de Cypress

11. Cuándo una memoria no está seleccionada a través del terminal de CS (Chip Select), ¿Cómo se
encuentran sus salidas?

a) A nivel Alto.
b) A nivel Bajo.
c) En alta impedancia.
d) Indeterminadas.

Soluciones a las Preguntas de Test del Tema 8 (Memorias)

1) a) DRAM almacena la información por medio de la carga de condensadores internos.


2) b) El resto son memorias RAM, luego son volátiles
3) d) 214=16384=16Kbytes.
4) c) 211=2048
5) c) El circuito es un duplicador del tamaño de la palabra de la memoria, luego 2∙n=2x8=16.
6) b) Circuito de recarga de los diminutos condenadores que forman celda de memoria.
7) c) UVPROM: Ultra Violet PROM (solo borrar).
8) b) EEPROM: Electrical Erase PROM.
9) a) Memorias Flash son memorias no volátiles de alta capacidad.
10) d) Diez entradas de dirección (A9 a A0). 210=1024. Tamaño palabra 4 bits (I/O3 a I/O0).
11) c) Para desconectarse con bus de salida.

97
TEMA 9
DISPOSITIVOS LÓGICOS
PROGRAMABLES (PLD)

Tema descriptivo sobre los Dispositivos Lógicos Programables (PLD) en general y de la estructura PAL
en particular. Además, en este tema también se han incorporado preguntas del lenguaje de descripción de
hardware VHDL, que se han puesto en una sección aparte porque el nivel de estudio de esta materia en la
enseñanza universitaria varía en función del curso y titulación académica
Además de la bibliografía general existe una bibliografía específica sobre este tema, tanto en la
descripción de los circuitos programables como en el lenguaje VHDL. Ejemplos:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Ed. Pearson Educación. Tema: 11.
• Tocci, Ronald J. y otros. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson Educación.
Tema: 10.
• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 9.
• Roth, Charles H. (2004). Fundamentos de Diseño Lógico. 5ª ed. Paraninfo. Temas: 17 y 20.
• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital. Editorial Universitat Politècnica de
València.. Tema: 13.

Específicos de PLD y VHDL:

• Mandado, Enrique; Alvarez, Jacobo; Valdés, Mª Dolores (2002). Dispositivos Lógicos Programables y sus
aplicaciones. Ed. Thomson
• Kleitz, William (2014). Digital electronics: a practical approach with VHDL. 9th ed. Prentice Hall.
• Ashenden, Peter J. (2008). The student's guide to VHDL 2nd ed. Morgan Kaufmann cop.

99
Problemas de electrónica digital

PREGUNTAS DE TEST TEMA 9

1. ¿Por qué se dice que una PAL es un dispositivo programable?

a) Porque ejecuta un programa escrito en una memoria flash.


b) Porque necesita un programa para determinar cuáles son las funciones lógicas que implementa,
pero no ejecuta ningún programa en su funcionamiento.
c) Porque tiene una serie de patillas de control que, según su estado de lógico, determinan el
funcionamiento del circuito.
d) Porque, para que funcione, necesita estar conectada a un ordenador con programas informáticos
específicos.

2. La estructura de las PAL se caracteriza por tener:

a) Matriz AND programable y OR fija.


b) Matriz AND fija y OR programable.
c) Matriz AND programable y OR programable.
d) Matriz AND fija y OR fija.

3. ¿Qué función lógica se obtiene en el esquema interno de la PAL de la figura

A
a) F = A⋅ B ⋅ C
B
b) F = A ⋅ B ⋅ C + B ⋅ C
C c) F = A ⋅ B ⋅ C + A ⋅ B ⋅ C
d) F = A ⋅ B ⋅ C + A ⋅ B ⋅ C

4. ¿Cuál de los siguientes dispositivos programables posee una estructura interna más compleja?

a) FPGA
b) CPLD
c) PAL22V10
d) PAL16L8

5. La PAL22V10 se caracteriza por tener las salidas:

a) Activas a nivel alto


b) Activas a nivel bajo
c) Registradas
d) Programables

100
Tema 9. Dispositivos lógicos programables (PLD)

6. De la PAL22V10 se puede obtener

a) 10 entradas máximas
b) 10 entradas mínimas
c) 10 salidas máximas
d) 10 salidas mínimas

7. Según el esquema de la PAL de la figura, ¿Cómo pueden ser las salidas, combinacionales o
secuenciales?

a) Solo combinacional.
b) Solo secuencial.
c) Cada salida se puede configurar como
secuencial o como combinacional.
d) La mitad de las salidas combinacional y la
otra mitad secuencial.

Fuente: PALR4 de AMD

8. ¿Cómo se denomina el formato del fichero necesario para grabar las conexiones de una PAL
(GAL22V10)?

a) Intel HEX (*.HEX)


b) JEDEC (*.JED)
c) Ensamblador (*.ASM)
d) Motorola S19

9. El siguiente esquema corresponde a una sección de una PAL. ¿Cuántas entradas tiene la puerta AND
indicada en el recuadro?

Fuente: Texas Instruments

a) 1. b) 6 c) Ninguna. d) 32

101
Problemas de electrónica digital

LENGUAJE VHDL
10. ¿Cuantos terminales de entrada y salida posee en total el circuito que tiene la siguiente expresión en
VHDL?

ENTITY comparador IS
PORT (A,B: IN std_logic_vector (3 Downto 0);
igual, mayor, menor: OUT std_logic);
END comparador;

a) Dos entradas y una salida.


b) Cuatro entradas y tres salidas.
c) Cuatro entradas y cuatro salidas.
d) Ocho entradas y tres salidas.

11. En VHDL, ¿cómo se denomina a la sección que describe las entradas y salidas de un dispositivo?

a) Entity
b) Architecture
c) PORT
d) Library

12. En VHDL ¿Con qué sentencia se indica que una señal actúa con un reloj activo por flanco de BAJADA?

a) Clock DOWN
b) Clock = ‘0’
c) Clock’EVENT AND Clock=’1’
d) Clock’EVENT AND Clock=’0’

13. ¿Cuantos terminales de entrada y de salida posee en total el circuito que tiene la siguiente expresión
en VHDL?
a) Una entradas y dos salida
port b) Tres entradas y una salida
(w: in std_logic_vector (3 downto 0);
y: out std_logic_vector (1 downto 0); c) Tres entradas y dos salida
z: out std_logic); d) Cuatro entradas y tres salidas

14. ¿Qué valores puede tomar cada entrada y salida del programa VHDL de la pregunta anterior
(std_logic)?

a) TRUE, FALSE
b) Enteros -(231) hasta +(231 - 1)
c) Números en coma flotante
d) '0', '1' 'U' = no inicializado, 'X' = desconocido, 'Z' = flotante, '-' = no importa

102
Tema 9. Dispositivos lógicos programables (PLD)

15. En VHDL mediante la expresión signal aux: bit; se indica que:

a) aux es una señal interna de tipo bit.


b) aux es un comentario auxiliar para el programador.
c) aux es un bit bidireccional.
d) aux es un bit del registro signal

16. En el siguiente fragmento de programa VHDL correspondiente a un Latch R-S

entity S_RLatch is ¿Cómo queda la salida Q si ambas entradas se


port (R, S: in bit; Q: out bit); encuentran a nivel alto (R=S=1)?
end entity S_RLatch;
a) Se produce oscilación
architecture architec of S_RLatch is
begin b) Se queda como estaba (estable)
process (R, S) c) Situación no definida.
begin d) Q=1
If S =´0´ then Q <= ´1´;
elseif R = ´0´ then Q <=
´0´;
end if;
end process
end architec;

Soluciones a las Preguntas de Test del Tema 9. PLD - VHDL

.
1. b) En el funcionamiento de las PAL no hay programa que se esté ejecutando en su interior.
2. a) El caso contrario corresponde a las memorias.
3. b) Hay que fijarse en las conexiones que permanecen integras de la matriz AND.
4. a) FPGA (Field Programmable Gate Array).
5. d) La letra V significa Versatil (programable).
6. d) El último número significa el número de salidas máximas.
7. d) Tiene cuatro salidas combinacionales y cuatro registradas (con biestables).
8. b) El resto de opciones corresponden a formatos para memorias o microcontroladores.
9. d) Número de líneas que lo cruza (0 a 31).
10. d) Dos vectores de cuatro entradas cada uno y tres salidas simples.
11. a) Es el primer bloque de un programa VHDL.
12. d) El evento pasa a valor 0.
13. d) Un vector de entrada de 4 bits, un vector de salida de dos bits más una salida simple.
14. d) Tiene que estar incorporada la sentencia: use ieee.std_logic_1164.all;
15. a) Actúa como una señal parcial.
16. d) No se cumple ninguna de las condiciones y se sale del bloque “process” dejando la salida Q como
estaba.

103
Problemas de electrónica digital

PROBLEMAS VHDL

Problema 9.1.
A partir del siguiente programa fuente de VHDL contestar a las siguientes preguntas:
library ieee;
use ieee.std_logic_1164.all; a) Dibujar un bloque del circuito,
indicando todas las entradas y
ENTITY circuito IS salidas. ¿Qué tipo de circuito
PORT (reloj, reset : in std_logic; digital implementa?
sal : out std_logic_vector(2 downto 0));
END circuito;
b) Dibuja un posible diagrama de
ARCHITECTURE arq_circuito OF circuito IS estados del circuito
BEGIN
PROCESS (reloj)
BEGIN c) ¿El reset es síncrono o
IF (reloj 'EVENT AND reloj ='1') THEN asíncrono? ¿Por qué?
IF reset='0 ' THEN sal <='0 ';
ELSIF sal < 6 THEN sal <= sal + 1; d) ¿Cuándo es activa la señal de
ELSE sal <= 1;
reloj? ¿Qué sucede al circuito si
END IF;
no hay señal activa de reloj?
END IF;
END PROCESS;
END arq_circuito;

Solución
a)

Circuito contador de 1 a 6 con reset


b)

c) El reset es síncrono porque se ejecuta después de aplicar la señal de reloj adecuada.


d) la señal de reloj es activa por flanco de subida. Si no hay señal de reloj el circuito permanece como está
(estable).

104
Tema 9. Dispositivos lógicos programables (PLD)

Problema 9.2
Se desea diseñar el sistema de control de monedas de una máquina expendedora que admite monedas de
10, 20 y 50 céntimos de euro. El bloque electrónico tiene tres entradas que indica si se ha introducido una
de las monedas válidas: la entrada D indica si ha sido de 10 céntimos, la V de veinte y la C de cincuenta.
Solo una de las tres entradas puede estar activa en un instante dado. La salida del bloque debe ser un bus
de datos con el valor binario de la moneda que ha sido introducida.

Solución
Programa del sistema diseñado en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;

Entity moneda is
port ( d, v, c : in std_logic ;
valor: out integer range 0 to 50);
end moneda;

architecture detector of moneda is


signal val_mon: std_logic_Vector (2 downto 0);
begin
val_mon <= (c & v & d);
Process (val_mon)
begin
case (val_mon) is
when “001” => valor <= 10;
when “010” => valor <= 20;
when “100” => valor <= 50;
when others => valor <= 0;
end case;
end process;
end detector;

105
Problemas de electrónica digital

Problema 9.3
Diseñar un sistema de control de temperatura que tenga tres salidas independientes conectadas a un led
cada una. La entrada al sistema de control es un bus de datos de 4 bits procedente de un convertidor
analógico-digital encargado de convertir el valor analógico de temperatura de un sensor a un valor binario
de 4 bits. El sistema debe responder de tal forma que si la señal de entrada esta entre 0000 y 1000 se
activará una de las salidas correspondientes al estado “Frio”, si el valor se encuentra entre 1001 y 1010 se
activará la salida del estado “Templado” y por último entre 1011 y 1111 se activará la salida del estado
“Calor”.

Solución
Programa del sistema diseñado en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;

entity sistema is
port ( dig_val : in integer range 0 to 15;
frio, templ, calor : out bit);
end sistema;

architecture arc_sis of sistema is


Signal status : Bit_Vector (2 downto 0);
Begin
frio <= status(2);
templ <= status(1);
calor <= status(0);
Process (digital_value)
begin
If (dig_val <= 8) then status <= “100”;
Elsif (dig_val > 8 and dig_val < 11) then status <= “010”;
Else status <= “001”;
end if;
end process;
end arc_sis;

106
Tema 9. Dispositivos lógicos programables (PLD)

Problema 9.4
Diseñar el control de un teclado 3x4 con visualización de la tecla pulsada mediante un display de 7
segmentos codificada en BCD.

El sistema se basa en utilizar un contador en anillo de 4 bits conectado a las filas del teclado
funcionando a una frecuencia suficientemente alta para que al pulsar cualquier tecla ésta sea leída
utilizando las columnas del teclado. El sistema responde, por ejemplo, a la secuencia del siguiente
esquema:

Así según la tecla pulsada se obtiene el siguiente decodificador:

L3..L0 C2..C0 Tecla pulsada Código BCD


0001 001 1 0001
0010 001 4 0100
0100 001 7 0111
1000 001 * 1100
0001 010 2 0010
0010 010 5 0101
0100 010 8 1000
1000 010 0 0000
0001 100 3 0011
0010 100 6 0110
0100 100 9 1001
1000 100 # 1111

107
Problemas de electrónica digital

El sistema general se implementa según el siguiente esquema en una GAL22V10:

El sistema tiene una entrada de inicialización (IR) y un reloj (CLOCK) para el control de velocidad del
contador en anillo. Para el control del teclado se tendrán 4 salidas de control de las filas (L[0..3]) y 3
entradas para el control de las columnas (C[0..2]). Por último, posee 4 salidas en BCD para conectar al
display de 7 segmentos. Se necesita una señal interna (Pulse) que indique si se ha pulsado alguna tecla.
De esta forma el código en VHDL se dividirá en dos bloques: uno el contador en anillo y otro el
decodificador. El contador en anillo tiene como entrada el reloj de control y como salidas las L[0..3] y el
decodificador tiene como entradas L[0..3] y C[0..2] y como salida el código BCD.

108
Tema 9. Dispositivos lógicos programables (PLD)

Solución

a) El flujograma del programa se muestra a continuación donde PULSE es la señal que indica si se ha pulsado o
no una tecla y DECO es el valor conjunto de las filas más las columnas.

109
Problemas de electrónica digital

b) Programa del sistema diseñado en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;

ENTITY ring IS
PORT(clk, ir: IN std_logic;
C : in std_logic_vector(2 downto 0);
Q : OUT std_logic_VECTOR(3 DOWNTO 0);
L : INOUT std_logic_VECTOR(3 DOWNTO 0));
END ring;

ARCHITECTURE ani OF ring IS


SIGNAL deco : std_logic_VECTOR(6 DOWNTO 0);
SIGNAL pulse : std_logic;
BEGIN
pulse <= (C(2) OR C(1) OR C(0));
deco <= L(3)&L(2)&L(1)&L(0)&C(2)&C(1)&C(0);
PROCESS(clk)
BEGIN
IF (clk = '1' AND clk'EVENT) THEN
if (ir = '1') then L <= (0=> '1', others => '0');
else
L(1) <= L(0);
L(2) <= L(1);
L(3) <= L(2);
L(0) <= L(3);
end if;

if (pulse = '1') then


case deco is
when “0001001"=> Q <="0001";
when "0010001"=> Q <="0100";
when "0100001"=> Q <="0111";
when "1000001"=> Q <="1100";
when “0001010"=> Q <="0010";
when "0010010"=> Q <="0101";
when "0100010"=> Q <="1000";
when “1000010"=> Q <="0000";
when “0001100"=> Q <="0011";
when "0010100"=> Q <="0110";
when "0100100"=> Q <="1001";
when “1000100"=> Q <="1111";
when others => Q <="1111";
END case;
End if;
End if;
END PROCESS;
END ani;

110
Tema 9. Dispositivos lógicos programables (PLD)

Problema 9.5
Diseñar un control de un motor paso a paso bipolar con una entrada de reloj que
controle los pasos del motor y una entrada de control del sentido de giro (C). Se
utilizará solamente el funcionamiento “Full-step” cuya secuencia es la siguiente
(entradas al motor ABCD): 1010-1001-0101-0110

Solución
Se deberá diseñar un contador en VHDL que siga la siguiente secuencia:

Descripción de la máquina de estados en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;

ENTITY counter IS
PORT (clock, c: in std_logic;
q : inout std_logic_vector(3 downto 0));
END counter;

ARCHITECTURE counter_a OF counter IS


BEGIN
PROCESS(clock)
BEGIN
IF (clock'EVENT AND clock='1') THEN
IF c='1' then
CASE q IS
WHEN "0000" => q <="1010";
WHEN "1010" => q <="1001";
WHEN "1001" => q <="0101";
WHEN "0101" => q <="0110";
WHEN "0110" => q <="1010";
WHEN OTHERS => q <="0000";
END CASE;
ELSE
CASE q IS
WHEN "0000" => q <="0110";
WHEN "0110" => q <="0101";
WHEN "0101" => q <="1001";
WHEN "1001" => q <="1010";
WHEN "1010" => q <="0110";
WHEN OTHERS => q <="0000";
END CASE;
END IF;
END IF;
END PROCESS;
END counter_a;

111
Problemas de electrónica digital

Circuito complete

Problema 9.6
Diseñar un control de un motor paso a paso bipolar cuyo movimiento sigue la posición de un codificador
(encoder 25LB10-Q) incremental mecánico. Un codificador incremental, es un codificador que determina el
ángulo de posición por medio de conteos incrementales. Esto significa que el codificador incremental
proporciona una posición estratégica desde donde la cuenta se iniciará siempre. La posición actual del
codificador es incremental en comparación con la última posición registrada por el sensor. Los
codificadores incrementales generan un número exactamente definido de impulsos por revolución. Estos
indican la medida de la distancia angular y lineal recorrida. Debido al cambio de fase entre las señales A y B
(aproximadamente 90 grados), la dirección de rotación. El 25LB10-Q es de 36 posiciones en pasos de 10º.
El sistema se debe diseñar en base a una máquina de estados tipo Moore, con la entrada de reloj, las
dos entradas procedentes del codificador y cuatro salidas para controlar el motor en el modo “full-step”.

112
Tema 9. Dispositivos lógicos programables (PLD)

Solución

El diagrama de estados de la máquina tipo Moore es el siguiente:

Las entradas deben seguir las siguientes secuencias:

Y las salidas (entradas al motor ABCD): 1010-1001-0101-0110

113
Problemas de electrónica digital

Descripción de la máquina de estados en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;

ENTITY counter IS
PORT (clock,rst: in std_logic;
direction: in std_logic_vector (1 downto 0);
q : out std_logic_vector(3 downto 0));
END counter;

ARCHITECTURE counter_a OF counter IS


type state_type is (Q0, Q1, Q2, Q3);
signal state : state_type;

BEGIN
PROCESS(clock,rst)
BEGIN
if rising_edge(clock) then
If (rst = '0') then state <= Q0; q <="0110";
else
CASE state IS
WHEN Q0 => q <="0110";
if direction="01" then state<=Q1;
elsif direction="10" then state<=Q3;
else state<=Q0;
end if;
WHEN Q1 => q <="1010";
if direction="11" then state<=Q2;
elsif direction="00" then state<=Q0;
else state<=Q1;
end if;
WHEN Q2 => q <="1001";
if direction="10" then state<=Q3;
elsif direction="01" then state<=Q1;
else state<=Q2;
end if;
WHEN Q3 => q <="0101";
if direction="00" then state<=Q0;
elsif direction="11" then state<=Q2;
else state<=Q3;
end if;
END CASE;
END IF;
END IF;
END PROCESS;
END counter_a;

114
Tema 9. Dispositivos lógicos programables (PLD)

Circuito Completo:

Problema 9.7

Se desea diseñar un sistema que guarde un número de código. El número está formado por 4 cifras y será
introducido usando un teclado matricial 3x4. Las cifras se mantendrán en las primeras cuatro direcciones
de una SRAM. La introducción del código comenzará con la tecla (*) y terminará con la tecla (#). Se utilizará
la RAM estática 6116 CMOS. Por simplificar el diseño el código no debe tener dos cifras iguales
consecutivas, por ejemplo, 5544 pero si en distinta posición como 5454. Utilizar una máquina de estados
tipos Moore para obtener el sistema de control. El valor de la tecla pulsada viene dado en BCD. Las
características de la memoria 6116 son las siguientes:

115
Problemas de electrónica digital

Solución
Solo interesa para este diseño el proceso de escritura, en esta memoria tiene dos tipos diferentes de ciclo de
escritura:

Fuente IDT

Se puede observar que en el tipo 2 controlado por la señal CS, la señal de escritura WE está siempre a nivel bajo
durante todo el proceso lo que va a facilitar el diseño puesto que se puede dejar a nivel bajo de forma fija y
trabajar solo con la señal CS.
El diagrama de la máquina de estados puede ser el siguiente:

116
Tema 9. Dispositivos lógicos programables (PLD)

Donde la entrada KEY es el valor en BCD de la tecla pulsada, DATA es el valor a guardar en la memoria RAM,
CS es la señal Chip Select de la memoria RAM y ADDRESS las 4 líneas (bajas) del bus de direcciones de la
memoria RAM.
La señal de reloj que se utiliza para controlar la máquina de estados tiene la frecuencia adecuada para cumplir
los tiempos que requiere el ciclo de escritura de la memoria.

Descripción de la máquina de estados en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;
entity FSM is
port(
KEY: in std_logic_vector ( 3 downto 0 );
CLK: in std_logic ;
ADDRESS: inout integer range 0 to 3;
DATA: out std_logic_vector ( 3 downto 0 );
CS: out std_logic );
end;
architecture A_FSM of FSM is
type state_type is (Q0, Q1, Q2, Q3);
signal state : state_type;
Begin
process (CLK)
begin
if rising_edge(clk) then
if (RST = '1') then state <= Q0;ADDRESS<=0;DATA<="0000";CS<='1';
elsif rising_edge(clk,RST) then
case state is
when Q0 => CS <= '1'; ADDRESS <= 0;
if KEY = "1100" then state <= Q1; else state <= Q0; end if;
when Q1=> CS <= '0'; ADDRESS <= ADDRESS; DATA <= KEY;
if KEY = "1111" then state <= Q0;
elsif KEY = "1100" then state <= Q1; else state <= Q2;
end if;
when Q2 => CS <= '1';
if (DATA = KEY) then state <=Q2;
elsif KEY = "1111" then state <= Q0; else state <= Q3;
end if;
when Q3=> ADDRESS <= ADDRESS + 1 ; state<=Q1;
when others => state <= Q0;
end case;
end if ;
end process;
end A_FSM

117
Problemas de electrónica digital

Circuito Completo:

118
TEMA 10
SISTEMAS DIGITALES
COMPLETOS

En los temas anteriores se han incluido problemas donde se resuelven contenidos específicos de cada uno
de ellos. Para tener una visión global y conjunta de la parte de la electrónica digital que abarca esos temas
es conveniente resolver problemas donde sea necesario conocer los contenidos de diversos temas. En este
tema se incluyen algunos problemas de mayor envergadura que los anteriores y que realizan una
recopilación de los diversos conceptos estudiados en los primeros temas.

Problema 10.1

Se desea automatizar una persiana motorizada mediante un


solo pulsador que permita tanto la subida como la bajada.

La persiana dispone de dos contactos magnéticos en los


finales de carrera (uno cuando está totalmente subida “S” y otro
cuando está totalmente bajada “B”). El accionamiento se realiza
mediante un motor de continua de 12V, 18W montado en un
puente que permite su inversión y controlado por dos señales
“UP” y “DOWN” que determinan su sentido de giro.

El funcionamiento debe ser el siguiente:

Al mantener presionado el pulsador “P” la ventana empieza a


subir (Motor en “UP”), si se suelta deja de subir. Si llega al final
de carrera “S” (totalmente subida) y se sigue presionando “P” la
ventana empieza a bajar (Motor en “DOWN”). Si se sigue
presionando “P” y se llega al final de carrera “B” (totalmente
bajada) el motor invierte de nuevo su sentido de giro y empieza
a subir (Motor en “UP”). En todo momento el sistema debe
recordar si estaba subiendo o bajando, de forma que, si se suelta “P” y se vuelve a pulsar, el motor debe
seguir la misma trayectoria que estaba llevando anteriormente.

119
Problemas de electrónica digital

Los detectores magnéticos “S” y “B” están constituidos por un contacto normalmente cerrado. Al situarse
el imán frente a ellos el contacto se abre.
El pulsador “P” es un contacto normalmente abierto, de forma que al pulsar el contacto se cierra.

El circuito de control del motor y la tabla de verdad se muestra en la siguiente figura:

UP DOWN GR MOT FUNCIÓN


0 0 X 0 PARO
1 0 1 1 SUBE
0 1 0 1 BAJA
1 1 X 0 PARO

El diagrama de bloques del sistema digital será:

Determinar:

a) A partir de las señales UP/DOWN que proporciona el circuito de control, obtener el circuito
decodificador que active las señales GR y M necesarias para el motor. Utilizar el circuito Integrado
74HCT00 (puertas NAND de dos entradas).
b) La señal “GR” activa la bobina de un relé de 180 Ω (12V) cuando está a nivel alto. Si se utiliza un
transistor con una hFEmín = 30 (βsat) y una VBEmáx = 1.1V, determinar el valor de la resistencia de base
R1.
c) La señal “MOT” permite e inhibe el giro del motor. El transistor utilizado es un superbeta (hFEmín
=230 (β), VBEmáx=1.5V). Calcular el valor de R2 para su activación con un nivel alto.
d) Diseñar el circuito de los contactos magnéticos (S y B) y del pulsador (P) para que produzcan un
nivel lógico alto al activarse.
e) A partir de las señales de entrada, dibujar el diagrama de estados de un sistema secuencial que
permita obtener las salidas “UP” y “DOWN” de gobierno del Motor.

120
Tema 10. Sistemas digitales completos

Fuente: On Semiconductor, 2007

Solución
c) A partir de la tabla de verdad se obtiene las funciones lógicas de GR y MOT
= ∙
= ∙ + ·
El circuito digital con puertas NAND será:

d) Para el relé IC=Vcc/RL=12/180=67mA, con ello IB=IC/hFEmin = 67/30 = 2,22mA.


Como se debe activar con un nivel H, VOHmin=R1·IB+VBEMAX
Con ello R1< (VOHmin - VBEMAX) /IB = (3,84-1,1)/2,22 = 1,2KΩ

e) Ic=Pmotor/Vmotor = 18/12= 1,5V


IB=IC/hFEmin = 1,5A/230 = 6,5mA
Como se debe activar con un nivel H, VOHmin=R2·IB+VBEMAX
Con ello R2< (VOHmin - VBEMAX) /IB = (3,84-1,5)/6,5 = 0,36KΩ

121
Problemas de electrónica digital

f) Para los contactos magnéticos y pulsador:

El valor puede variar entre 10 y 100K (CMOS)

g) Máquina de estados. E0: subida, E1: bajada P,S,B / UP,DOWN

Problema 10.2
La figura muestra el diagrama de bloques de un circuito lógico usado para el control del número de copias
(de 1 hasta 9) de una fotocopiadora.

122
Tema 10. Sistemas digitales completos

El operador de la máquina selecciona el número de copias deseada cerrando uno de los interruptores
S1 a S9. Este número es codificado a BCD por el circuito codificador (DECIMAL-TO-BCD ENCODER) y es
enviado al circuito comparador (4-BIT COMPARATOR).
Posteriormente, el operador pulsa un interruptor momentáneo (START) que inicializa el circuito de
control (CONTROL LOGIC). Este control pone a “1” la señal de operación (OPERATE) lo que significa que la
fotocopiadora comienza a realizar las copias.
Cuando la máquina hace cada copia (simulado con un botón), se genera un pulso (CK_INPUT) que se
aplica al contador (4 BIT COUNTER). Las salidas del contador son continuamente comparadas con las salidas
del decodificador de los interruptores mediante el comparador. Cuando los dos números coinciden la salida
del comparador EQUAL se pone a “1” y hace que la señal de operación (OPERATE) vuelva al nivel “0” y la
fotocopiadora se pare y no realice más copias, poniendo además el contador a cero. Si el pulsador de
START se vuelve a pulsar durante este periodo esta operación no se reinicializa.
Si se selecciona 0 copias el control no debe activar la señal de operación (OPERATE) y sí activar con un
“1” la señal de alarma (ALARM). Esta señal se desactiva automáticamente cuando un número de copias
distinta de cero se selecciona mediante los interruptores.
Se asume que los interruptores no pueden ser modificados durante el proceso.

1. Diseñar un codificador Decimal a BDC usando el C.I. 74HC147 y las puertas lógicas necesarias. Las
salidas de los interruptores S1 a S9 están normalmente a “1”.
2. Diseñar un comparador de 8-bit usando el C.I. 74HC85. Este circuito tiene que suministrar una señal
(EQUAL), la cual establecerá un “1”. Cuando el número de copias realizadas y el número de copias
programado sea el mismo.
3. Diseñar un circuito de control que conste de:
a) Circuito Monoestable:
 La inicialización del circuito de control (Máquina de estados finitos) es realizada por un
monoestable CD4098 con función no-redisparable. La salida del monosestable será “1” a menos
que la señal START haya sido pulsada, pasando entonces a ser “0” durante 100 ms.
b) Máquina de estados finitos (FSM) con lenguaje VHDL y la GAL22V1. Las señales de reloj y reset se
consideran ya suministradas.
 Inicialmente, la seña de operación (OPERATE) tiene que ser puesta a nivel bajo “0”, permitiendo así
la inicialización del Contador; esto es, el contador empezará siempre en cero. La FSM tiene que
permanecer en este estado hasta que se reciba la señal del monoestable.
 Si se recibe la señal “0” del monoestable y se programa el número de copias (por lo que Equal=0)
entonces la señal de operación (OPERATE) debe ser puesta a “1” permitiendo la acción de
fotocopiar y de contar.
 Pero si se recibe la señal “0” del monoestable pero el número de fotocopias no ha sido programado
(es decir todos los interruptores están abiertos lo que equivale a un numero 0 de fotocopias),
entonces la señal de operación (OPERATE) debe permanecer a nivel bajo “0” y se tiene que activar
la señal de alarma (ALARM). La FSM tiene que permanecer en este estado hasta que el número de
fotocopias haya sido programado, volviendo entonces al estado inicial, o hasta que el número de
fotocopias haya sido programado y la señal del monoestable se reciba, por lo que la FSM debería
trabajar tal como se ha explicado en el punto anterior.

123
Problemas de electrónica digital

 Una vez se active la señal de operación (OPERATE) y la fotocopiadora esté trabajando, la FSM debe
permanecer en este estado mientras el contador y el número de copias programados sea diferente
(Equal=0). Cuando sean iguales, la FSM deberá volver al estado inicial. Si la señal de inicialización
(Start) es pulsada durante este estado, la FSM debe permanecer es este estado por lo que la señal
de Start será ignorada.

4. Diseñar un Contador de 4 bits utilizando el 74HC191 y las puertas lógicas necesarias. Este contador
deber ser puesto a cero con la señal de operación (OPERATE) a “0” y debe permanecer así gasta que la
señal pase a “1”. Por lo tanto, en este periodo, el Contador no debe contar.

5. Rediseñar el comparador de 4 bits y el circuito Contador de 4 bits utilizando la GAL22V10 y el lenguaje


VHDL, en un único bloque. Emplear dos procesos (PROCESS) uno para el Contador y otro para el
comparador.
en

mo
TimeGe

1 De 2 3 4 5 6 7 8 9 10
eG

en

en mo
eG

De
Tim

START eG
en
Tim

Tim
TimeGen Demo eG
Tim Tim
eG TimeGen Demo
Tim
Tim

en
MONOSTABLE eG
TimeGen Demo
Tim

De
eG

mo en

o o
De
eG
en

Dem Dem
mo
en
De

Gen Ge n
mo

De

OPERATE
mo

COUNTER Time 0000 Time 0000

EQUAL

TimeGen

Solución

1. Diseño del codificador de Decimal a BCD utilizando el 74HC147 y las puertas lógicas necesarias

Entradas/salidas de este bloque


entradas: Interruptor a nivel bajo Salidas: BCD a nivel alto
0: 111111111 0000
1: 111111110 0001
…………………….. …………..
9: 011111111 1001

El 74HC147 es un codificador con 9 entradas y 4 salidas. Utilizando las entradas A, se seleccionará el


número deseado de copias. Este número será convertido a BCD y aparecerá en las salidas Y (siendo Y3 el
bit más significante). Sin embrago, tal como indican las hojas de características del integrado “suministra
una representación BCD activa a nivel bajo”. Esto significa que el número de copias deberá ser
complementado para obtener la señal a nivel alto; esto se puede realizar conectando una puerta NOT a
cada salida.

124
Tema 10. Sistemas digitales completos

Fuente: 74HC/HCT147 Philips Semiconductors, 1990

Si todos los interruptores están abiertos (todas las entradas del codificador a “1”) las salida será 0000.

2. Diseño del comparador de 4 Bits utilizando el C.I. 74HC85

Entradas/salidas de este bloque


Entradas: Decodificador BCD a nivel alto / Contador Salida:
Entrada A: Decodificador Entrada B: Contador EQUAL
0000 0000
………………… ………………… Si A=B: HIGH resto: LOW
1001 1001

Este comparador tiene 11 entradas, 4 para cada señal de entrada (A y B, las cuales serán comparadas) y 3
entradas de cascada, en el caso de querer ampliar el número de bits a comparar (lo cual no será necesario en
este caso). En las hojas de características del integrado se señala “para una adecuada operación de
comparación, las entradas en cascada deben estar conectadas de la siguiente forma: IA>B = IA<B = LOW and IA=B
= HIGH”. Las entradas del decodificador ser conectarán por ejemplo a la entrada A y las del contador a la B.

Se quiere detectar cuando el número de copias realizadas será igual a las programadas, por lo que se
necesita la señal de salida QA=B (señal Equal en el sistema).

125
Problemas de electrónica digital

Fuente: 74HC/HCT85 Philips Semiconductors, 1990

3. Diseño del control lógico

MONOESTABLE

La inicialización de la máquina de estado (FSM) es realizada por un


monoestable CD4098 en función no-redisparable. La señal de salida
del monoestable deberá ser siempre un “1” a no ser que la señal de
inicialización (Start) del pulsador se active, pasando entonces a “0”
durante 100 ms.

Como se desea obtener una señal de temporización a nivel bajo se


utiliza la salida NOTQ Para obtener la operación no-redisparable
utilizando la como salida la señal NOTQ la señal Q debe ser
conectada a +TR.

Fuente: CD4098 de Texas Instruments, 2004

126
Tema 10. Sistemas digitales completos

Para obtener los 100 ms el fabricante señala que se puede utilizar la ecuación

TX = 1/2·RX·CX. Se puede obtener con condensador de 20µF y una resistencia de 10KΩ.

Fuente: CD4098 de Texas Instruments, 2004

CONTROL MÁQUINA DE ESTADOS (FSM)

La máquina de estados tendrá dos entradas y dos salidas. Además son necesaria la señal de reloj
CLK_FSM y de RESET (asíncrono) que ya son suministradas

Entradas/salidas del control


Entradas Salidas
MONOSTABLE EQUAL OPERATE ALARM
Pulso bajo 0/1 1/0 0/1

127
Problemas de electrónica digital

• Inicialmente, la señal de operación (OPERATE) está puesta a “0”, lo que permite poner a cero el
contador. La FSM debe permanecer en este estado inicial (Q0) mientras la señal del monoestable sea
“1”.

• Si recibe la señal del monoestable y se ha programado el número de copias (equal=0) entonces la señal
de operación (OPERATE) debe ser puesta a “1” permitiendo la acción de fotocopiar y contar. Para ello
se pasa al estado Q1

• Pero si se recibe del monoestable la señal "0" pero el número de fotocopias no ha sido programado (es
decir todos los interruptores están abiertos lo que equivale a un numero 0 de fotocopias), entonces la
señal de operación (OPERATE) debe permanecer a nivel bajo "0" y se tiene que activar la señal de
alarma (ALARM), estado Q2. La FSM tiene que permanecer en este estado Q2 hasta que el número de
fotocopias haya sido programado, volviendo entonces al estado inicial Q0, o hasta que el número de
fotocopias haya sido programado y la señal del monoestable se reciba, por lo que la FSM debería
trabajar tal como se ha explicado en el punto anterior.

• Una vez se active la señal de operación (OPERATE) y la fotocopiadora esté trabajando, la FSM debe
permanecer en este estado mientras el contador y el número de copias programados sea diferente
(Equal=0). Cuando sean iguales, la FSM deberá volver al estado inicial. Si la señal de inicialización
(Start) es pulsada durante este estado, la FSM debe permanecer es este estado por lo que la señal de
Start será ignorada.

Inputs: MONO-EQUAL Inputs: MONO-EQUAL


Outputs: OPERATE-ALARM Outputs: OPERATE-ALARM

1X 1X

Q0 Q0 01
01
00 00
X1 X1
10 X0
00 Q1 X1
00 Q1 X1
01 01
Q2 Q2
10 10
00
X0 X0

128
Tema 10. Sistemas digitales completos

Descripción de la máquina de estados en lenguaje VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity exam1 is
port ( reset, mono, equal, clk: in std_logic;
operate,alarm: out std_logic);
end exam1;
Inputs: MONO-EQUAL
Outputs: OPERATE-ALARM
architecture behaivor of exam1 is
type state_type is (Q0, Q1, Q2); 1X
signal state : state_type;
Begin
process ( clk, reset ) Q0
begin 01
00
if (reset = '0') then state <= Q0;
X1
elsif rising_edge(clk) then 10
case state is 00 Q1 X1

when Q0 => OPERATE <= '0'; ALARM<='0'; 01


Q2
if (MONO='0' AND EQUAL='0') then state <= Q2;
10
elsif (MONO='0' AND EQUAL='1') then state <= Q1;
else state <= Q0; 00
X0
end if ;

when Q1 => OPERATE <= '0'; ALARM<='1';


if (MONO='0' AND EQUAL='0') then state <= Q2;
elsif EQUAL='1' then state <= Q1;
else state <= Q0;
end if ;

when Q2 => OPERATE <= '1'; ALARM<='0';


if EQUAL = '0' then state <= Q2;
else state <= Q0;
end if ;

when others => state <= Q0;

end case;
end if ;
end process;
end behaivor;

129
Problemas de electrónica digital

4. Diseño del Contador BCD usando el C.I. contador 74HC191 y las puertas lógicas necesarias

Entradas/salidas al bloque
Entradas Salidas
CLK OPERATE Contador: nivel alto
Flanco subida De 0 a 1 0000
1001

Fuente 74HC/HCT191 de Philips Semiconductors, 1990

Se quiere contar de 0 a 9. La carga en paralelo es Asíncrona por lo que se deberá detectar el número 10
(1010). Por lo tanto, la señal de carga paralelo (parallel loads) deber ser “0”, el de habilitación
(enable=”0”) y la señal D/U=”0”. Para realizar la cara paralela, se necesita utilizar una puerta NAND
para detectar la cuenta final; esta NAND irá conectada a Q1 y Q3 (para detectar el 1010) y a través de otra
AND conectada a la señal de operación (OPERATE que está trabaja a nivel “1” y está a “0” el resto del
tiempo)

130
Tema 10. Sistemas digitales completos

Debido a la capacidad de poner a cero el Contador de la señal de operación (OPERATE) no sería


necesario realizar un contador de 0 a 9. El contador será puesto a cero siempre que el número de copias
sea igual al número programado.

5. Rediseñar el comparador de 4 bits y el Contador BCD en un único bloque utilizando el lenguaje VHDL
y la GAL22V10 )
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity exam is
port ( Q :in std_logic_vector (3 downto 0);
operate, clk: in std_logic;
equal: out std_logic);
end exam;

architecture behaivor of exam is


signal count: std_logic_vector (3 downto 0);

begin
process (clk, operate)
begin
if (operate = '0') then count <= (others=>'0');
elsif (rising_edge(clk)) then
if count<9 then count <= count + 1;
else count <= "0000";
end if;
end if;
end process;

process(Q, count)
begin
if (Q = count)
then equal <= '1';
else equal <= '0';
end if;
end process;

end behaivor;

131
Problemas de electrónica digital

Problema 10.3

Dos sensores de temperatura miden un proceso industrial de un modo remoto cuya temperatura fluctúa
entre 0 y 9 grados Celsius. Un usuario puede activar un interruptor para visualizar cual es la temperatura
más alta de los dos sensores.

132
Tema 10. Sistemas digitales completos

Características:
• El valor digital de la temperatura de cada sensor se representa mediante 4 bits.
• El sistema de transmisión debe convertir una entrada de 8 bit en paralelo en una salida serie utilizando
un registro bidireccional de 8 bits.
• El control del registro es llevado a cabo por las señales S1 y S0. Cuando los 8 bits han sido transmitidos,
el transmisor deber permanecer inactivo.
• El receptor debe convertir la señal de serie a paralelo utilizando el mismo tipo de registro. Al igual que
el transmisor, el receptor es controlado por unas señales S1 y S0 y cuando los 8 bits han sido recibidos,
el receptor deber permanecer inactivo.
• El sistema receptor también está formado por un circuito combinacional, el cual consiste en un
comparador y un multiplexor. Ambos sirven para seleccionar la temperatura más alta. Este sistema
tiene una entrada BI que permite apagar el visualizador mientras el sistema no ha enviado los 8 bit y lo
enciende durante el tiempo que el usuario considere necesario.
• El sistema de control permite al usuario controlar la transmisión y la visualización. Posee una señal de
reset (RST) para inicializarlo. La señal de entrada llamada INT permite al usuario inicializar la
transmisión y habilitar la visualización. El sistema de control consiste en dos bloques: una máquina de
estado (FSM) tipo Mealy la cual trabaja como cerebro del sistema y, por otra parte, un contador
síncrono el cual permite controlar la transmisión de los 8 bits. La FSM suministra las señales de control
S1 y S0 para el transmisor y el receptor. La FSM también controla la señal de visualización (BI).
Finalmente, FSM resetea el contador cuando este ha terminado su cuenta. El contador cuenta los 8
pulsos de reloj requeridos para la transmisión y genera una señal (COUNT) de fin de cuenta.

Tareas:

1. Diseñar un transmisor utilizando el C.I. 74198 (registro de desplazamiento universal de 8 bits). El


transmisor debe trabajar como un registro paralelo-serie. Primero deber realizar una carga en paralelo,
seguido de un desplazamiento y, para finalizar, debe mantenerse en espera (hold) hasta la nueva
transmisión. El transmisor está controlado por S1y S0.

2. Diseñar un receptor utilizando el C.I. 74198. El receptor debe trabajar como un registro serie-paralelo.
El dato de temperatura debe aparecer tras 8 pulsos de reloj en la salida. Las señales S1 y S0 están
compartidas con el transmisor, por lo que la secuencia de control debe ser la misma.

133
Problemas de electrónica digital

3. Diseñar un sistema combinacional formado por un circuito comparador de bits (74LS85) que testea cuál
de los dos valores recibidos en mayor y trabaja con el doble multiplexor de 4 bits (74LS157) para
conmutar el valor mayor de temperatura hacia el decodificador de BCD-7 Segmentos (74LS47). La señal
de entrada BI debe utilizarse para apagar el visualizador hasta que la transmisión se complete y debe
encenderlo cuando el valor de mayor temperatura sea detectado.

4. Diseño del Sistema de control:

• Diseñar un contador de 4 bits utilizando el C.I. 74LS190 (contador decimal bidireccional síncrono de 4
bits) y las puertas lógicas necesarias. El contador es inicializado por la señal PL y realiza la cuenta de los
8 pulsos de reloj necesarios para la transmisión. El contador envía una señal COUNT al FSM al final de
cada cuenta.

• Diseñar una máquina de estado tipo Mealy (FSM) con lenguaje VHDL y la GAL22V10. Las señales de
reloj y reset son suministradas.

 La señal de reset (RST) debe ser síncrona y activa nivel bajo. La señal INT esta normalmente a
nivel bajo hasta que un operador abre el interruptor y mantiene la señal a nivel alto para
inicializar el proceso.
 La señal inicial INT permanece a nivel bajo y permite al sistema la transmisión mediante la
carga en paralelo de los datos de entrada, utilizando para ello las señales S1 y S0. También
mantiene a “0” la señal PL y apaga el visualizador mediante la señal BI.
 La transmisión debe empezar con las señales S1 y S0 después de la activación de la señal INT.
Se deberá también empezar a contar los 8 pulsos de reloj mediante la deshabilitación de PL y
mantener el visualizador apagado con BI. Después de la transmisión de los 8 pulsos, es decir,
cuando el contador haya finalizado la cuenta, la FSM recibe la señal COUNT la cual habilita la
transición de estado de la FSM al estado “espera y visualización”.

134
Tema 10. Sistemas digitales completos

 En el estado “espera y visualización” los registros permanecen en espera (hold) controlador por
S1 y S0, el contador es puesto a cero por la señal PL y el visualizador es encendido por la señal
Bi, permitiendo la visualización de la mayor temperatura. El sistema debe permanecer en este
estado hasta que se reinicialice el proceso.
 Tan pronto como el operario cierre el interruptor y la señal INT sea “0”, el sistema volverá al
estado inicial y abortará el proceso donde se encuentre.

74198 (8-BIT BIDIRECTIONAL UNIVERSAL SHIFT REGISTER)

Fuente: 74F198 Philips Semiconductors, 1987

135
Problemas de electrónica digital

7485 (4-BIT MAGNITUDE COMPARATOR)

Fuente: SN54/74LS85 Motorola

74157 (QUAD 2-INPUT MULTIPLEXER)

Fuente: SN54/74LS157 Motorola

7447 (4-BIT MAGNITUDE COMPARATOR)

Fuente: SN54/74LS4 Motorola

136
Tema 10. Sistemas digitales completos

74190 (PRESETTABLE BCD/DECADE UP/DOWN COUNTERS)

Fuente: SN54/74L190 Motorola

Solución

1. Diseño del transmisor utilizando el 74198)

Solo se necesitan conectar las entradas de carga en paralelo a las entradas de los sensores. Las señales de
control S1 y S0, el MR siempre a nivel alto y la entrada SR (o SL) a un nivel cualquiera, en este caso a
masa. La salida por Q7 ya que se ha elegido el desplazamiento a derecha (o la Q0 si es a izquierda). Tal
como dice el enunciado primero se realiza una carga en paralelo (S1=1, S0=1), después el desplazamiento a
derecha (S1=0, S0=1) y por último un mantenimiento (hold) (S1=0, S0=0)

Fuente: 74F198 Philips Semiconductors, 1987

2. Diseño del receptor utilizando el 74198

La entrada se conecta a SR (o SL) al elegir el desplazamiento a derechas (o izquierdas). La salida es en


paralelo, luego estarán todas accesibles. Las señales de control S1 y S0, el MR siempre a nivel alto. Como
se produce una carga previa al compartir las entradas de control con el transmisor, se han puesto todas las
entradas de carga en paralelo a cero por claridad de diseño.

137
Problemas de electrónica digital

3. Diseño del sistema combinacional utilizando el 7485, 74157 y 7447

La comparación se lleva a cabo mediante el 7485, introduciendo los datos de la salida del registro
receptor directamente al comparador. Al ser un solo integrado hay que conectar las entradas de cascada
según indica la tabla de verdad, es decir como si la comparativa anterior fuese idéntica: A=B a nivel alto y
A>B y A<B a nivel bajo. Como se necesita conocer cuál de los dos valores es mayor se puede elegir entre la
salida A>B o A<B, actuando en consecuencia en el multiplexor. En este caso se ha escogido A<B.
Una ver determinado cual es el mayor se utiliza un multiplexor para seleccionar el dato que se debe
visualizar. La señal de enable del multiplexor se puede dejar fijo a nivel bajo. Si la señal de control (A’/B o
S) está a nivel bajo el dato que pasa es el de la entrada I0 (A) si está a nivel alto pasa la entrada I1 (B).
La señal A<B procedente del comparador es un nivel alto cuando B es mayor que A, así que se
conectan los datos de la entrada A del comparador a la entrada I0 (A) del multiplexor, y los de la entrada B
del comparador a la entrada I1 (B) del multiplexor.
Por último, los datos de la salida del multiplexor se conectan al decodificador BCD-7 segmentos (7447).
Según la tabla de verdad si se conectan RBI y LT a nivel alto se puede controlar el encendido o apagado del
visualizador mediante la entrada Bi/RB0. Si esta entrada está a nivel bajo el display se apaga y estando a
nivel alto habilita la visualización.

4. Diseño del sistema de control

Diseño del contador utilizando el 74LS190 y las puertas lógicas necesarias.


Al ser un contador de 8 pulsos, se realiza una inicialización a 0 conectando todas las entradas de
carga a nivel bajo. Al ser cuenta ascendente la señal Down/Up a nivel bajo así como el enable ya que no se
utilizará en el diseño. Para realizar la carga e inicializar el conteo se utiliza la entrada de carga en paralelo
(PL), mientras está nivel bajo la salida del contador permanece con la carga de datos (en este caso a 0) y
cuando pasa a nivel alto, se inicia la cuenta hasta 8.
La detección del final de cuenta va a depender de la máquina de estados ya que se puede detectar el 7
o el 8. Como se verá en el punto siguiente se ha optado por detectar el 7 conectando una puerta NAND en
las salidas del contador para detectar el 0111. La salida de esta puerta, llamada COUNT, pasará nivel bajo
cuando se detecte el 7.

138
Tema 10. Sistemas digitales completos

5. Diseño de la máquina de estados finitos tipo Mealy con VHDL y GAL22B10)


• La señal de reset (RST) debe ser síncrona y activa a nivel bajo. La señal INT se mantiene normalmente
a nivel bajo hasta que el usuario abre el interruptor y la mantiene a nivel alto para iniciar todo el
proceso.

• Estado Q0: Inicialmente la INT permanece a nivel bajo y el sistema permite al registro de transmisión
realizar la carga en paralelo de los datos de entrada mediante el control de las señales S1 y S0, además
mantiene el contador a 0 mediante la señal PL y el visualizador apagado mediante la señal BI. →
INT=0, COUNTER=X / S1=1,S0=1,PL=0,BI=0

• Estado Q1: Al activarse la señal INT debe comenzar la transmisión mediante el control de las señales
S1 y S0, además debe iniciar el conteo de los 8 pulsos mediante la deshabilitación de la señal PL y
mantener el visualizador apagado a través de la señal BI. → INT=1, COUNTER=X /
S1=0,S0=1,PL=1,BI=0 and INT=1, COUNTER=1 / S1=0,S0=1,PL=1,BI=0
Al finalizar la transmisión de los 8 bits, es decir cuando el contador ha finalizado el conteo, la máquina
de estados recibe la señal la señal COUNT lo que permite a la FMS transitar a un estado de reposo y
visualización. → INT=1, COUNTER=0 / S1=0,S0=1,PL=0,BI=1

• Estado Q2: En el estado de reposo y visualización los registros se mantienen estables (hold) mediante el
control de las señales S1 y S0, el contado se reinicializa a 0 mediante la señal PL y el visualizador se
enciende mediante la señal BI, permitiendo la visualización del mayor valor de temperatura. El sistema
se mantiene en este estado hasta que el usuario reinicializa el proceso. → INT=1, COUNTER=X /
S1=0,S0=0,PL=0,BI=1

• En cuanto el usuario cierre el interruptor y la señal INT pase a nivel bajo se vuelve al estado inicial y se
aborta en control en cualquier momento del proceso. → INT=0, COUNTER=X /
S1=1,S1=0,PL=0,BI=0

139
Problemas de electrónica digital

Programa VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; Inputs: COUNTER-INT
use IEEE.STD_LOGIC_ARITH.ALL; Outputs: S1-S0-PL-Bi

use IEEE.STD_LOGIC_UNSIGNED.ALL; X0
entity fsm is 1100

Port (
Rst,ck, INT, COUNT: in std_logic;
S1, S0, PL, Bi: out std_logic;
Q0 X1
0110
); X0
1100
end fsm; X0
1100 11
Q1
architecture behavioral of fsm is 0110

type nombres_estados is (Q0, Q1, Q2); Q2


signal estado: nombres_estados;
signal entrada_aux: std_logic_vector (1 downto 0); 01
X1 0001
0001

begin
entrada_aux<=COUNT&INT;
process(Rst, ck)
begin

If rising_edge(ck) then

If rst='0' then estado<=Q0; S0<='1'; S1<='1'; PL<='0'; Bi<='0';


else
case estado is
when Q0 =>
if entrada_aux="00" then estado<=Q0; S0<='1'; S1<='1'; PL<='0'; Bi<='0';
elsif entrada_aux="10" then estado<=Q0;S0<='1'; S1<='1'; PL<='0'; Bi<='0';
else estado<=Q1; S0<='1'; S1<='0'; PL<='1'; LT<='0';
end if;
when Q1 =>
if entrada_aux="11" then estado<=Q1; S0<='1'; S1<='0'; PL<='1'; Bi<='0';
elsif entrada_aux="01" then estado<=Q2; S0<='0'; S1<='0'; PL<='0'; Bi<='1';
else estado<=Q0; S0<='1'; S1<='1'; PL<='0'; Bi<='0';
end if;
when Q2 =>
if entrada_aux="11" then estado<=Q2; S0<='0'; S1<='0'; PL<='0'; Bi<='1';
elsif entrada_aux="01" then estado<=Q2; S0<='0'; S1<='0'; PL<='0'; Bi<='1';
else estado<=Q0; S0<='1'; S1<='1'; PL<='0'; Bi<='0';
end if;
when others => estado<=Q0; estado<=Q0; S0<='1'; S1<='1'; PL<='0'; Bi<='0';
end case;
end if;
end if
end process;
end behavioral;

140
Tema 10. Sistemas digitales completos

Problema 10.4
La apnea del sueño es la interrupción repetida de la respiración durante el
sueño, a veces cientos de veces durante la noche y a menudo durante un
minuto o más. Si no se trata, la apnea del sueño puede causar presión arterial
alta, enfermedades cardiovasculares, pérdida de memoria y problemas de
peso. Estudios médicos recientes indican que la apnea del sueño a largo plazo
también puede aumentar el riesgo de morir de cáncer. La consiguiente falta
de sueño reparador también puede ser responsable de la discapacidad laboral
y accidentes de vehículos de motor. Una opción de tratamiento principal es el
uso de una máquina de presión positiva de la vía aérea (PAP). El paciente lleva una máscara que utiliza
presión para enviar un flujo de aire a través de los orificios nasales evitando que se colapsen y que cese la
respiración.

El siguiente esquema muestra la estructura general del equipo. Se necesita diseñar un bloque auxiliar que
pueda generar una señal de control para el microcontrolador. Este bloque tiene como entrada dos
sensores: un sensor de flujo que controla la cantidad de aire que respira el paciente y un sensor que
controla si la mascará esta puesta o no. La salida del bloque activa una señal cuando la máscara está
colocada en el paciente y el flujo de aire es menor de 60 l/min.

Cortesía Honeywell

El sensor de flujo tiene una salida lineal (ASI) de pulsos proporcional a los litros/minuto de aire por el canal
de respiración. La relación de salida es 4 pulsos por segundo son 1 l/s. El límite mínimo establecido para
una respiración adecuada es de 60 l/min. Por otra parte, el sensor de proximidad (PS) proporciona una
señal todo/nada si la máscara está colocada o no sobre el paciente. Si el sistema detecta que la máscara
está colocada y el flujo de aire es menor de 60 l/min debe proporcionar una señal (SOM) a nivel alto,
permaneciendo a nivel bajo el resto de casos.

Este bloque auxiliar estará compuesto por una unidad de cuenta, una unidad de registro, una unidad de
comparación, un generador de señal de reloj y una máquina de estado finita (FSM).

141
Problemas de electrónica digital

El proceso debe ser el siguiente: La señal de pulsos (ASI) procedente del sensor de flujo es recibida por el
bloque contador, el cual hace la cuenta de los pulsos durante 10 segundos. Inmediatamente después de
cada 10 segundos, el bloque contador recibe una señal (CLEAR) de inicialización a cero de la cuenta
procedente de la FSM y puede empezar a contar de nuevo. Las salidas del contador (a[7..0]) están
conectadas a un registro de desplazamiento universal. El bloque registro permite guardar en su salida el
dato suministrado por el contador después de cada 10 segundos y permanecer inalterable hasta el próximo
periodo. El control del registro se realiza con la señal HR procedente de la FSM y que actúa sobre las
señales S1 y S0 del registro. Este bloque registro está conectado al reloj del sistema (3 Hz). Las señales de
salida (o[7..0]) del registro están conectadas a un bloque comparador. En este bloque una de las entradas
está fija al valor 40 y la otra entrada está conectada a las señales de salida del registro; de esta forma este
bloque está comparando continuamente los dos valores. En el caso de que la señal recibida sea menor de
40 (indicando que hay menos de 60 L/m en el circuito) la salida (CO) estará a nivel alto y si es mayor o igual
de 40 estará a nivel bajo.

Todo el sistema está contralado por la FSM. Este bloque recibe como entrada la señal (C10S) de reloj de 10
s procedente de un general de señal. Además, recibe la señal (PS) del sensor colocado en la máscara que
indica si está colocada en el paciente o no (un 1 lógico si lo está y un 0 lógico si no lo está). Otra entrada es
la señal (CO) procedente del comparador. Las dos últimas entradas son estándar y son, el reloj del sistema
(3 Hz) y la señal de reset (RESET). Salidas de la FSM son la señal (CLEAR) que inicializa el contador después
de cada segundo, la señal (HR) que permite al bloque registro guardar el dato del contador y la señal (SOM)
que está conectada al microcontrolador indicando que la máscara está colocada y el flujo de aire es menor
de 60 l/min o no se dan estas condiciones.

Los estados definidos para la FSM deben cumplir las siguientes reglas:

• Si NO se recibe la señal de C10S el sistema permanece estable: no se produce la inicialización del


contador, no se debe almacenar ningún dato en el bloque registro y la FSM no tiene en cuenta la
señal del comparador CO. En el caso de detectarse la señal de 10 segundos (C10S), pero la máscara
(PS) NO estuviese puesta en el paciente, la FSM debe permanecer en este mismo estado.

• Si se recibe la señal de 10 segundos (C10S) y la máscara (PS) esta puesta en el paciente, la FSM
debe da una señal (HR) al bloque registro para que guarde los datos del contador a su salida. Si en
este estado la máscara se retira del paciente, la FSM debe volver al estado inicial.

142
Tema 10. Sistemas digitales completos

• Inmediatamente después del proceso anterior, y si la máscara sigue puesta, la FSM debe dar la
orden con la señal (CLEAR) para inicializar el contador y debe mantener el dato en el bloque
registro. Si en este estado la máscara se retira del paciente, la FSM debe volver al estado inicial.

• A partir de este momento, la señal CO procedente del bloque comparador es leída. Si la señal (CO)
indica que la lectura del flujo de aire es menor de 60 l/min, entonces se activa la señal de salida
SOM y se deshabilita el CLEAR. Pero si la señal (CO) indica que la lectura del flujo de aire es mayor o
igual de 60 l/min se inactiva la señal de salida SOM y se deshabilita el CLEAR. En este momento el
sistema vuelve a su estado inicial independientemente del valor de las entradas.

Diseñar:

5. Una unidad de conteo mediante el C.I. 74HC193. El bloque Contador recibe los pulsos del sensor (ASI)
y los va contando hasta que es inicializado por la señal CLEAR procedente de la FSM. La inicialización
puede realizarse con el Master Reset o con utilizando el Parallel Load. Los pines que no se utilicen
deben conectarse a su adecuado nivel de tensión o al aire si es posible.

6. Una unidad de registro mediante el C.I. 74HC194. El bloque registro tiene como entradas el valor de la
cuenta (a[7..0]) y la señal HR procedente de la FSM. La señal HR debe actuar convenientemente sobre
las entradas S1 y S0 para que en un momento dado mantenga inalterable el valor de la cuenta en las
salidas del registro (o[7..0]) aunque las entradas estén cambiando a menos que la señal HR se active y
el valor de las entradas aparezca en las salidas. Es decir, se comporta como un registro paralelo-
paralelo. Los pines que no se utilicen deben conectarse a su adecuado nivel de tensión o al aire si es
posible.

7. Una unidad de comparación mediante el C.I. 74HC85. Este bloque está continuamente comparando la
señal procedente del registro (o[7..0]) con el valor predeterminado (40 en este caso). La salida que se
conectará con el FSM será la CO. El nivel de activación de esta señal es elegido por el diseñador,
siempre que diferencie los casos de que el flujo sea menor de 60 l/min o mayor/igual de este valor. Los
pines que no se utilicen deben conectarse a su adecuado nivel de tensión o al aire si es posible.

8. Un bloque generador de reloj mediante el C.I.555. Este bloque debe generar una señal (C10S) de 10
segundos de periodo y con un Ton de 1 segundo. Elegir el valor comercial estándar de los dispositivos
pasivos necesarios para configurar el C.I.555. Se puede incorporar una puerta lógica que regenere la
señal antes de conectarse a la FSM.

9. Una máquina de estados finitos (FMS) tipo Mealy mediante lenguaje VHDL y una GAL22V10. El
sistema tiene una señal de reloj y una señal de reset. La señal de reset (RESET) debe ser asíncrona y
activa a nivel bajo. La secuencia de estado de la máquina debe responder a lo explicado
anteriormente. Se puede observar en las figuras siguientes el cronograma del sistema completo, así
como de la FSM.

143
Problemas de electrónica digital

74193 (PRESETTABLE SYNCHRONOUS 4-BIT UP/DOWN COUNTERS)

7485 (4-BIT MAGNITUDE COMPARATOR)

144
Tema 10. Sistemas digitales completos

74194 (4-BIT BIDIRECTIONAL UNIVERSAL SHIFT REGISTER)

Solución

1) Bloque Contador

Al ser necesario contar como mínimo hasta 40, hacen falta dos contadores conectados en casada tal como
indica el fabricante:

Así se obtiene un contador binario de 8 bits. En este caso debe tener cuenta ascendente y permitir la
inicialización a cero de la cuenta. Esto se puede hacer utilizando el Parallel Load con las entradas de carga
a cero o el Master Reset tal como indica el fabricante:

145
Problemas de electrónica digital

En el circuito diseñado se conecta la señal ASI al pin CPU del primer contador y la salida TCU de este a la
entrada CPU del segundo contador. Se ha utilizado la entrada MR para realizar la inicialización por lo
tanto se conecta la señal CLEAR a MR, con activación a nivel alto.

2) Bloque registro.

Es un registro de 4 bits por lo que también se debe ampliar a 8-bits. La forma de trabajar del registro debe
ser en paralelo-paralelo, es decir, en la salida aparecerá la entrada cuando la señal (HR) procedente del
FSM se active. Observando la tabla de verdad del fabricante, se observa que si S1=S0=0 la salida
permanece inalterable, mientras que si S1=S0=1 se produce una carga en paralelo:

146
Tema 10. Sistemas digitales completos

Para el diseño se conecta la señal HR a S1 y S0 de los dos registros, los datos en 4-bits a cada registro, la
señal MR fija a 5 V, la señal de reloj al reloj externo y el resto se pueden dejar sin asignar.

3) Bloque Comparador.

El bloque comparador estará formado por dos comparadores de 4-bits puestos en cascada tal como indica
el fabricante:

147
Problemas de electrónica digital

Los datos A serán lo que proceden del registro y los B serán el dato 40 (00101000) que sirve de
comparación. La salida utilizada será la A<B la cual permanece a 1 si la señal de la cuenta es menor de 40
pulsos cada 10 s y a 0 si es mayor o igual.

4) Bloque generador de reloj.

Se pide el diseño de un astable con un periodo de 10 s y un


semiperiodo a nivel alto de 1 s. El fabricante indica la
conexión en modo astable y las ecuaciones a utilizar. Se ha
conectado un C.I. 74HC14 para regenerar la señal a la
salida del CI555. Teniendo en cuenta que la señal de salida
estará invertida, los resultados son, fijando un condensador
de 47µF, una Ra de 245 KΩ y una Rb de 30 KΩ;
estandarizando se han elegido de Ra=270 KΩ y de Rb=27
KΩ con un periodo de 10.57 s y un semiperiodo de 0.87 s.

148
Tema 10. Sistemas digitales completos

5) Máquina de estados tipo Mealy.

De la descripción del funcionamiento de la FSM se deduce que su diagrama de estados es:

149
Problemas de electrónica digital

library ieee;
use ieee.std_logic_1164.all;

ENTITY fsm IS
PORT (reset: in std_logic;
clock: in std_logic;
C1S: in std_logic;
PS: in std_logic;
CO: in std_logic;
qi : out std_logic_vector(2 downto 0));
END fsm;

ARCHITECTURE fsm_a OF fsm IS


type state_type is (Q0, Q1, Q2, Q3);
signal state : state_type;
BEGIN
PROCESS(reset, clock)
BEGIN
if reset='0' then state <=Q0;
elsif rising_edge(clock) then
CASE state IS
WHEN Q0 =>
if (C1S='1' AND PS='1') then state<=Q1; qi <="001";
else state<=Q0; qi <="000";
end if;
WHEN Q1 =>
if PS='1' then state<=Q2; qi <="011";
else state<=Q0; qi <="000";
end if;
WHEN Q2 =>
if (PS='1' AND CO='1') then state<=Q3; qi <="101";
elsif (PS='1' AND CO='0') then state<=Q3; qi
<="001";
else state<=Q0; qi <="000";
end if;
WHEN Q3 =>
state<=Q0; qi <="000";
END CASE;
END IF;
END PROCESS;
END fsm_a;

150
Tema 10. Sistemas digitales completos

Se puede realizar un diseño más simple sin Q3:

library ieee;
use ieee.std_logic_1164.all;

ENTITY fsm IS
PORT (reset: in std_logic;
clock: in std_logic;
C1S: in std_logic;
PS: in std_logic;
CO: in std_logic;
qi : out std_logic_vector(2 downto 0));
END fsm;

ARCHITECTURE fsm_a OF fsm IS


type state_type is (Q0, Q1, Q2, Q3);
signal state : state_type;
BEGIN
PROCESS(reset, clock)
BEGIN
if reset='0' then state <=Q0;
elsif rising_edge(clock) then
CASE state IS
WHEN Q0 =>
if (C1S='1' AND PS='1') then state<=Q1; qi <="001";
else state<=Q0; qi <="000";
end if;
WHEN Q1 =>
if PS='1' then state<=Q2; qi <="011";
else state<=Q0; qi <="000";
end if;
WHEN Q2 =>
if (PS='1' AND CO='1') then state<=Q0; qi <="101"; --as well 100
elsif (PS='1' AND CO='0') then state<=Q0; qi <="001"; --
as well 000
else state<=Q0; qi <="000";
end if;
END CASE;
END IF;
END PROCESS;
END fsm_a;

151
TEMA 11
MICROCONTROLADORES

Tema descriptivo sobre estructura y programación de los microcontroladores en general y de la


arquitectura y funcionamiento del PIC16F88 en particular.
Para la arquitectura general de los mircrocontroladores existen números libro, ejemplos:
• Floyd, Thomas L. (2016). Fundamentos de Sistemas Digitales. 11º ed. Pearson Educación. Tema: 12.
• Tocci, Ronald J. y otros. (2016). Sistemas Digitales: Principios y Aplicaciones. 10ª ed. Pearson. Tema
13.
• Mandado, Enrique; Martín, José Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo. Tema: 8.

Para los microcontroladores PIC:


• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo. Temas:
9 y 10 y 11.

Para el PIC16F88 se toma como referencia las especificaciones ofrecidas por el fabricante del dispositivo
(Microchip Thecnology Inc). Datasheet: http://www.microchip.com/wwwproducts/en/PIC16F88

PREGUNTAS DE TIPO TEST

1. ¿Por qué se dice que un microcontrolador es un dispositivo programable?

a) Porque ejecuta un programa escrito en lenguaje máquina almacenado en una memoria flash
(memoria de programa).
b) Porque necesita un programa para determinar cuáles son las conexiones (fusibles) que se van a
activar para así lograr las funciones lógicas a implementar.
c) Porque su funcionamiento viene determinado por las entradas de control de un multiplexor
externo.
d) Porque, para que funcione, necesita estar conectada a un ordenador con programas informáticos
específicos para el tipo de microcontrolador.

2. ¿En qué tipo de lenguaje está escrito el programa que se almacena en la memoria de un
microprocesador?

a) Ensamblador
b) Lenguaje máquina
c) Programa Fuente
d) Lenguaje de alto nivel

153
Problemas de electrónica digital

3. Los microprocesadores y microcontroladores constan de una unidad central de proceso y de


determinados registros. Entonces, ¿qué diferencias existen entre ellos?

a) El microcontrolador además incluye periféricos integrados como temporizadores, contadores,


puertos de comunicaciones, convertidores A/D, etc.
b) El microcontrolador además incluye la unidad de control encargada de buscar la instrucción e
interpretarla.
c) El microprocesador además incluye una unidad lógico aritmética.
d) Ninguna de las anteriores.

4. ¿Cuál es la secuencia correcta de las etapas de ejecución de una instrucción de un programa en un


procesador?

1). Decodificación 2) Búsqueda de instrucción, 3) Ejecución, 4) Escritura de Resultado, 5) Lectura de


operandos

a) 1,2,3,4,5
b) 2,1,5,3,4
c) 2,4,1,5,3
d) 4,3,5,1,2

5. ¿Qué característica debe tener un microprocesador para que pueda realizar la segmentación de un
programa? (buscar la instrucción siguiente mientras se ejecuta una instrucción).

a) Arquitectura Harvard (separación de memoria de programa y datos).


b) Periféricos internos específicos.
c) Memoria EEPROM.
d) Bus de direcciones de 16 bits (ocho para la instrucción de ejecución y 8 para la instrucción de
búsqueda).

6. Las instrucciones que contienen la dirección de memoria donde se encuentra el dato a operar se
denominan de direccionamiento…

a) Inmediato.
b) Directo.
c) Indirecto.
d) Indexado.

7. Cuando un microcontrolador utiliza un juego de instrucciones RISC, significa:

a) Que el conjunto de instrucciones no es estable y hay riesgo de pérdida de información.


b) Que utiliza un conjunto pequeño de instrucciones.
c) Que el juego de instrucciones es específico para ese microcontrolador.
d) Que el conjunto de instrucciones que se pueden utilizar es complejo y complicado.

154
Tema 11. Microcontroladores

MICROPROCESADOR PIC16F88

8. Como microcontrolador, hemos utilizado el PIC16F88. ¿Sabrías decir que empresa lo fabrica?

a) Altera.
b) Microchip.
c) ARDUINO.
d) Motorola.

9. ¿Cómo son los puertos del PIC16F88?

a) PORTA de entrada y PORTB de salida.


b) PORTA de salida y PORTB de entrada.
c) Cada puerto puede ser de entrada o salida, pero siempre en todo el puerto en bloque.
d) Cada puerto puede ser de entrada o salida cada pin de forma independiente.

10. ¿Cuál es la relación entre el ciclo máquina y el ciclo de reloj del PIC16F88?

a) Son coincidentes.
b) Son coincidentes, salvo en las instrucciones de saltos que son dos.
c) El ciclo máquina equivale a dos ciclos de reloj.
d) El ciclo máquina equivale a cuatro ciclos de reloj.

11. ¿Qué tipo de instrucciones del PIC16F88 necesitan dos ciclos de máquina para su ejecución?

a) Todas las que manejan registros bit a bit.


b) Todas las que manejan valores inmediatos o literales.
c) Las que realizan operaciones lógico-aritmética.
d) Las de salto de programa.

12. En caso de producirse una interrupción en el PIC16F88 ¿qué tarea realiza el dispositivo?

a) Un reset del sistema y el contador de programa va a la dirección 0 de la memoria de programa.


b) El contador de programa va a la dirección 4 de la memoria de programa.
c) El programa queda paralizado hasta que desaparece la señal de interrupción.
d) Finaliza el programa.

13. En el dispositivo real ¿Cómo se indica la frecuencia del oscilador interno del PIC16F88?

a) Mediante bucles de retardo anidados.


b) Mediante la palabra de configuración (CONFIG1).
c) Mediante tres bits del registro OSCCON.
d) Ese PIC tiene frecuencia fija de 1MHz.

155
Problemas de electrónica digital

14. El registro TRISB del PIC16F88 sirve para

a) Leer el puerto B.
b) Escribir en el puerto B.
c) Configurar todo el puerto B o como entrada o como salida.
d) Configurar cada pin del puerto B como entrada o como salida.

15. Si el convertidor A/D del PIC16F88 posee 10 bits y los registros de memoria poseen 8 bits ¿Cómo puede
almacenar el resultado de la conversión?

a) Eliminando los dos bits de menor peso.


b) Mediante dos registros ADRESH y ADRESL, donde se almacena 5 bits de la conversión en la parte
baja de cada registro.
c) Mediante dos registros ADRESH y ADRESL, donde siempre se almacena los 8 bits de mayor peso en
ADRESL y los dos bits de menor peso en ADRESH.
d) Mediante dos registros ADRESH y ADRESL, donde se almacena 8 bits en un registro y 2 en el otro
registro, según el estado de un bit de otro registro (ADCON1).

16. ¿Qué propiedades del PIC16F88 se especifican mediante los registros de configuración CONFIG1 o
CONFIG2?

a) Si se va a utilizar reloj interno o externo.


b) Canal de entrada del convertidor A/D.
c) Si las entradas van a ser Digitales o Analógicas.
d) La frecuencia de reloj del oscilador.

17. ¿Para qué se utilizan las resistencias de pull-up en las entradas del PORTB del PIC16F88?

a) Configurar el PORTB como entrada.


b) Configurar el PORTB como salida.
c) Que las entradas al aire actúen como 0 lógico.
d) Que las entradas al aire actúen como 1 lógico.

18. El temporizador Timer1 (TMR1) se diferencia del Timer0 (TMR0) fundamentalmente porque:
a) Es de 16 bits.
b) Posee mayor velocidad.
c) Con el Timer1 permite realizar interrupciones.
d) No hay ninguna diferencia, son exactamente iguales.

19. El módulo CCP del PIC16F88 permite obtener una señal PWM en los terminales:

a) Por cualquier pin de PORTA según el valor de TRISA.


b) Por cualquier pin de PORTB según el valor de TRISB.
c) Solo por RB0 o RB3.
d) Solo por RB0.

156
Tema 11. Microcontroladores

Soluciones a las Preguntas de Test del Tema 11 (Microcontroladores – PIC16F88)

1. a) La opción b) corresponde a las PLD.


2. b) El lenguaje de más bajo nivel.
3. a) La finalidad del microcontrolador es el control industrial.
4. b) Las dos primeras tareas son la búsqueda de instrucción y su decodificación.
5. a) Necesita memoria de programa y memoria de datos separados.
6. b) En el direccionamiento directo se incluye la posición de memoria donde está el dato.
7. b) RISC: Reduced Instruction Set Computing.
8. b) Microchip.
9. d) Así logra mayor versatilidad.
10. d) El dispositivo divide de forma automática por cuatro la frecuencia de reloj.
11. d) Necesitan encontrar el destino y luego realizar el salto.
12. b) Es una característica de este dispositivo.
13. c) Es una finalidad de dicho registro.
14. d) 0 cuando es salida y 1 cuando es entrada.
15. d) Solo tiene esas dos opciones.
16. a) Es una de las finalidades de los registros de configuración.
17. d) Solo el puerto B (no PORTA).
18. a) Se puede conseguir mayor tiempo o precisión.
19. c) Es una de las características de este registro del PIC16F88.

157
TEMA 12
LENGUAJE C PARA
COMPILADOR XC8

En este tema se desarrollan prácticas de programación del microcontrolador PIC16F88 utilizando el


entorno informático MPLAB-X IDE. Los programas fuentes se escriben en lenguaje C para el compilador
XC8. Se presentan múltiples programas en donde a partir de unas especificaciones se desarrolla el
programa fuente y la simulación del fichero de código máquina mediante el programa ISIS-Proteus. Este
tema se ha dividido en diversos subapartados:
a) Control de los puertos con entradas y salidas digitales.
b) Temporizaciones
c) Mostrar resultados mediante un panel LCD (16x8).
d) Entradas analógicas a través del convertidor analógico-digital del propio dispositivo.
e) Temporizadores TMR0 y TMR1.

Los recursos informáticos los suministra la empresa fabricante Microchip Technology Inc a través de sus
sitios web.
El entorno de programación MPLAB-X IDE: http://www.microchip.com/mplab/mplab-x-ide.
El compilador XC8: http://www.microchip.com/mplab/compilers

La bibliografía sobre el tema es limitada y no se concreta siempre al dispositivo utilizado:

• Corres, Jesús Mª; Ruiz, Carlos; Bariáin, Cándido (2015). Ejercicios de Programación con
Microcontroladores PIC. Ed. Marcombo.
• Barriáin, Cándido; Corres, Jesús Mª; Ruiz, Carlos. (2017). Programación de microcontroladores PIC en
lenguaje C. Ed. Marcombo
• Etxebarria Isuskiza, Mikel (2011). Microcontroladores PIC: teoría y práctica: el PIC16F88X y el
laboratorio USB-PIC'School. Ed. Creaciones Copyright, D.L.

Al ser un tema eminentemente práctico no suele haber preguntas de tipo test. En cambio, los ejercicios son
numerosos.

159
Problemas de electrónica digital

PROBLEMAS DE LENGUAJE C PARA XC8

A - CONTROL DE PUERTOS

Problema 12.1
Por el puerto B se conectan 8 diodos LED a cada uno de sus pines. Realizar un programa para que mantenga
encendidos los LED de encendidos y apagados de forma alternativa, es decir 01010101.

Solución
Diagrama de flujo Listado del programa

Nota: Falta especificar los registros de configuración (CONFIG1 y CONFIG2) del PIC18F88

160
Tema 12. Lenguaje C para compilador XC8

Problema 12.2
Al puerto B (PORTB) del PIC16F88 se conectan 8 diodos LED (uno a cada pin del puerto). Se desea activar el
encendido y apagado de dichos LEDs según el estado de la entrada RA4 de forma que si RA4=0 la salida de
los LEDs será 0101010 y si RA4=1 la salida de los LEDs será 10101010

Solución

Diagrama de flujos Listado del programa. La bifurcación se resuelve con una


estructura if del lenguaje C

Nota: Falta especificar los registros de configuración (CONFIG1 y CONFIG2) del PIC18F88

161
Problemas de electrónica digital

Problema 12.3
Al puerto B (PORTB) del PIC16F88 se conectan 8 diodos LED (uno a cada pin del puerto). Se desea activar el
encendido y apagado de dichos LEDs según el estado dos entradas RA1 y RA0, siguiendo la siguiente tabla.

Obtener:
a) Diagrama de flujo del programa.
b) Programa en lenguaje C (XC8)

Solución
a) Diagrama de flujos. Se realiza la lectura de una entrada (RA0) y luego la siguiente (RA1). En función del
resultado se saca por PORTA la combinación establecida

162
Tema 12. Lenguaje C para compilador XC8

b) Las bifurcaciones se realizan con sentencias de tipo if anilladas

Nota: Falta especificar los registros de configuración (CONFIG1 y CONFIG2) del PIC18F88

Problema 12.4

Se desea obtener un comparador digital de dos números (A y B) de 4 bits cada uno mediante tres salidas
(A>B, A=B y A<B). Los dos números entran por PORTA, el número B en la parte alta del puerto y el número
A en la parte baja (ver figura). Para las salidas se utilizará tres pines del PORTB.

Determinar:
a. Diagrama de flujos del programa.
b. Listado del programa en lenguaje C

163
Problemas de electrónica digital

Solución
Los números A y B se almacenan respectivamente en las variables DATOA y DATOB. Se utilizan máscaras para
seleccionar los bits de interés (parte alta y parte baja). Posteriormente se realiza la comparación de ambas
variables
a) Diagrama de Flujos

b) Listado del programa. En este ejemplo ya se ha incluido la configuración de los registros CONFIG1 y
CONFIG2 donde, entre otras cosas, se indica que RA5 actúa como entrada de dato (MCLR=OFF) ya
que por defecto es la entrada de reset (MCLR) del dispositivo. A partir de ahora se pondrá siempre en
los programas

164
Tema 12. Lenguaje C para compilador XC8

Problema 12.5
Obtener un programa en lenguaje C (XC8) de un circuito que realiza la lectura de 8 entradas por PORTB, y
en función de sus valores activan TRES salidas de PORTA (RA2, RA1 y RA0) según el contenido de la
siguiente tabla. La salida se muestra en el programa ISIS-Proteus en un visualizador de 7 segmentos con
entrada BCD (no real).

Solución Problema 12.5


Utilizando la sentencia switch – case de lenguaje C se realiza una selección con múltiples opciones.

165
Problemas de electrónica digital

B - TEMPORIZACIONES
Problema 12.6
Circuito que active unas luces intermitentes formadas por 8 LEDs conectados al puerto B de duración de 1
seg el encendido y 1 seg el apagado (frecuencia 0,5Hz).

Obtener:
a) Diagrama de flujos
b) Listado en lenguaje C (XC8)

Solución

a) Diagrama de Flujos

b) Listado programa en lenguaje C. Utilizando la función _delay() donde se indica el número de ciclos
máquina de retardo.

La frecuencia de oscilación es de 4MHz (configurada mediante registro OSCCON), como el dispositivo divide la
frecuencia de reloj por 4, la frecuencia del ciclo máquina es de 1MHz, luego cada unidad de la función _delay()
equivale a 1µs

166
Tema 12. Lenguaje C para compilador XC8

Problema 12.7

Circuito para intermitente de luces dobles (L1 y L0) con periodo de


encendido y apagado iguales (0,5 seg) y una entrada de control (C) que
determina la forma de funcionamiento de la siguiente forma:

• Si C=0 -> L1 y L0 parpadean de forma simultánea


• Si C=1 -> L1 y L0 parpadean de forma alternativa

Hasta que no termina un ciclo no comprueba la entrada.


Utilizar L0 en RB0, L1 en RB1 y C (entrada) en RB2

167
Problemas de electrónica digital

Solución
Diagrama de Flujos Listado Programa

C - SALIDAS EN DISPLAY DE 7 SEGMENTOS


Problema 12.8
Circuito que realiza la suma de dos números (A y B) de 4 bits cada uno. La entrada de datos se realiza por
medio de PORTA, un número en la parte alta del puerto y el otro en la parte baja (ver figura). El resultado
de la suma se muestra en dos visualizador de 7 segmentos con entrada en BCD, uno para las decenas y otro
para las unidades, ambos conectados al puerto B

168
Tema 12. Lenguaje C para compilador XC8

Solución Problema 12.8


Los números A y B se almacenan respectivamente en las variables DATOA y DATOB. Se utilizan máscaras para
seleccionar los bits de interés (parte alta y parte baja). El resultado de la suma se divide por 10 para tomar el
cociente (parte entera) para las decenas y el resto para las unidades. En lenguaje C se puede utilizar las
operaciones / (división) y % (resto)

Problema 12.9
Circuito que realiza la suma de dos números (A y B) de 4 bits cada uno utilizando PORTA, pero a diferencia
del ejercicio anterior, donde cada sumando entra por pines diferentes, ahora los dos sumandos entran por
los mismos pines (así deja más pines libres). Para ello se incorpora una nueva entrada ENTER (RA4) que
permite la entrada de cada sumando, para ello hay que pulsar y soltar la entrada.

169
Problemas de electrónica digital

Solución
Diagrama de flujos Listado Programa

D - SALIDAS EN PANEL LCD (16x2)


Problema 12.10
Escribir en un panel LCD de 16x2 (modelo HD44780U) un supuesto resultado de la medida de una
resistencia En la primera fila se escribe la expresión: “Valor Resisten.” y en la segunda fila “100 KΩ”. Utilizar
la librería upvLCDlib.c para el control del panel LCD (ver anexo de esta publicación).

170
Tema 12. Lenguaje C para compilador XC8

Solución

Problema 12.11
Realizar programa en lenguaje c que realice la suma de dos números y muestre el resultado en un panel
LCD de 16x2 (modelo HD44780U). Los dos números son de 4 bits y entran los dos por los mismos pines
RA[6..3] en dos turnos. La orden de entrada de los sumandos se realiza por señal en RA2=1 (ver figura).
En la primera fila del panel se escribirá la expresión “Suma de: “ y el valor de los sumandos separados por el
signo +. En la segunda fila se escribirá el valor de la suma. Utilizar la librería de control del panel upvLCDlib.c
(ver anexo de esta publicación)

171
Problemas de electrónica digital

Solución

172
Tema 12. Lenguaje C para compilador XC8

Problema 12.12
Programa en lenguaje C que automáticamente va escribiendo en el panel LCD de 16x2 el símbolo de un
recuadro oscuro, rellenando el panel de izquierda a derecha. Una vez llegado al final del panel vuelve a
empezar. Utilizar la librería de control del panel upvLCDlib.c (ver anexo de esta publicación)

Solución

173
Problemas de electrónica digital

Problema 12.13

El circuito de la figura se va a utilizar para crear un juego simple de dados.

Al iniciarse la simulación, la pantalla LCD (16x2) mostrará el mensaje:


1ª línea: Mi Tirada: “nº aleatorio entre 1 y 6”
2ªlínea: Pulsa el botón!

Al pulsar el botón se generará otro número aleatorio que se mostrará en el display de 7 segmentos. Así
mismo el LCD se actualizará:
1ª línea: Mi Tirada: “nº aleatorio entre 1 y 6”
2ªlínea: Tu Tirada: “valor aleatorio al pulsar el botón”

2 segundos de tiempo y después:


1ª línea: “Ganas tu!”, “Empatados” o “Gano yo” en función de las puntuaciones obtenidas
2ªlínea: Pulsa el botón!

Al pulsar el botón se inicia de nuevo el juego.

Realizar el código de programación necesario para el funcionamiento descrito en XC8 y simularlo con ISIS.
Utilizar la librería de control del panel upvLCDlib.c (ver anexo de esta publicación)

174
Tema 12. Lenguaje C para compilador XC8

Solución

Listado programa

175
Problemas de electrónica digital

Listado programa (continuación)

176
Tema 12. Lenguaje C para compilador XC8

E - CONVERSIÓN ANALÓGICA – DIGITAL

Problema 12.14
Programa que lee una entrada analógica (RA2) y sacar el resultado en binario (10 bits) por RA0, RA1 (bits de
mayor peso) y el resto de bits por el PORTB.

Solución

177
Problemas de electrónica digital

Listado del programa:

178
Tema 12. Lenguaje C para compilador XC8

Problema 12.15

Programa que lee una entrada analógica (RA2) y sacar resultado (10 BITS) por RA0, RA1 y PORTB (igual que
problema anterior). Ahora utilizando la librería para utilizar el convertidor analógico digital upvADlib.c (ver
anexo al final de esta publicación).

Solución

179
Problemas de electrónica digital

Problema 12.16

Medida de una señal analógica con el convertidor A/D del PIC16F88 y representación del resultado (10 bits)
mediante un número decimal en BCD con display de 3 ½ Dígitos: Millar, Centenas, Decenas y Unidades.
Utilizar la librería upvADlib.c (ver anexo al final de esta publicación).

Solución
Se utiliza PORTA para Decenas RA[7..4] y para Unidades RA[3..0. PORTB para Centenas RB[3..0] y Millar RB4

180
Tema 12. Lenguaje C para compilador XC8

Problema 12.17
Medida de una tensión analógica con el convertidor A/D del PIC16F88 y representación del resultado (en
mili Voltios) mediante un número decimal en BCD con display de 3 ½ Dígitos: Millar, Centenas, Decenas y
Unidades. Utilizar la librería upvADlib.c (ver anexo al final de esta publicación).

Solución

181
Problemas de electrónica digital

Problema 12.18
Medida tensión con el convertidor A/D del PIC16F88 y mostrar el resultado en un panel de LCD (16x8).
Utilizar la librería upvADlib.c (ver anexo al final de esta publicación).

Solución
Valor máximo digital (0b1111111111=1023) -> 5 Volt; Num_Dig -> X Volt
X=Num_Dig ⋅ 5/1023 = Num_Dig ⋅ 0,004887 Volt

182
Tema 12. Lenguaje C para compilador XC8

Problema 12.19
El circuito de la figura se utiliza para controlar la dirección de un vehículo accionando los motores de las
ruedas de forma independiente.
La entrada es de tipo analógico, de forma que según el pulsador que esté activado, el valor analógico
obtenido en RA0 cambiará. (Simular solo la red de resistencias para ver los valores de tensión de la entrada
RA0 correspondientes a cada interruptor).
Según el pulsador seleccionado, los motores girarán hacia adelante o hacia atrás, a la derecha (motor
derecho parado) o a la izquierda (motor izquierdo parado). El interruptor central detendrá los dos motores.

Se pide:

Realizar el programa en XC8. Utilizar la librería upvADlib.c (ver anexo al final de esta publicación).

183
Problemas de electrónica digital

Solución

184
Tema 12. Lenguaje C para compilador XC8

Problema 12.20
El esquema del circuito de la figura debe mantener constante la temperatura en el interior de un pequeño
recinto.
Para ello utiliza un ventilador (VEN) y un calefactor (CAL). El sensor LM35 nos permite medir el valor de la
temperatura en el interior del recinto.
El valor de temperatura que se desea alcanzar, se establece con el potenciómetro REF, de forma que al
mínimo establezca una referencia de 20 ⁰C y al máximo de 50.

Realizar el programa en lenguaje C de control tal que cumpla las siguientes condiciones:

Caso 1: ǀREF-TEMǀ ≤ 2 (valor absoluto) → VEN=CAL=0


Caso 2: (REF-TEM) > 2 → VEN=0, CAL =1
Caso 3: (TEM-REF) > 2 → VEN=1, CAL = 0

Utilizar la librería upvADlib.c (ver anexo al final de esta publicación).

185
Problemas de electrónica digital

Solución
Listado del Programa

186
Tema 12. Lenguaje C para compilador XC8

F .- TEMPORIZADORES TMR0 y TMR1

Problema 12.21
Utilizando el temporizador del registro TMR0 del PIC16F88 generar una señal cuadrada de f=500Hz.

Solución
Como la frecuencia generador f=500Hz → T=2µs. si la señal es cuadrada: tH= tL=1µs

= ∙4∙ ∙ (256 − )→ = 256 −


∙ ∙

Tomando una frecuencia de reloj de 4MHz → Tclk = 0,250µs


1
= 256 − 0,25μ∙4∙4=256-250=6

Listado del Programa:

187
Problemas de electrónica digital

Problema 12.22
Programa para que el PIC6F88 combine dos tareas: un oscilador de frecuencia XX en el pin RA0 y por otro
lado el control de PORTB mediante RA1 de manera que si RA1=0 → PORTB=0b01010101 y si RA1=1 →
PORTB=0b10101010.

Solución
Una de las características de los Timer es que mientras realiza la temporización el PIC puede realizar otras
tareas (con la subrutina _delay() no es posible).

Listado Programa:

188
Tema 12. Lenguaje C para compilador XC8

Problema 12.23
Programa para utilizar el registro TMR0 como contador de pulsos externos que entran por el pin RA4. Sacar
el valor binario de la cuenta por PORTB.

Solución
Solo se puede utilizar la entrada RA4. A cada pulso aumenta el valor TMR0.

Listado del Programa:

189
Problemas de electrónica digital

Problema 12.24
Control del ángulo de un servomotor mediante 4 entradas (16 combinaciones) utilizando el registro TMR0.
Según la combinación de entradas le corresponde un ángulo entre 0 º y 180º variando de forma lineal.

Solución

190
Tema 12. Lenguaje C para compilador XC8

PROBLEMA SOBRE PIC16F88

Problema 12.25
Programa de lenguaje C para XC8 que permite realizar la suma de dos números de 4 bits entrando en dos
turnos por los mismos pines. Responder a las preguntas abajo indicadas.

a) Escribir la instrucción en lenguaje C de cada línea marcada por los números:


(1), (2),
(3), (4)
(5) (6)

191
Problemas de electrónica digital

b) ¿Para qué se pone las instrucciones: while (RA4==1) {} y while (RA4==0) {} ?

c) Dibujar esquema de conexiones entre PIC16F88, las entradas y los display de 7 segmentos (con
entrada BCD) indicando cual corresponde a decenas y a unidades.

d) ¿Qué modificaciones realizarías al programa para obtener el resultado de la suma en binario?

Solución

a)

(1), ANSEL=0; (2), TRISA=0xFF;


(3), TRISB=0; (4) DATOB=PORTA&(0b00001111);
(5) DECENAS=RESUL/10; (6) PORTB=16*DECENAS+UNIDADES;

b) Para que la entrada de cada sumando sea de la forma “pulsar y soltar” una tecla, utilizando la
entrada RA4

d) PORTB=RESULT

192
Tema 12. Lenguaje C para compilador XC8

Problema 12.26
El circuito de la figura se desea utilizar para realizar una alarma de sobre-temperatura configurable.
Mediante el potenciómetro se establece el valor máximo de temperatura, de forma que con el
potenciómetro a cero, la referencia se establece a 25ºC y con el potenciómetro al máximo, se establece a
40ºC. Mientras la temperatura está por debajo del valor prefijado, permanece encendido el LED verde,
pero cuando se alcanza la referencia o se supera, se enciende el LED rojo y se apaga el verde.

El programa principal, se muestra a continuación:


void main(void) {
unsigned int referencia, temperatura;
float _ref, _temp;
TRISA=0b00010010;
TRISB=0b00000000;
ANSEL=0b00010010;
OSCCON = 0b01101100; //Oscilador a 4MHz
PORTB=0;

while(1)
{
referencia = convertAD(4);
temperatura = convertAD(1);
_ref = (0.014663*reference)+25;
_temp = 0.48876*temperatura;
if (_temp>=_ref) PORTB=0b00000010;
else PORTB=0b00000100;
__delay_ms(500);
}
return;
}

Se pide:
1. Rellenar los cuadros marcados en rojo del programa principal.
2. Para una temperatura medida con el LM35 de 27ºC, determinar el valor de la variable “temperature”.
(LM35 proporciona 10mV/ºC, y las referencias del convertidor AD están a +5V y a 0V).
3. Estado de los LED’s cuando la temperatura sea 30ºC y el potenciómetro esté al 40% de su valor.

193
Problemas de electrónica digital

Solución

a) TRISA=0b00010010; TRISB=0b00000000; ANSEL=0b00010010;

b) A 27ºC el sensor proporciona 270mV.


Como el convertidor AD es de 10 bits, generará 1023 posibles salidas con referencia 5000mV, por
tanto:
temperatura=(270*1023)/5000 = 55

c) A 30ºC: temperatura=(300*1023)/5000 = 61
Cuando el potenciómetro esté al 40%: 40*5000mV/100=2000mV
referencia= 2000*1023/5000=409.
Aplicando las fórmulas del código: _ref=30.98 _temp=29.81
Como _temp<_ref, se encenderá el LED verde y estará apagado el LED rojo.

Problema 12.27
El siguiente fragmento de programa corresponde a la función principal para el control de un servomotor
con ángulo de giro de 0º a 180º utilizando el temporizador Timer0 (TMR0). Se pregunta:

a) ¿Cuánto es el tiempo del ciclo máquina del PIC?


b) ¿Cuánto tiempo tarda en cambiar una cuenta del Timer0 a nivel bajo?
c) ¿Cuánto tiempo estará la señal en nivel bajo (nº redondos)?
d) ¿Cuánto tiempo tarda en cambiar una cuenta del Timer0 a nivel alto?
e) ¿Cuánto tiempo estará la señal en nivel alto?
f) El servo tiene un comportamiento lineal y para ángulo de 0º el ton=2,25ms y para 180º el ton=0,75ms.
Determinar los Números Digitales con que hay que cargar el TMR0 para lograr dichos tiempos.
g) Para el mismo comportamiento ¿Cuál será el ángulo en que posicionará el servo?

194
Tema 12. Lenguaje C para compilador XC8

Solución

a) tCM = 4·tCLK= 4·1/4MHz=1μs


b) 128µs
c) (256-99)x128μ=20ms
d) 16µs
e) (256-138)x16= 1,88ms
f) 0º -> (256-NUM1)x16 µs = 2,25ms NUM1=256-2,25ms/16µs =115
180º -> (256-NUM2)x16 µs = 0,75ms NUM2=256-0,75ms/16µs = 209
g) 138=(209-115)*α/180+115 -> α=(138-115)*180/(209-115)= 44,04º

Problema 12.28
Diseñar un sistema basado en microcontrolador que regule los niveles
de glucosa en el cuerpo de un enfermo de diabetes mediante la
medida continua de los niveles de glucosa y dispense las dosis de
insulina necesaria según las medidas realizadas.

• El sensor químico de glucosa genera una señal digital de 4 bits.


• La bomba de insulina es controlada por una señal PWM.
• El sistema dispone de un LCD para visualizar la glucosa en sangre.
• El dato de glucosa es recibido por el puerto del microcontrolador
PIC16F88 en formato de 4 bits, siendo el valor 0000 para 50 mg/dl
y el valor 1111 para 200 mg/dl.
• Los niveles de glucosa se visualizan continuamente en el LCD.
• Cuando el nivel de glucosa esté por debajo de 100 mg/dl la bomba de insulina debe empezar a
funcionar mediante una señal PWM.
• Esta señal debe ser proporcional a los niveles de glucosa en el rango entre 50 y 100 mg/dl, de tal forma
que el ciclo de trabajo sea del 100% para 50 mg/dl o menor y del 0% para 100 mg/dl o mayor.

Usar la frecuencia del PWM a 1 KHz con una frecuencia del reloj de microcontrolador 4MHz

Determinar:
a) Relación entre entrada de glucosa y concentración de insulina a inyectar
b) Relación que entre el nivel de glucosa y el ciclo de trabajo (Duty Cycle)
c) Diagrama de flujo del programa
d) Esquema del circuito electrónico.
e) Listado del programa en lenguaje C (XC8)

Solución
a) Relación entre los datos de entrada y el nivel de glucosas:

Si para el dato 0000 (0) corresponde 50 mg/dl y para el dato 1111 (15) corresponde 200 mg/dl.

195
Problemas de electrónica digital

(200 − 50) ∙
= + 50 = 10 ∙ + 50
15

Se pueden utilizar dos variables de tipo SHORT INTEGER para definir las variables DATA INPUT y GLUCOSA
LEVEL.

b) La relación que hay entre el nivel de glucosa y el Duty Cycle


Si Glucosa >100 ,g/dl → Duty = 0%
Si no → Si Glucosa = 100 mg/dl → Duty =0% (0) (A)
Si Glucosa = 50 mg/dl → Duty =100% (255) (B)

Ecuación de recta que pasa por dos puntos A y B: = → =

Duty=510-5,1·GL

196
Tema 12. Lenguaje C para compilador XC8

c) El flujograma del programa puede ser el siguiente:

d) Esquema del circuito electrónico

Al utilizar la libraría upvLCDlib.c los pines RB4 a RB7 se reservan la transmisión de datos del
microcontrolador al panel LCD y los pines RA0 y RA1 para control del panel (RS y E).
La salida RB3 se utiliza para el control del motor por medio de PWM.
Las entradas RA2 a RA5 para la entrada del número correspondiente a la concentración de glucosa.

197
Problemas de electrónica digital

e) Listado del Programa en XC8.


Para obtener la señal modulada en ancho de pulso (PWM) se utiliza el módulo especifico del PIC16F88
denominado Capture/Compare/PWM (CCP) de 16 bits con funciones basadas en manejo de
temporizador. Este módulo posee diversas formas de trabaja: captura, comparación. En nuestro caso se
trabaja en modo PWM. Para ello se utiliza la librería upvPWMlib.c (ver anexo al final de esta
publicación).

198
Tema 12. Lenguaje C para compilador XC8

Problema 12.29
Un tensiometro es un dispositivo que se utiliza para medir la
presión arterial. La presión arterial se registra típicamente
mediante dos números: la presión sistólica, el número superior y
que mide la presión en las arterias cuando el corazón late (cuando
el músculo cardíaco se contrae); y la presión diastólica, el número
inferior y que mide la presión en las arterias entre los latidos del
corazón. La presión arterial generalmente se mide en milímetros de
mercurio (mm Hg). Desde la década de 1990 se ha desarrollado una
nueva familia de técnicas basadas en el llamado principio de
velocidad de onda de pulso (Pulse Wave Velocity, PWV). Estas
técnicas se basan en el hecho de que la velocidad a la que un pulso de presión arterial viaja a lo largo del
árbol arterial depende, entre otras variables, de la presión arterial subyacente. La principal ventaja de estas
técnicas es que es posible medir los valores de PWV de un sujeto de forma continua (beat by beat), sin
supervisión médica, y sin necesidad de inflar los brazos braquial.

Entre varias de estas técnicas hay una técnica PWV que determina la presión arterial media (Mean Arterial
Blood Pressure - MAP) mediante la relación entre la presión de pulso sistólica (Systolic Pulse Pressure - SP) y
la presión de pulso diastólica (Diastolic Pulse Pressure - DP), tal como muestra la siguiente figura1:

La relación que existe entre el valor MAP y el SP y el DP es el mostrado por la ecuación:

1 2
MAP (mmHg) = (SP) + (DP)
3 3

Diseñar un sistema basado en el PIC16F88 que realice la medida de la MAP en función de SP y DP.

La señal de entrada al convertidor analógico-digital (DAC) del microcontrolador será muestreada con una
frecuencia de 8 Hz (es decir cada 125ms). El muestreo se realizará usando la interrupción del Timer0
(TMR0) y realizando la conversión en la propia interrupción. Los datos adquiridos se guardarán en la
memoria RAM, reservando para ello una matriz de datos (DATA[X]).

1
Islam, M. M., Rafi, F. H. M., Ahmad, M., Mitul, A. F., Mansur, T. T., & Rashid, M. A. (2012, December). Microcontroller based health care
monitoring system using sensor network. In Electrical & Computer Engineering (ICECE), 2012 7th International Conference on (pp. 272-275). IEEE.

199
Problemas de electrónica digital

El periodo total de un muestreo será de 5 s. Una vez finalizado este periodo se inhabilitará el muestreo
hasta el siguiente periodo de medida. Tras cada periodo de medida se determinará el número de máximos
(SP) y mínimos (DP) de los datos adquiridos. La determinación de los máximos y mínimos se puede realizar
mediante el estudio del signo del incremento en un punto.

Una vez determinado el número de SP y DP en 5 s se debe extrapolar a 60 s y determinar el valor del MAP.
Utilizar un display LCD para visualizar los valores de SP, DP y MAP en mmHg.

1. Escribir un programa (PART1) solamente con el muestreo ADC utilizando la interrupción del TMR0 sin la
limitación de 5 s de medida y sin calcular los parámetros de medida.
1.1. Determinar el valor del registro TMR0.
1.2. Utilizar el pin RA1 para medir con el osciloscopio el periodo de interrupción (≈125ms).
1.3. Visualizar, utilizando el “Watch Window”, el valor de ADRESH, ADRESL y las 5 primeras posiciones
de DATA[x] (todas ellas en su respectivo formato).

2. Escribir un programa (PART2) con el muestreo ADC utilizando la interrupción del TMR0 con la
limitación de 5 s de medida y calculando los parámetros de medida SP, DP y MAP. Escribir el
programa para realizar solo una medida.

2.1. Desarrollar un algoritmo que determine los máximos y mínimos locales de una matriz 1D.
2.2. Determinar el valor de MAP (no usar variable float).
2.3. Visualizar, mediante “Watch Window” el valor de ADRESH, ADRESL y las 5 primeras posiciones de
DATA[x], la variable de control de tiempo, el valor de DP,SP y MAP (todas ellas en su respectivo
formato).
2.4. Mostrar la palabra “MEASURING” durante la medida y visualizar el valor de DP, SP y MAP.
Visualizar el valor de SP y DP en dos líneas durante 2 s and y a continuación el de MAP en una sola
línea. Utilizar el puerto B para el LCD.

200
Tema 12. Lenguaje C para compilador XC8

Solución

PARTE 1
Las mediciones se realizarán durante la interrupción activada por el módulo TMR0. De acuerdo con el
enunciado del problema, la recopilación de datos debe realizarse cada 125 ms ya que la frecuencia de muestreo
es 8Hz y sólo 5 s de datos deben almacenarse en la memoria RAM utilizando la variable DATA [x] cuyo tamaño
es: 5 s / 125ms = 40. Sin embargo, en esta parte, esta limitación de 5 s no se programará y se almacenarán más
valores de los necesarios, ya que el objetivo de esta parte es mostrar cómo funciona el módulo TMR0 y el
convertidor A / D.
La frecuencia del reloj interno del microcontrolador debe ser 31.25 kHz.

Diseño del TMR0


En primer lugar, es necesario seleccionar una tasa Prescaler (P) y un valor TMR0 adecuados para obtener un
período de 125 ms (T). Se realizan los siguientes cálculos:

4
T=T ∙ P ∙ (256 − TMR0) = ∙ P ∙ (256 − TMR0)
F
4
T = = 1.28 ∙ 10 → 0.125 = 1.28 ∙ 10 ∙ P ∙ (256 − TMR0)
31.25kHz
−976.5625
P ∙ (256 − TMR0) = 976.5625 → TMR0 = + 256 = 194.96~195
P

La tasa de prescaler (P) seleccionada es P = 16, ya que es la más adecuada para obtener un valor del TMR0
entre 0 y 256. Después de diseñar el programa y simular el programa, el período medido es superior a 125 ms y
por lo tanto el valor final utilizado para TMR0 para obtener el período deseado es TMR0 = 199.

201
Problemas de electrónica digital

Programa
RA1 se utiliza para ver la frecuencia de oscilación de TMR0 a medida que cambia de 0 a 1 cada vez que se
realiza la interrupción TMR0. Durante esta interrupción, el valor analógico procedente del sensor es leído y se
almacena en la variable DATA.
Antes de terminar la interrupción, el TMR0 vuelve a ajustarse a 199 y el flag de interrupción se pone a 0
(INTCON.TMR0IF = 0) para que el programa vuelva a entrar en la interrupción cuando sea necesario.

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <upvADlib.h> // llamada libreria conver A/D
#define _XTAL_FREQ 31250
#pragma config CP = OFF, CC CCPMX = RB0, DEBUG = OFF, WRT = OFF, CPD = OFF
#pragma config LVP = OFF, BOREN = OFF, MCLRE = OFF, PWRTE = OFF, WDTE = OFF
#pragma config FOSC = INTOSCIO, IESO = OFF, FCMEN = OFF

char cnt;
int R, Data[40]; //entero de 16 bits para guardar 10 del ADC

void interrupt int_TMR0 (void) {


PORTAbits.RA1=~PORTAbits.RA1; //volteo RA1

R=convertAD(0); // funcion de conversion canal 0


Data[cnt]=R; //guardar valor conversion en matriz de datos
TMR0=199; // para periodo 125ms
cnt++;
INTCONbits.TMR0IF=0; // borra flag interrup
return;
}

void main() {
cnt=0;
ANSEL=0b00000001; // A0 analógico, A1 digital
TRISA=0b00000001; // RA0 entrada, RA1 salida (oscilosc)
OSCCON=0b00001100; // oscilador f=31.25kHz
OPTION_REG = 0b00000011; //escala 1:16 (bits [2..0]=011)
INTCON = 0b10100000; // config interrup TMR0
TMR0=199;
while (1); // programa principal sin tarea
}

202
Tema 12. Lenguaje C para compilador XC8

Visualización

PARTE 2
En esta segunda parte, se utilizarán algunas de las partes del programa diseñado en la primera parte. Sin
embargo, se añadirán nuevas funciones al programa, ya que este es el programa final donde se calculará el
número de máximos y mínimos y se mostrará la presión arterial (MAP) en el módulo LCD. La limitación 5s de la
recuperación de datos se evaluará en esta parte. El diseño de TMR0 será el mismo que antes con el mismo valor
de prescaler y TMR0.

Programa
El módulo LCD se asigna al puerto B y bits RA1 y RA2 según las propiedades de la librería upvLCDlib.c
En la definición de variables se incluye una matriz de enteros con signo para determinar el signo del incremento
del valor en la matriz de datos para determinar los máximos y mínimos:
unsigned int8 cnt=0, SP=0, DP=0, MAP=0, i;
unsigned int16 R, Data[40];
int Subs[40]; //Matriz de enteros con signo para medir max y min.

La función de interrupción no se ve modificada :

void interrupt int_TMR0 (void) {


PORTAbits.RA3=~PORTAbits.RA3; // salida señal cuadrada por RA3
R=convertAD(2); // funcion de conversion canal 2
Data[cnt]=R; //guardar dato en matriz
TMR0=30; // INICIO CONTADOR
cnt++;
INTCONbits.TMR0IF=0; // BORRA FLAG INTERRUPCION
return;
}

En la función principal se añade el algoritmos para calcular los máximos y mínimos de la matriz DATA[40] y el
cálculo de MAP:

for (i=0;i<=39;i++ )
{
subs[i]=(Data[i+1])-(Data[i]);
}
for (i=0;i<=39;i++ ) //max
{
if ((subs[i]>=0) && (subs[i+1]<0)) SP++;
if ((subs[i]<0) && (subs[i+1] >=0)) DP++;
}

203
Problemas de electrónica digital

El programa principal queda de la siguiente forma:


void main() {
ANSEL=0b00000100; // RA2 analógico, resto digital
TRISA=0b00000100; // RA2 entrada. resto salida
TRISB=0; // PORTB salida
OSCCON=0b00101100; // configurar oscilador (125KHz -> Tclk= 0,032 ms.
Tmaq=0,126ms
OPTION_REG = 0b00000110; //escala tempo 1:128 (bits [2..0]=110)
T(TMR0)=
INTCON = 0b10100000; // bit7=1 -> Habilita interrup ; bit5=1 -> Habilita
TMR0
TMR0=199;
RA3=0;
cnt=0;
lcdIni(18,17,13,12,11,10);
while (1){
if(cnt>=40){
GIE=0; // disable_interrupts(global);
for (i=0; i<=39; i++)
{subs[i]=(Data[i+1])-(Data[i]);
// calculo de todos incrementos señal guardados en matriz
for (i=0;i<=39;i++)
{
if ((subs[i]>=0)&& (subs[i+1]<0))
// Si un incremento es positivo y el siguiente es negativo
SP++; // Se tiene un máximo. Incrementa el nº maximos
if ((subs[i]<0)&& (subs[i+1]>=0) )
// Si un incremento es negativo y el siguiente es positivo
DP++; // Se tiene un mínimo. Incrementa el nº minimo
}
}
SP=SP*12; // extrapola de 5 a 60 seg
DP=DP*12; // extrapola de 5 a 60 seg
MAP=(SP/3)+(DP*2/3);
lcdSend(setCmd,DeleteLCD);
lcdXY(1,1);
lcdWrStr("SP: ");
lcdWrInt(SP);
lcdXY(1,2);
lcdWrStr("DP: ");
lcdWrInt(DP);
__delay_ms(2000);
lcdXY(1,1);
lcdSend(setCmd,DeleteLCD);
lcdWrStr("MAP: ");
lcdWrInt(MAP);
lcdXY(10,1);
lcdWrStr("mmHg");
__delay_ms(2000);
cnt=0; } // vuelta a empezar
else
if(cnt>=0)
{
lcdXY(1,1);
lcdSend(setCmd,DeleteLCD);
lcdWrStr("Measuring...");
}

204
Tema 12. Lenguaje C para compilador XC8

En la pantalla LCD se visualiza "Measuring ..." siempre y cuando la matriz DATA no esté llena, lo que
significa que "cnt <40". Una vez recuperados todos los datos, lo que ocurre después de 5 segundos, se cumple la
condición "if" y se ejecutan las instrucciones en su interior.
En primer lugar, las interrupciones para evitar más medidas. Entonces, con la estructura "for" se
determinan cuántos máximos y mínimos tiene la señal de entrada, comparando un valor con el valor anterior y el
siguiente. Si tanto el valor anterior como el siguiente son inferiores, el valor que estamos evaluando es un
máximo (SP). Si los valores anteriores y siguientes son más altos, es un mínimo (DP). Estos valores para SP y DP
se extrapolan a continuación de 5 segundos a 60 segundos multiplicándolos por 12.
Finalmente, tanto SP como DP se visualizan en el módulo LCD y se realiza el cálculo para MAP, explicado
en la introducción, para finalmente mostrar el valor de la presión sanguínea (MAP) en el módulo LCD.

Visualización
Con el generador de señal se puede crear, por ejemplo, una señal senoidal de 1.9 Hz (o cualquier otro valor), que
implica 10 máximos y 9 mínimos en un intervalo de 5 s. Es decir, 10x12=120 de DP y 9X12=108 de SP y por lo
tanto 116 de MAP.

205
Problemas de electrónica digital

Problema 12.30

Un detector de nivel de líquido (Liquid-Level Sensing LLS) es un


instrumento de medida que detecta la presencia y nivel de líquido en un
contenedor. Hay varios tipos de sensores de nivel de líquido, tales como
capacitivo, flotador mecánico, inductivo, magnético, efecto Hall, óptico,
densidad acústica y ultrasonidos; cada uno tiene ventajas y desventajas. La
detección capacitiva de nivel de líquido se ha vuelto popular debido a su
bajo costo, alta confiabilidad, baja potencia, estética elegante e integración
perfecta con las arquitecturas de control existentes.

El principio de funcionamiento de los sensores capacitivos de nivel de


líquido depende del tipo de líquido. Para líquidos conductores, al menos uno de los dos electrodos de sensor debe
estar aislado para evitar un cortocircuito. Por otra parte, para los líquidos no conductores, los electrodos no necesitan
ser aislados. Para ambos tipos de líquido, a medida que el nivel de líquido aumenta, también lo hace el área de los
electrodos por debajo de la interfase líquido-aire y, por lo tanto, la capacitancia. Los sensores capacitivos pueden
clasificarse en dos grupos: sensores capacitivos flotantes (es decir, sensores en los que ninguno de los electrodos está
conectado a tierra) y sensores capacitivos conectados a tierra (es decir, sensores en los que uno de los dos electrodos
está conectado a tierra).

206
Tema 12. Lenguaje C para compilador XC8

A continuación se muestra un sistema de medición de nivel de líquido basado en un sensor capacitivo conectado a
tierra remoto y que utiliza una conversión capacitancia-a-período como método para medir la capacitancia y, en
consecuencia, el nivel de líquido2. El objetivo de este problema es diseñar el sistema que mida la capacitancia según
este método utilizando el microcontrolador PIC16F88 y el lenguaje C.

Diagrama general del sistema de medida.

La figura muestra el circuito de interfaz diseñado para el sensor capacitivo de nivel de líquido conectado a tierra.
Los bloques principales son:
(1) un multiplexor analógico, que selecciona la capacitancia a medir,
(2) un oscilador de relajación, que realiza una conversión capacitancia-periodo, y
(3) un microcontrolador, que realiza una conversión de periodo a valor digital.

El circuito de interfaz se auto-calibra en términos de errores aditivos (offset) y/o multiplicativos (de ganancia) (por
ejemplo, debido a cambios de temperatura o voltaje) aplicando la técnica de tres señales3. Esta técnica implica tres
medidas:
(1) una medición de sensor,
(2) una medida de referencia, y
(3) una medición de desplazamiento.

La referencia utilizada es un condensador cerámico NP0 (Cref) de capacidad 500 nF, que es aproximadamente el
valor máximo de del sensor. El offset es representado por la capacidad Coff (60 nF), que es la capacidad de dispersión
total (del circuito de interfaz, no del sensor) a tierra. Esta capacidad de offset afecta a las tres medidas.

Un multiplexor, con tres interruptores de dos-a-uno (74HC4053), selecciona qué capacitancia está conectada al
oscilador. Para cada medida, el conmutador correspondiente está en la posición A (es decir, conectado al oscilador),
mientras que los otros dos están en la posición B (es decir, conectados a tierra). Por ejemplo, para la medición del
sensor, el interruptor S1 está en la posición A, mientras que S2 y S3 están en la posición B. La tabla resume el valor de
la capacitancia equivalente conectada al oscilador para cada una de las tres medidas

Measurement Capacitance Period (k = Rc ln 4)


Sensor Cx +Coff Tx = k (Cx +Coff)
Reference Cref +Coff Tref = k (Cref +Coff)
Offset Coff Toff =k Coff

2
Reverter, F., Li, X., & Meijer, G. C. (2007). Liquid-level measurement system based on a remote grounded capacitive sensor. Sensors and Actuators
A: Physical, 138(1), 1-8.
3
F. Reverter, R. Pall`as-Areny, Direct Sensor-to-Microcontroller Interface Circuits. Design and Characterisation, Marcombo, Barcelona, 2005.

207
Problemas de electrónica digital

Un oscilador de relajación convierte la


capacitancia conectada a tierra C (que representa
una de las tres capacitancias seleccionadas por el
multiplexor) en una señal modulada en el
periodo. Dicho oscilador se basa en un circuito RC
(formado por la resistencia Rc y la capacidad C) y
un comparador (OPA337NA) configurado como
Trigger-Schmitt.

Se ha seleccionado R1 = R2 = R3 (= 10 kΩ) de
modo que VTL = VDD/3, VTH = 2VDD/3 y T=Rc*C*ln4. Oscilador de relajación (a) y formas de onda de salida (b)
La resistencia de carga es Rc = 100 kΩ.

El microcontrolador controla el multiplexor y luego mide el periodo de la señal de salida del oscilador. La medida
del periodo se realiza mediante un temporizador (timer), dando como resultado un número digital N. El
microcontrolador utilizado es un PIC16F88 (Microchip) funcionando a 31.250 kHz. El temporizador de 8 bits TIMER0 y
la entrada RB0 se utilizan para realizar la medida de tiempo con una resolución de temporización digital Tcm = 4*Tck=
128 μs. Con el fin de reducir los efectos relativos de la cuantificación, el microcontrolador mide 10 períodos
consecutivos de la señal de salida del oscilador. La tabla resume el valor del número digital resultante (Nx, Nref y Noff)
para cada una de las tres medidas. Una vez se obtienen los valores digitales Nx, Nref y Noff, se aplica la técnica de
autocalibración de tres señales con la siguiente relación:


=

Y así el valor de la capacidad puede ser estimado como Cx =M∙Cref.

Esquema del circuito a diseñar.

208
Tema 12. Lenguaje C para compilador XC8

Ton se medirá para determinar el número N


de cada período. Se mide el período alto de la
señal del oscilador, detectando primero el
flanco ascendente y después el descendente.
Esto se hace con la interrupción RB0 ya que
permite establecer el flanco de activación de
la interrupción.

Cuando se produce una interrupción, por


ejemplo en la transición positiva, se inicializa
el valor del temporizador TMR0, se conmuta la
activación de la interrupción de RB0 a la Diagrama de flujo de la rutina de interrupción por RB0.
transición negativa y, cuando vuelve a
producirse la siguiente interrupción, el valor
de Timer0 (N ) se guarda y la transición
positiva es activada de nuevo.

Dado que el diseño requiere una capacidad mínima de 60 nF y una máxima de 560 nF, la frecuencia experimental
del oscilador es, aproximadamente, de 9 a 48 Hz, es decir, una Ton entre 10 y 60 ms. El prescaler del TMR0 debe ser
elegido de modo que este Ton pueda ser medido, teniendo en cuenta que el Tcm es de 128 μs.

Measurement Capacitance Period (k = Rc ln 4) T (ms) Ton (ms)


Sensor Cx +Coff Tx = k (Cx +Coff)
Reference Cref +Coff = (500 + 60) nF Tref = k (Cref +Coff) 117 60
Offset Coff = 60 nF Toff =k Coff 21 10

Primera parte:

1. Determinar el valor del prescaler TMR0. Indicar el Ton máximo y mínimo a medir con este prescaler.
2. Reservar direcciones de memoria RAM para las variables: N, Nx, Nref, Noff, M y Cx.
3. Escribir la rutina de interrupción de acuerdo con el diagrama de flujo (figura 4).
4. Escribir el programa principal de acuerdo con el diagrama de flujo (figura 5). Guardar el valor de N sólo en el
último período de la décima lectura.
5. Realizar la simulación y crear un “Watch Window” con las variables Nx, Nref, Noff y Cx.

Segunda parte:

1. Modificar el programa anterior para medir el N durante todo el período T de la señal y no sólo para la Ton.
2. Comentar si hay alguna diferencia en las medidas y a que puede ser debido.

209
Problemas de electrónica digital

Solución

74HC_HCT4053
Triple 2-channel analog
multiplexer/demultiplexer Fig. 1.- Diagrama de flujo del programa principal.

Primera Parte:
Determinar el valor del prescaler TMR0.
Indicar el Ton máximo y mínimo a medir con
este prescaler.
Tal como se comenta en el enunciado la frecuencia experimental del oscilador es, aproximadamente, de 9 a 48
Hz, es decir, una Ton entre 10 y 60 ms aproximadamente. Teniendo en cuenta la ecuación que permite calcular el
periodo de TMR0:
= ∙ (256 − ) ∙
Con un prescaler de 2 y con el Tcm de 128 µs, y según los valores máximos y mínimos del TMR0 se pueden medir
los siguientes Ton:
X=0 Ton = 65 ms
X=255 Ton =0.256 ms

Por lo tanto con un prescaler de 2 la medida de periodos fijos de tiempo puede realizarse entre un mínimo de
0.256 ms y un máximo de 65 ms. Declarar las variables: N, Nx, Nref, Noff, M y Cx.

Int8 COUNT,NX,NREF,NOFF,N;
float M,C;

210
Tema 12. Lenguaje C para compilador XC8

1. Escribir la rutina de interrupción de acuerdo con el diagrama de flujo.

void interrupt int_RB0 (void) {


if(change==0){
TMR0=0;
INTEDG=0; // flanco de bajada
change=1;
count++;}
else {
n=TMR0; // valor de n
INTEDG=1; // flanco de subida
change=0;} // control de cambio
return;
}

Escribir el programa principal de acuerdo con el diagrama de flujo. Guardar el valor de N sólo en el último
período de la décima lectura.

211
Problemas de electrónica digital

212
Tema 12. Lenguaje C para compilador XC8

2. Realizar la simulación y crear un “Watch Window” con las variables Nx, Nref, Noff y Cx.

Segunda Parte:

a) Modificar el programa anterior para medir el N durante todo el período T de la señal y no sólo
para la Ton.

El prescaler debe ser modificado ya que los máximos y mínimos en el valor de periodo cambian, si se considera
el periodo completo serán de 9 a 48 Hz, es decir entre 20 y 110 ms aproximadamente. No es suficiente con un
prescaler de 2, así que con uno de 4 2 y con el Tcm de 128 µs, y según los valores máximos y mínimos del TMR0
se pueden medir los siguientes T:

X=0 T= 131 ms
X=255 T=0.512 ms

Además, se debe modificar la rutina de interrupción para que solo se produzca el cambio en el flanco de subida:

void interrupt int_RB0 (void)


{N=TMR0; // al inicio del periodo
TMR0=0; // inicialización de TMR0
Count++; } // hasta el siguiente periodo

b) Comentar si hay alguna diferencia en las medidas y a que puede ser debido.

La precisión de la medida se ha mejorado ya que se mide el período total y no sólo el Ton. Ton no tiene por qué ser
el 50% del período a ser medido y por lo tanto se está cometiendo un error en la medida si sólo se considera una
parte del período.

213
ANEXO
En este anexo se incluyen las llamadas a librerías en lenguaje C (compilador XC8) que se
han utilizado en el último tema de esta publicación.

Estas librerías fueron realizadas por el alumno José Santacreu Balaguer en su Trabajo Fin
de Grado. Los autores de esta publicación agradecemos su trabajo.

LIBRERÍA CONTROL PANEL LCD


Formada por dos ficheros: upvLCDlib.c y upvLCDlib.h
Descargar ficheros desde: tiny.cc/0153_upvLCDlib

Hay que incorporar esta librería en el programa fuente mediante el comando:


#include <upvLCDlib.h>
Esta librería incluye las siguientes funciones:

• lcdIni(int E, int RS, int d7, int d6, int d5, int d4); // Conexión entre panel LCD y PIC, nº pin
Ejemplo: lcdIni(18,17,13,12,11,10); // E y RS se conectan al PORTA y d7, d6, d5 y d4 a PORTB.
Esta función hay que ponerla siempre

• lcdXY( unsigned char x, unsigned char y); // coordenadas de escritura del carácter (16x2)
Ejemplo: lcdXY(6,1); // 6ª columna, 1ª fila. Por defecto es 1,1

• lcdWrStr(const char); // escribir palabra (string) entre doble comillas


Ejemplo: lcdWrStr("HOLA");

• lcdWrInt(int entero); // escritura de variable de nº entero


Ejemplo: lcdWrInt(numero);

• lcdWrFloat(float decimal, tolerancia); // escritura variable de nº flotante, nº decimales.


Ejemplo: lcdWrFloat(numero, 2); // escribe variable float con dos decimales.

• lcd_putc( char c); // carácter especial. No alfabeto ingles

Ejemplo: lcd_putc(0b11100100); // escribe el carácter µ (ver juego caracteres panel LCD)

215
Problemas de electrónica digital

• lcdSend(dir, valor); // comandos de control panel

Ejemplos:
lcdSend(setCmd, NoBlink); // cursor no parpadea
lcdSend(setCmd, NoShow); // no muestra el cursor

LIBRERÍA PARA CONTROL DEL CONVERTIDOR ANALÓGICO/DIGITAL

Formada por dos ficheros: upvADlib.c y upvADlib.h


Descargar ficheros desde: tiny.cc/0153_upvADlib
Hay que incorporar esta librería en el programa fuente mediante el comando:
#include <upvADlib.h>

Esta librería incluye una sola función:

• int convertAD(int canal).

Para llamarla desde programa principal: variable= convertAD(nºcanal)

216
Anexo

LIBRERÍA PARA CONTROL PWM

Formada por dos ficheros: upvPWMlib.c y upvPWMlib.h

Descargar ficheros desde: tiny.cc/0153_upvPWMlib

Hay que incorporar esta librería en el programa fuente mediante el comando:


#include <upvPWMlib.h>

Esta librería incluye dos funciones:

1 configPWM(int NumPin, int Preescaler)

NumPin Descripción
PinPWMB0 La señal PWM se assigna al pin B0
PinPWMB3 La señal PWM se assigna al pin B3
Preescaler Descripción
Pre1 Valor del Preescaler del TMR2 fijado en 1.
Pre4 Valor del Preescaler del TMR2 fijado en 4
Pre16 Valor del Preescaler del TMR2 fijado en 16

2 outPWM(float Periodo, int CicloTrabajo)

Periodo: Periodo de la señal PWM, definida en microsegundos. *


CicloTrabajo: ciclo de trabajo de la señal PWM, definida en tanto por ciento 1-100%. *
El generador PWM utiliza el TMR2 para generar la señal modulada. El periodo de la señal se almacena en el
registro de 8bits “PR2”.

PWMperiod= [PR2+1] *4*Tosc*preescaler.

Para una frecuencia del oscilador de 4MHz, Tosc=0.25µs y el periodo máximo que se puede obtener en el
PWM será: PWMperiod= 256*4*0.25*16=4096µs.

Según el preescaler introducido, el período máximo y mínimo, será:

Preescaler Tmax Tmin fmax fmin


Pr1 256µs 1µs 1MHz 3.9KHz
Pr4 1024µs 4µs 250KHz 976Hz
Pr16 4096µs 16µs 62.5kHz 244Hz

217
BIBLIOGRAFÍA GENERAL

Electrónica Digital General:

• Floyd, Thomas L. (2016) Fundamentos de Sistemas Digitales. 11º ed. Ed. Pearson Educación.
• Floyd, Thomas L. (2015) Digital fundamentals. 11º ed. Ed. Pearson Educación.
• Tocci, Ronald J.; Windmet, Neal S.; L. Moss, Gregory. (2016). Sistemas Digitales: Principios y
Aplicaciones. 10ª ed. Pearson Educación de Mexico.
• Tocci, Ronald J.; Windmet, Neal S.; L. Moss, Gregory. (2014). Digital systems: principles and
applications. Ed. Pearson Educación.
• Mano, M. Morris. Diseño Digital. 3ª ed (2016) Ed. Pearson.
• Mano, M. Morris. Digital Design. 4ª edición (2016) Ed. Pearson.
• Roth, Charles H. (2004) Fundamentos de Diseño Lógico. 5ª ed. Ed. Paraninfo.
• Roth, Charles H. (2014) Fundamentals of Logic Design. 7º ed. Ed. Cengage Learning.
• Mandado, Enrique; Martín, Jose Luis. Sistemas Electrónicos Digitales. 10º ed. Marcombo Kleitz,
William (2014). Digital electronics: a practical approach with VHDL. 9th ed. Prentice Hall.
• Ashenden, Peter J. (2008). The student's guide to VHDL 2nd ed. Morgan Kaufmann cop.
• Hermosa, Antonio (2010). Electrónica Digital Fundamental y Programable. 4ª ed. Marcombo
• Hermosa, Antonio (1997). Técnicas electrónicas digitales: tecnología y circuitería en TTL y CMOS.
Ed. MARCOMBO.

Libros docentes de Electrónica Digital de Editorial Universitat Politècnica de València.:

• Gil Sánchez, Luis (1999). Introducción a la Electrónica Digital..


• Toledo, José Fco.; Esteve, Raúl (2005). Fundamentos de Electrónica Digital..
• Ballester Merelo, Francisco José; Garrigues Baixauli, José; Torres Carot, Vicente Problemas
Resueltos de Sistemas Electrónicos Digitales.

Libros de Programación de PICs:

• Corres, Jesús Mª; Ruiz, Carlos; Bariáin, Cándido. (2015). Ejercicios de Programación con
Microcontroladores PIC. Ed. MARCOMBO.

219
Problemas de electrónica digital

• Etxebarría Isuskiza, Mikel (2011) Microcontroladores PIC. Teoría y Práctica. Ed. Creaciones
Copyright.
• Barriáin, Cándido; Corres, Jesús Mª; Ruiz, Carlos. (2017). Programación de microcontroladores PIC
en lenguaje C. Marcombo.
• Etxebarria Isuskiza, Mikel (2011). Microcontroladores PIC: teoría y práctica: el PIC16F88X y el
laboratorio USB-PIC'School. Creaciones Copyright, D.L.

220