01 · Punto de partida
Una memoria de un bit que se puede tocar
En el tema 5 vimos que dos NAND realimentadas retienen un bit, y en el tema 6 que con unas puertas más se obtiene un latch D. Todo eso sigue siendo papel. Este tema lo convierte en un circuito que se prende, se mide y se rompe. Vas a armar tres montajes, cada uno sobre el anterior:
| Montaje | Qué hace | Chips | Qué aprendés |
|---|---|---|---|
| 1. Memoria de un bit | Un LED que se enciende con un pulsador y se apaga con otro, y recuerda el último | 1 × 74HC00 | Cableado, entradas con pull-up, estados al encender y combinación prohibida |
| 2. Antirrebote | El mismo circuito, con un conmutador de palanca, entrega un cambio limpio por maniobra | El mismo 74HC00 | Por qué un contacto mecánico «miente» y cómo lo corrige un latch |
| 3. Latch D (opcional) | Un dato D se guarda cuando se pulsa E | 2 × 74HC00 | Del latch SR al latch D con compuertas, y cuándo conviene un integrado |
No hace falta tener los materiales para aprovechar el tema: el laboratorio simula el banco de pruebas y el código verifica cada tabla. Pero si tenés un protoboard y unos centavos de chips, armarlo es la mejor manera de que la teoría se quede.
02 · Preparación
Materiales y herramientas
| Cant. | Componente | Para qué sirve |
|---|---|---|
| 1 (2) | 74HC00 (cuatro NAND de dos entradas) | El latch (el segundo chip es para el montaje 3) |
| 2 | Pulsador normalmente abierto | Ordenes de Set y de Reset |
| 1 | Conmutador de palanca SPDT (tres terminales: común y dos contactos) | Montaje 2: antirrebote |
| 4 | Resistencia de 10 kΩ | Pull-up de cada entrada de orden (dos más para el montaje 3) |
| 2 | LED y resistencia de 1 kΩ en serie con cada uno | Mostrar Q y ~Q (unos 3 mA a 5 V) |
| 2 | Condensador cerámico de 100 nF | Desacople: uno por chip, pegado a los pines de alimentación |
| 1 | Protoboard, cables y fuente regulada de 5 V | Montaje y alimentación (la familia HC admite de 2 a 6 V) |
Del lado de los instrumentos, el multímetro alcanza para el montaje 1. Para ver el rebote hace falta un osciloscopio o un analizador lógico, con disparo en un solo evento (single shot) y una escala de tiempo de 1 a 2 ms por división. Si no tenés ninguno, el laboratorio de este tema lo simula.
Antes de dar tensión
- Alimentación en los pines 14 (Vcc) y 7 (GND) de cada 74HC00, con el 100 nF entre ellos, lo más corto posible.
- Ninguna entrada al aire: las que usás, con pull-up o conectadas a una salida; las de las compuertas sobrantes, a masa.
- Ningún cable entre dos salidas.
- Polaridad de los LED revisada: el ánodo (pata larga) va hacia la resistencia y la salida; el cátodo, a masa.
Es la lista del checklist de buenas prácticas del curso de Electrónica Digital, aplicada a un circuito concreto.
03 · Montaje 1
La memoria de un bit
El 74HC00 tiene la misma disposición de pines que el viejo 7400: cuatro NAND con sus entradas A y B y su salida Y. Usaremos dos de ellas, realimentadas, que son el latch de NAND del tema 5, con entradas activas en bajo: S̄ para poner (Set) y R̄ para borrar (Reset).
| Pin | Nombre | Se conecta a |
|---|---|---|
| 14 / 7 | Vcc / GND | +5 V / masa, con 100 nF entre ambos |
| 1 | 1A | Nodo S̄: pulsador SET a masa y 10 kΩ a +5 V |
| 2 | 1B | Pin 6 (salida ~Q de la otra compuerta) |
| 3 | 1Y = Q | Pin 5; LED de Q (con 1 kΩ) a masa |
| 4 | 2A | Nodo R̄: pulsador RESET a masa y 10 kΩ a +5 V |
| 5 | 2B | Pin 3 (salida Q de la primera compuerta) |
| 6 | 2Y = ~Q | Pin 2; LED de ~Q (con 1 kΩ) a masa |
| 9, 10, 12, 13 | 3A, 3B, 4A, 4B | A masa (las compuertas sobrantes no quedan al aire) |
| 8, 11 | 3Y, 4Y | Sin conexión |
Las ecuaciones son las del tema 5: Q = NAND(S̄, ~Q) y ~Q = NAND(R̄, Q). Observá el cruce: la salida de cada compuerta (pines 3 y 6) vuelve a una entrada de la otra (pines 5 y 2). Es el lazo biestable en su forma más compacta.
04 · Verificar
Pruebas y mediciones
Probá el montaje con la lista siguiente, en orden, anotando qué LED se enciende. Es el mismo método de la mesa de trabajo del curso anterior: una secuencia corta, cada paso con un resultado esperado.
| Paso | Acción | Q | ~Q | Comentario |
|---|---|---|---|---|
| 1 | Dar tensión sin tocar nada | 0 o 1 | el opuesto | Indeterminado, pero complementarias: arranca en cualquier estado |
| 2 | Apretar SET | 1 | 0 | S̄ = 0 pone Q en 1 (LED de Q encendido) |
| 3 | Soltar SET | 1 | 0 | Retiene: esa es la memoria |
| 4 | Apretar RESET | 0 | 1 | R̄ = 0 borra Q |
| 5 | Soltar RESET | 0 | 1 | Retiene el 0 |
| 6 | Apretar SET y RESET juntos | 1 | 1 | Combinación prohibida: los dos LED encendidos |
| 7a | Desde el paso 6, soltar SET primero | 0 | 1 | Queda solo R̄ = 0: reset. Determinado |
| 7b | Desde el paso 6, soltar RESET primero | 1 | 0 | Queda solo S̄ = 0: set. Determinado |
| 7c | Desde el paso 6, soltar los dos a la vez | 0 o 1 | el opuesto | Carrera: resultado impredecible |
Mediciones con el multímetro
- Alimentación: entre los pines 14 y 7 debe haber unos 5 V, con el circuito encendido.
- Reposo: los nodos S̄ y R̄ deben medir cerca de 5 V (pull-up). Si medís un valor intermedio, falta o está floja una conexión.
- Salidas: Q y ~Q deben medir cerca de 0 V y cerca de 5 V, una de cada. Un valor a mitad de camino indica una salida cargada de más o una entrada flotante.
- Pulsadores: al apretar SET, el nodo S̄ debe bajar a casi 0 V.
El paso 1 merece atención: no se puede predecir con qué estado arranca. En una repetición del experimento puede salir encendido el LED de Q y en otra el de ~Q. En un diseño que necesite un valor conocido al encender, hay que forzarlo con un Reset inicial; es la lección del tema 4 convertida en algo que se ve.
05 · El problema
Por qué un latch limpia el rebote
Un contacto mecánico no cierra de una vez: las láminas rebotan unas fracciones de milisegundo antes de asentarse, y la señal salta entre 1 y 0 decenas de veces. Para una lámpara es invisible; para un contador o una interrupción, cada salto es una pulsación. En el curso de Electrónica Digital vimos dos remedios: un filtro RC con disparador Schmitt y una ventana de espera por software. Hay un tercero, que depende de lo que acabamos de armar.
| Método | Qué necesita | Cómo funciona | Límite |
|---|---|---|---|
| RC + Schmitt | Resistencia, condensador y un inversor con histéresis | Alisa los saltos con una constante de tiempo | Hay que elegir τ según el peor rebote |
| Ventana por software | Un microcontrolador | Ignora los cambios durante unos milisegundos | Hay que programar y elegir la ventana |
| Latch con conmutador | Un conmutador SPDT y dos NAND | El primer contacto con el lado nuevo cambia el estado; el resto de los rebotes repite la misma orden | Necesita un contacto de dos posiciones |
La idea del tercer método es que el rebote solo ocurre sobre el contacto que acaba de cerrarse. Con el conmutador de palanca, el terminal común está a masa; al mover la palanca de B hacia A:
- La palanca se separa de B: R̄ pasa a 1 (con pull-up) y, mientras viaja, ni S̄ ni R̄ valen 0. El latch retiene.
- La palanca toca A: S̄ baja a 0. El latch hace Set: Q = 1.
- La palanca rebota sobre A: S̄ sube y baja varias veces. Cuando S̄ vale 1, ambas entradas valen 1 y el latch retiene; cuando vale 0, repite el Set, que ya estaba hecho. Q no vuelve a cambiar.
El latch no filtra tiempo: se vuelve indiferente a las repeticiones. Por eso no necesita ninguna constante de tiempo y funciona con cualquier duración de rebote. Lo que sí exige es que la palanca nunca toque A y B a la vez (no pasar por la combinación prohibida), cosa que un conmutador de dos posiciones garantiza por construcción.
06 · Montaje 2
Conmutador de palanca y latch
Se reutiliza el montaje 1. Se quitan los dos pulsadores y se coloca el conmutador SPDT entre los nodos S̄ y R̄:
| Terminal del conmutador | Se conecta a |
|---|---|
| Común (el de la palanca) | Masa (GND) |
| Contacto A | Nodo S̄ (pin 1, con su pull-up de 10 kΩ) |
| Contacto B | Nodo R̄ (pin 4, con su pull-up de 10 kΩ) |
Con la palanca en A, S̄ vale 0 y R̄ vale 1: Q = 1. Con la palanca en B: Q = 0. Cada movimiento produce un único cambio en Q, sin importar cuántas veces rebote el contacto.
Cómo verlo
- Con osciloscopio o analizador lógico: conectá un canal al nodo S̄ (o R̄) y otro a Q. Disparo en un solo evento, con flanco de bajada en S̄ y 1 ms por división. En S̄ vas a ver una ráfaga de saltos; en Q, un solo escalón.
- Con un contador: si alimentás un contador (lo armaremos en los próximos temas) con el nodo S̄ directo, suma varias unidades por maniobra; con Q, suma una. Es el mismo experimento del laboratorio de este tema.
- Con un LED: a simple vista no se ve nada, porque los rebotes duran milisegundos. Esa es justamente la trampa del rebote: nuestros ojos no lo detectan, pero un circuito rápido sí.
Q es ahora un «reloj manual» limpio: un nivel que cambia una vez cada vez que movés la palanca. Es lo que se usa para avanzar a mano un contador o un flip-flop, y lo vamos a necesitar en los talleres de los temas 12 y 20.
07 · Montaje 3 (opcional)
Un latch D con cinco NAND
Con dos chips 74HC00 se arma el latch D del tema 6: una puerta invierte D, dos puertas forman S̄′ y R̄′, y las dos restantes son el latch de NAND. En total, cinco compuertas:
| Compuerta | Función | Pines (A, B → Y) | Conexiones |
|---|---|---|---|
| U1 compuerta 1 | ~D = NAND(D, D) | 1, 2 → 3 | Pines 1 y 2 juntos a D; salida 3 al pin 9 |
| U1 compuerta 2 | S̄′ = NAND(D, E) | 4, 5 → 6 | Pin 4 a D; pin 5 a E; salida 6 al pin 12 |
| U1 compuerta 3 | R̄′ = NAND(~D, E) | 9, 10 → 8 | Pin 9 a ~D (pin 3); pin 10 a E; salida 8 al pin 1 de U2 |
| U1 compuerta 4 | Q = NAND(S̄′, ~Q) | 12, 13 → 11 | Pin 12 a S̄′; pin 13 a ~Q (pin 3 de U2); salida 11 = Q |
| U2 compuerta 1 | ~Q = NAND(R̄′, Q) | 1, 2 → 3 | Pin 1 a R̄′ (pin 8 de U1); pin 2 a Q (pin 11 de U1); salida 3 = ~Q |
La entrada D se fija con un interruptor deslizante entre masa y +5 V (nunca al aire). La habilitación E se arma con un pulsador a +5 V y una resistencia de 10 kΩ a masa: reposo en 0, pulsado en 1. Las entradas de las compuertas sobrantes de U2 (pines 4, 5, 9, 10, 12 y 13) van a masa.
| Acción | Q esperada |
|---|---|
| D = 1, sin apretar E | Sin cambio (el latch está cerrado) |
| Apretar E (D = 1) | 1: tomó el dato |
| Soltar E, poner D = 0 | 1: retiene |
| Apretar E (D = 0) | 0: tomó el nuevo dato |
| Con E apretado, mover D | Q sigue a D: transparencia |
Este montaje sirve para ver la ecuación Q⁺ = E·D + ¬E·Q funcionando, pero en un diseño real se usa un integrado (74HC75, 74HC373): trae la lógica interna ya resuelta, incluidos los detalles de tiempo que con puertas sueltas aparecen como el hazard del tema 6.
08 · Cuando no funciona
Fallas típicas y método de depuración
| Síntoma | Causa probable | Cómo comprobarlo |
|---|---|---|
| Los dos LED apagados siempre | Sin alimentación, masa abierta o LED al revés. Un latch de NAND con entradas válidas no puede tener ambas salidas en 0 | Medir Vcc entre los pines 14 y 7 |
| Q cambia solo, o al acercar la mano | Falta un pull-up o está floja una conexión | Medir S̄ y R̄ en reposo: deben estar cerca de 5 V |
| Al soltar SET, Q vuelve a 0 | El nodo S̄ queda flotando al soltar el botón | Revisar la resistencia de 10 kΩ de S̄ |
| Ambos LED encendidos en reposo | S̄ y R̄ valen 0 a la vez: pulsador trabado o nodo a masa | Medir los nodos sin apretar nada |
| LED muy débil | Entrada flotante en una compuerta o salida muy cargada | Medir la salida; revisar compuertas sobrantes |
| El chip se calienta | Entradas sobrantes al aire o una salida en cortocircuito | Llevar las sobrantes a masa; buscar cables entre salidas |
| El contador cuenta de más con el conmutador | Conectado al nodo S̄ y no a Q, o un pulsador SPST usado como si fuera SPDT | Verificar de dónde sale la señal del contador |
| Al soltar los dos pulsadores, Q queda distinto cada vez | Es normal: la combinación prohibida suelta a la vez es una carrera | Soltar en orden y comprobar que queda determinado |
Un método
- Alimentación primero. Vcc y masa en los pines 14 y 7 de cada chip, con carga conectada.
- Entradas en reposo. Cada nodo de entrada con un nivel definido, no un valor intermedio.
- Una acción por vez. Apretar un solo pulsador y mirar el nodo, después la salida.
- Salidas complementarias. En todo estado válido, Q y ~Q son opuestas. Si no lo son y no estás en la prohibida, hay un error.
- Seguir la lista de pruebas y anotar el primer paso que falla: el error está entre ese paso y el anterior.
- Aislar. Si aún falla, separar el latch de los pulsadores y forzar S̄ y R̄ con cables a masa y a +5 V.
09 · El taller en código
Simular, contar rebotes y comprobar
Antes de armar, conviene predecir. Los bloques reproducen cada montaje: la secuencia de pruebas del latch, un conmutador con rebotes aleatorios, el latch D de cinco compuertas y una lista de comprobación que compara lo que medís con lo esperado.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
Paso 1: el montaje 1 en una tabla
def nand(a, b):
return 0 if (a and b) else 1
def asentar(sb, rb, q, qn, gana="q"):
"""Latch de dos NAND (74HC00): Q = NAND(S̄, ~Q), ~Q = NAND(R̄, Q)."""
for _ in range(6):
if gana == "q": # responde antes la compuerta de Q
nq = nand(sb, qn)
nqn = nand(rb, nq)
else: # responde antes la de ~Q
nqn = nand(rb, q)
nq = nand(sb, nqn)
if (nq, nqn) == (q, qn):
break
q, qn = nq, nqn
return q, qn
q, qn = 0, 1 # al encender, puede ser cualquiera
pasos = [("reposo", 1, 1), ("pulsar SET", 0, 1), ("soltar SET", 1, 1),
("pulsar RESET", 1, 0), ("soltar RESET", 1, 1),
("SET y RESET juntos", 0, 0), ("soltar los dos a la vez", 1, 1)]
print("acción S̄ R̄ | Q ~Q")
for nombre, sb, rb in pasos:
q, qn = asentar(sb, rb, q, qn, gana="q")
print(f"{nombre:26s} {sb} {rb} | {q} {qn}")
print()
print("soltar la prohibida, según qué compuerta responda antes:")
for gana in ("q", "qn"):
print(f" gana {gana:2s}: Q, ~Q =", asentar(1, 1, 1, 1, gana))
print("soltar SET antes que RESET:", asentar(1, 0, 1, 1), "| soltar RESET antes que SET:", asentar(0, 1, 1, 1))
Es la lista de pruebas de la sección 4: SET enciende Q y retiene; RESET lo borra; ambos a la vez dejan los dos LED encendidos (1, 1). Al soltar la prohibida a la vez el resultado depende de qué compuerta responda antes: (0, 1) o (1, 0). Soltar uno antes que el otro lo hace determinado: SET primero deja Q = 0, RESET primero deja Q = 1.
Paso 2: un conmutador con rebotes
import random
def conmutar(semilla, desde_b=True, rebotes_max=6, duracion=8.0, paso=0.1, total=20.0):
"""Mueve la palanca de un contacto al otro. Devuelve S̄, R̄ y Q muestreados."""
rnd = random.Random(semilla)
n_llegada = rnd.randint(1, rebotes_max)
n_salida = rnd.randint(0, 2)
t_salida, t_llegada = 0.5, 3.0
cortes_llegada = [t_llegada] + sorted(t_llegada + rnd.uniform(0.05, duracion) for _ in range(2 * n_llegada))
cortes_salida = [t_salida] + sorted(t_salida + rnd.uniform(0.02, 1.0) for _ in range(2 * n_salida))
nivel = lambda cortes, t, inicial: inicial ^ (sum(1 for c in cortes if c <= t) % 2)
sb_ini, rb_ini = (1, 0) if desde_b else (0, 1)
s, r, q, cambios_q, q_ini = [], [], 0 if desde_b else 1, 0, 0 if desde_b else 1
for k in range(int(total / paso)):
t = k * paso
sb = nivel(cortes_llegada, t, 1) if desde_b else nivel(cortes_salida, t, 0)
rb = nivel(cortes_salida, t, 0) if desde_b else nivel(cortes_llegada, t, 1)
if sb == 0 and rb == 1 and q != 1:
q, cambios_q = 1, cambios_q + 1
elif sb == 1 and rb == 0 and q != 0:
q, cambios_q = 0, cambios_q + 1
s.append(sb)
r.append(rb)
return s, r, cambios_q
def flancos_bajada(senal):
return sum(1 for a, b in zip(senal, senal[1:]) if a == 1 and b == 0)
print("movimiento flancos en el pin que llega cambios de Q")
for i in range(1, 9):
desde_b = i % 2 == 1
s, r, cambios = conmutar(i, desde_b)
llegada = s if desde_b else r
print(f"{i:5d} ({'B→A' if desde_b else 'A→B'}) {flancos_bajada(llegada):18d} {cambios:17d}")
En los 8 movimientos, el pin que llega tuvo entre 2 y 6 flancos de bajada (28 en total), y Q cambió exactamente una vez por movimiento (8 en total). Cambiá rebotes_max o duracion y repetí: Q no se entera.
Paso 3: el latch D de cinco compuertas
def nand(a, b):
return 0 if (a and b) else 1
def latch_sr_nand(sb, rb, q, qn):
for _ in range(8):
nq, nqn = nand(sb, qn), nand(rb, q)
if (nq, nqn) == (q, qn):
break
q, qn = nq, nqn
return q, qn
def latch_d_5nand(d, e, q, qn):
g1 = nand(d, d) # ~D (compuerta 1 del chip U1)
g2 = nand(d, e) # S̄' = ~(D·E) (compuerta 2 de U1)
g3 = nand(g1, e) # R̄' = ~(~D·E) (compuerta 3 de U1)
return latch_sr_nand(g2, g3, q, qn) # compuertas 4 de U1 y 1 de U2
print("E D Q | Q+ ~Q+")
bien = True
for e in (0, 1):
for d in (0, 1):
for q in (0, 1):
q2, qn2 = latch_d_5nand(d, e, q, 1 - q)
esperado = d if e else q
bien = bien and q2 == esperado and qn2 == 1 - q2
print(f"{e} {d} {q} | {q2} {qn2}")
print("coincide con Q+ = E·D + ~E·Q y Q, ~Q complementarios:", bien)
En las ocho filas, las cinco NAND coinciden con Q⁺ = E·D + ¬E·Q y Q y ~Q son complementarias. El modelo no incluye retardos: el hazard del multiplexor (tema 6) aparecería con compuertas reales si se implementara la ecuación con AND y OR.
Paso 4: lista de comprobación
# Lista de comprobación del montaje 1: (acción, qué se espera) y qué mediste
ESPERADO = [
("encender (S̄ = R̄ = 1)", lambda q, qn: q != qn), # cualquiera, pero complementarias
("pulsar SET", lambda q, qn: (q, qn) == (1, 0)),
("soltar SET", lambda q, qn: (q, qn) == (1, 0)),
("pulsar RESET", lambda q, qn: (q, qn) == (0, 1)),
("soltar RESET", lambda q, qn: (q, qn) == (0, 1)),
("SET y RESET juntos", lambda q, qn: (q, qn) == (1, 1)),
("soltar SET primero", lambda q, qn: (q, qn) == (0, 1)),
]
# (Q, ~Q) observados en la mesa; el montaje de ejemplo no tiene el pull-up de SET
observado = [(1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 1), (0, 1)]
fallas = 0
for (accion, ok), (q, qn) in zip(ESPERADO, observado):
resultado = "OK " if ok(q, qn) else "FALLA"
fallas += resultado == "FALLA"
print(f"{resultado} {accion:24s} Q={q} ~Q={qn}")
print(f"{len(ESPERADO) - fallas} de {len(ESPERADO)} pasos correctos")
Con las observaciones del ejemplo falla «soltar SET»: Q cae a 0 cuando debería retener 1. Es el síntoma típico de un pull-up faltante en S̄. Reemplazá observado con lo que midas en tu montaje y obtené el diagnóstico.
10 · Exploración interactiva
El banco de pruebas
Un conmutador de palanca con rebotes aleatorios alimenta el latch del montaje 2. Cada vez que movés la palanca, el simulador genera una maniobra distinta: el contacto que se abre rebota un poco, la palanca viaja y el contacto que se cierra rebota entre 1 y la cantidad máxima que elijas, durante el tiempo que indiques. Se muestran tres señales: el nodo S̄ (contacto A), el nodo R̄ (contacto B) y la salida Q. Los puntos naranjas marcan los flancos de bajada que vería un contador conectado directo al pin S̄.
Conmutador con rebotes y latch de NAND
Palanca en B, Q = 0. Movela hacia A y mirá cuántos flancos tiene el pin y cuántos cambios tiene Q.
| N.º | Maniobra | Rebotes al llegar | Flancos ↓ en S̄ | Cambios de Q |
|---|---|---|---|---|
| Sin maniobras registradas. | ||||
Recorrido guiado
- Con los valores iniciales, movés la palanca de B a A. Q sube a 1 una sola vez. En el pin S̄ se ven varios saltos, y los puntos naranjas los cuentan.
- Mové la palanca de A a B. Ahora el que rebota es R̄; S̄ solo tiene los saltos de la salida del contacto A. Q baja una sola vez.
- Repetí cinco o seis maniobras. Comparás los dos contadores: el crudo suma varias unidades por maniobra, el del latch suma uno por cada B → A.
- Subí la duración del rebote a 15 ms y los rebotes máximos a 10. El pin se vuelve mucho más ruidoso; Q sigue cambiando una vez por maniobra.
- Bajá los dos parámetros al mínimo. A veces el pin queda con un solo flanco. Por eso el rebote es un problema intermitente, y por eso es tan difícil de encontrar sin instrumentos.
- Pensá cuánto costaría hacer lo mismo con un filtro RC: habría que elegir τ para el peor caso (15 ms), y todos los pulsos más cortos se perderían. El latch no necesita saber cuánto dura el rebote.
Desafío: encontrar un caso en que el contador del latch y el real difieran
Los dos contadores miden cosas distintas: el crudo cuenta flancos de bajada del pin S̄ (incluidos los de la salida del contacto A, que también puede rebotar al abrirse), y el del latch cuenta flancos de subida de Q. Con un conmutador, el valor correcto es el número de maniobras hacia A. Si lo comparás con el número de veces que movés la palanca a A, el contador del latch coincide siempre; el crudo, casi nunca.
11 · Comprensión
Confusiones frecuentes
«Los pulsadores caros no rebotan»
Todo contacto mecánico rebota; los buenos lo hacen menos y por menos tiempo, pero ninguno es limpio. Un circuito que cuenta flancos necesita un antirrebote sin importar el precio del pulsador.
«Con un latch, cualquier pulsador queda libre de rebote»
Un pulsador común (un solo contacto) alimenta una sola entrada del latch. El método funciona porque las dos entradas vienen de los dos contactos de un conmutador. Con un pulsador solo, se usa RC con Schmitt o una ventana por software.
«El latch arranca siempre en Q = 0»
Arranca en cualquiera de sus estados estables. Lo que se observa depende de pequeñas diferencias entre las dos compuertas, y puede cambiar de un encendido a otro.
«Sin pull-up funciona igual, solo que menos prolijo»
Al soltar el pulsador, el nodo queda flotando y puede leerse como 0 o como 1. El síntoma típico es que Q cambia al soltar o al tocar el protoboard.
«Los dos LED encendidos son un error de cableado»
En el latch de NAND, es el resultado esperado de apretar SET y RESET a la vez: ambas salidas valen 1. No es un fallo del circuito sino un recordatorio de que esa combinación está prohibida.
«Las compuertas sobrantes del 74HC00 pueden quedar sueltas»
Una entrada CMOS al aire recoge ruido, puede oscilar y hace consumir de más al chip. Todas las entradas sobrantes van a masa o a +5 V.
«Con el multímetro compruebo que no hay rebotes»
El multímetro es demasiado lento: promedia y muestra un valor estable. El rebote dura milisegundos y se ve con un osciloscopio o un analizador lógico en disparo único.
12 · Práctica guiada
Predecí antes de comprobar
1. Las compuertas sobrantes
En el montaje 1 solo se usan las compuertas 1 y 2 del 74HC00. ¿A dónde van las entradas de las compuertas 3 y 4 y por qué? ¿Qué pasaría si quedaran al aire?
Ver solución razonada
Los pines 9, 10, 12 y 13 van a masa. Una entrada CMOS al aire flota en la zona intermedia, puede oscilar y hacer conducir a los dos transistores de la salida a la vez: el chip consume de más, se calienta y puede inyectar ruido en la alimentación. Con las entradas a masa, la salida queda en 1, estable.
2. Predecir una secuencia
Con el montaje 1 y Q = 0, se hace: apretar SET; apretar RESET sin soltar SET; soltar SET; soltar RESET. ¿Cuál es Q después de cada paso?
Ver solución
Apretar SET: Q = 1. Apretar RESET también: prohibida, Q = ~Q = 1. Soltar SET (queda R̄ = 0): reset, Q = 0. Soltar RESET: retiene, Q = 0. Es la lista de pruebas con el orden 7a.
3. Contar con y sin latch
Un contador cuenta cada flanco de bajada de su entrada. Se mueve 10 veces la palanca (5 hacia A y 5 hacia B) y el contacto rebota 4 veces en promedio al llegar. ¿Cuántos flancos de bajada tiene el nodo S̄? ¿Y cuántos flancos de subida tiene Q?
Ver solución razonada
Cada llegada a A produce 1 + 4 = 5 flancos de bajada en S̄ (el primero más cuatro rebotes): 5 × 5 = 25, más algún flanco en las salidas de A. Q sube 5 veces (una por cada llegada a A). El contador conectado al pin cuenta 25 en lugar de 5.
4. El pull-up
Con 10 kΩ, ¿cuánta corriente y cuánta potencia se consumen mientras se aprieta un pulsador a 5 V? ¿Y con 100 kΩ? ¿Qué se pierde al agrandarla?
Ver solución
10 kΩ: I = 5 V / 10 kΩ = 0,5 mA y P = 5 V × 0,5 mA = 2,5 mW. 100 kΩ: 0,05 mA y 0,25 mW. A cambio, el nodo es más sensible al ruido y las fugas, y el flanco de subida al soltar es más lento porque la capacidad de entrada se carga a través de una resistencia mayor.
5. El latch D en acción
En el montaje 3, D = 1 y E se aprieta y se suelta. Después D pasa a 0 con E suelto, y se aprieta E otra vez. ¿Cuánto vale Q en cada momento? ¿Y qué pasa si D cambia mientras E está apretado?
Ver solución
Antes de apretar E: Q conserva el valor anterior. Al apretar con D = 1: Q = 1. Al soltar y poner D = 0: Q = 1 (retiene). Al apretar de nuevo con D = 0: Q = 0. Con E apretado, Q sigue a D (transparente) y con E suelto retiene el último.
6. Diagnóstico
Al armar el montaje 1, los dos LED están apagados, apretés lo que apretés. ¿Es un estado posible del latch? ¿Qué revisarías primero?
Ver solución razonada
No: en un latch de NAND, con entradas válidas, al menos una salida vale 1; ambas en 0 no es alcanzable. El problema no está en la lógica sino en lo eléctrico. Primero se mide Vcc entre los pines 14 y 7; después se revisa la masa, la polaridad de los LED y sus resistencias.
13 · Síntesis
Ideas para recordar
- Dos NAND de un 74HC00 realimentadas (pines 1 a 6) forman un latch con entradas activas en bajo; cada pulsador lleva su pull-up de 10 kΩ y las compuertas sobrantes van a masa.
- El latch retiene al soltar los pulsadores; arranca en un estado impredecible, y la combinación prohibida enciende los dos LED.
- Soltar las dos órdenes en orden hace el resultado determinado; soltarlas a la vez es una carrera.
- Un contacto mecánico rebota milisegundos; el multímetro no lo ve, un osciloscopio sí.
- Un conmutador SPDT con un latch entrega un cambio limpio por maniobra, sin constantes de tiempo, porque los rebotes repiten una orden idempotente.
- Cinco NAND (dos 74HC00) arman un latch D; en la práctica se usa un integrado.
- Depurar es ordenar: alimentación, entradas en reposo, una acción por vez, salidas complementarias y una lista de pruebas.
¿Listo para el tema 8?
Antes de avanzar, explicá cómo se conecta un latch de NAND a dos pulsadores, qué se espera de los dos LED en cada paso de la lista de pruebas y por qué el latch es indiferente a los rebotes. Si podés justificar las tres respuestas, ya podés pasar de capturar por nivel a capturar por flanco.
En el próximo tema veremos el flip-flop D: captura por flanco: la diferencia entre un latch transparente y un elemento que toma el dato en un solo instante, y cómo leer sus cronogramas.