01 · Punto de partida
Tres montajes que se apoyan uno en otro
Un contador de eventos tiene tres bloques en fila: la entrada (convierte una pulsación mecánica en un flanco limpio), el contador (suma un evento por flanco) y la salida (convierte los bits BCD en una imagen decimal legible). Cada montaje agrega uno de ellos y se prueba antes de pasar al siguiente.
| Montaje | Qué hace | Chips | Qué aprendés |
|---|---|---|---|
| 1. Entrada limpia y una década | Cuatro LED muestran en BCD cuántas veces se pulsó, de 0 a 9 | 74HC14 + 74HC160 | Filtro RC con Schmitt, flanco por pulsación, BCD |
| 2. Un dígito en el display | El número aparece como cifra de siete segmentos | + 74HC4511 | Decodificador BCD, LE, BI̅, LT̅, corriente por segmento |
| 3. Dos dígitos, reset y desborde | Cuenta de 00 a 99, vuelve a 00 y se borra con un botón | + 74HC160 + 74HC4511 | Cascada TC → CET, reset, indicador de 99 |
Como en los talleres anteriores, no hace falta tener los materiales: el código reproduce el filtro, el decodificador y la cascada, y el laboratorio simula el contador con un pulsador que rebota.
02 · Preparación
Materiales y herramientas
| Cant. | Componente | Para qué sirve |
|---|---|---|
| 1 | 74HC14 (seis inversores Schmitt) | Entrada del pulsador y arranque limpio del reset |
| 2 | 74HC160 (década BCD síncrona con clear asíncrono) | Unidades y decenas |
| 2 | 74HC4511 (decodificador BCD a siete segmentos con latch) | Un decodificador por dígito |
| 2 | Display de siete segmentos de cátodo común | Mostrar el número |
| 2 + 1 | Pulsadores normalmente abiertos | Evento a contar y reset |
| 1 + 1 | Resistencia de 100 kΩ y condensador de 100 nF | Filtro antirrebote del pulsador (τ = 10 ms) |
| 2 + 1 | Resistencia de 10 kΩ y condensador de 1 µF | Pull-up del reset y reset de encendido |
| 14 + 4 | Resistencias de 1 kΩ | Segmentos (14) y LED de prueba (4) |
| 4 a 5 | LED | Salidas BCD y aviso de 99 |
| 5 | Condensador de 100 nF | Desacople, uno por chip |
| 1 | Protoboard, cables y fuente regulada de 5 V | Montaje y alimentación |
Un osciloscopio muestra los rebotes y la acción del filtro de forma inmediata; con el multímetro se pueden comprobar las tensiones en reposo. Dibujá el esquema con los números de pin: el 4511 tiene las entradas y las salidas en patas que no siguen un orden evidente.
Antes de dar tensión
- Cada chip con su 100 nF entre alimentación y masa.
- Ninguna entrada al aire: en los 74HC160, las entradas de datos P0–P3 y las de habilitación van a un nivel fijo; en el 74HC14, los inversores sin usar tienen la entrada a masa.
- Cada segmento con su resistencia en serie; ningún segmento directo a una salida.
- El tipo de display (cátodo común o ánodo común) se comprueba con la hoja de datos: el 4511 maneja cátodo común.
03 · Los chips
74HC14, 74HC160 y 74HC4511
74HC14: inversores con histéresis
Seis inversores Schmitt en 14 patas: la entrada de cada uno es A y la salida Y. Los pares son (1, 2), (3, 4), (5, 6), (9, 8), (11, 10) y (13, 12); Vcc es el pin 14 y GND el pin 7. La histéresis (el inversor sube con una tensión de entrada y baja con otra menor) es lo que permite aceptar la subida lenta del condensador sin generar flancos múltiples.
74HC160: década BCD
| Pin | Nombre | Función | Pin | Nombre | Función |
|---|---|---|---|---|---|
| 1 | MR̅ | Clear asíncrono (activo en bajo) | 16 | Vcc | +5 V |
| 2 | CP | Reloj (flanco ↑) | 15 | TC | Acarreo: CET · Q0 · Q3 |
| 3–6 | P0–P3 | Datos de carga | 14–11 | Q0–Q3 | Salidas BCD |
| 7 | CEP | Habilitación (conteo) | 10 | CET | Habilitación (conteo y TC) |
| 8 | GND | Masa | 9 | PE̅ | Carga síncrona (activa en bajo) |
Los nombres CEP, CET y TC son los de Philips/NXP; Texas Instruments usa ENP, ENT y RCO (tema 18). Es el mismo chip del tema 19: cuenta 0 a 9. Para este taller se prefiere el 160 (y no el 162) por una razón práctica: su clear es asíncrono, así que un botón de reset funciona aunque no haya reloj.
74HC4511: BCD a siete segmentos
| Pin | Nombre | Función | Pin | Nombre | Función |
|---|---|---|---|---|---|
| 1 | B | Entrada BCD, bit 1 | 16 | VDD | +5 V |
| 2 | C | Entrada BCD, bit 2 | 15 | f | Segmento f |
| 3 | LT̅ | Prueba de lámparas (activo en bajo) | 14 | g | Segmento g |
| 4 | BI̅ | Apagado (activo en bajo) | 13 | a | Segmento a |
| 5 | LE | Latch: en alto, memoriza la entrada | 12 | b | Segmento b |
| 6 | D | Entrada BCD, bit 3 | 11 | c | Segmento c |
| 7 | A | Entrada BCD, bit 0 | 10 | d | Segmento d |
| 8 | VSS | Masa | 9 | e | Segmento e |
Las salidas son activas en alto (cátodo común). Para códigos BCD mayores que 1001 (los nibbles 1010 a 1111) el 4511 apaga todos los segmentos: es la señal visible de que el contador salió de la secuencia válida. Tiene tres controles:
| Control | Estado | Efecto |
|---|---|---|
| LT̅ = 0 | Prueba | Se encienden los siete segmentos, sin importar la entrada (muestra 8) |
| BI̅ = 0 | Apagado | Se apagan todos los segmentos; tiene prioridad sobre el dato |
| LE = 1 | Memoria | El decodificador memoriza el dígito presente y lo mantiene aunque la entrada cambie |
El control LE es un latch D del tema 6: con LE = 0 el chip es transparente; con LE = 1 retiene. Sirve para congelar la lectura mientras el contador sigue contando, algo muy útil en un instrumento.
04 · Montaje 1
Entrada limpia y una década
El pulsador se conecta entre la entrada del inversor y masa, con un pull-up de 100 kΩ y un condensador de 100 nF en paralelo. Al apretar, el contacto descarga el condensador casi al instante; al soltar, el condensador se carga lentamente a través de los 100 kΩ (τ = 100 kΩ · 100 nF = 10 ms). Los rebotes duran milisegundos, pero cada reapertura del contacto solo carga el condensador unas décimas de voltio, muy por debajo del umbral de la histéresis del Schmitt, así que no llegan a la salida.
| Chip y pin | Se conecta a |
|---|---|
| U1 pin 14 / pin 7 | +5 V / masa, con 100 nF entre ambos |
| Nodo del pulsador | 100 kΩ a +5 V, 100 nF a masa y pulsador a masa |
| U1 pin 1 (1A) | El nodo del pulsador |
| U1 pines 3, 5, 9, 11, 13 (entradas sobrantes) | Masa |
| U1 pin 2 (1Y) | U2 pin 2 (CP): el reloj; sube cuando se aprieta |
| U2 pin 16 / pin 8 | +5 V / masa, con 100 nF entre ambos |
| U2 pin 1 (MR̅) | +5 V (sin reset por ahora) |
| U2 pines 7 (CEP), 10 (CET), 9 (PE̅) | +5 V (conteo habilitado, sin carga) |
| U2 pines 3, 4, 5, 6 (P0–P3) | Masa (datos de carga sin usar) |
| U2 pines 14, 13, 12, 11 (Q0–Q3) | Cuatro LED con 1 kΩ a masa |
Pruebas
| Paso | Acción | LED Q3 Q2 Q1 Q0 | Qué se comprueba |
|---|---|---|---|
| 1 | Dar tensión | Cualquier valor ≤ 9, o mayor | Sin reset, el estado inicial es indefinido |
| 2 | Apretar el pulsador una vez | Aumenta en 1 | Un flanco por pulsación |
| 3 | Mantener apretado | Sin cambio | Cuenta flancos, no niveles |
| 4 | Soltar | Sin cambio | La suelta no cuenta (el inversor baja) |
| 5 | Apretar diez veces seguidas | Vuelve al valor inicial | Módulo 10: pasa de 1001 a 0000 |
| 6 | Retirar el condensador y apretar varias veces | Saltos irregulares | Con rebotes, la cuenta no coincide con las pulsaciones |
El paso 6 es el experimento que justifica el montaje: sin el filtro, cada rebote es un evento más. Con el osciloscopio en el nodo se ve la subida lenta del condensador a la suelta y el pulso corto, limpio, de la salida del Schmitt.
05 · Montaje 2
Un dígito en el display
El 74HC4511 traduce los cuatro bits BCD en las señales de los siete segmentos. Las salidas Q de la década van a las entradas A, B, C y D del decodificador, y cada segmento, con su resistencia, a la pata correspondiente del display de cátodo común.
| Conexión | Función |
|---|---|
| U3 pin 16 / pin 8 | +5 V / masa, con 100 nF entre ambos |
| U2 pin 14 (Q0) → U3 pin 7 (A) | Bit 0 del dígito |
| U2 pin 13 (Q1) → U3 pin 1 (B) | Bit 1 |
| U2 pin 12 (Q2) → U3 pin 2 (C) | Bit 2 |
| U2 pin 11 (Q3) → U3 pin 6 (D) | Bit 3 |
| U3 pin 3 (LT̅) y pin 4 (BI̅) | +5 V (inactivos) |
| U3 pin 5 (LE) | Masa (transparente); más adelante, un interruptor |
| U3 pines 13, 12, 11, 10, 9, 15, 14 (a a g) | Cada uno con 1 kΩ a la pata del segmento del display |
| Común del display | Masa |
Pruebas
- Secuencia: cada pulsación avanza el dígito 0, 1, 2 … 9, 0. Los LED de Q3..Q0 pueden quedar como referencia.
- LT̅ a masa: se enciende el 8 completo (todos los segmentos), sea cual sea el contador. Es la prueba rápida del display y del cableado.
- BI̅ a masa: el display se apaga; al soltarlo, el dígito reaparece.
- LE a +5 V: el display se congela en el dígito actual; los LED siguen contando. Al volver LE a masa, el display salta al valor real.
- Código inválido: si se logra un estado 1010 a 1111 (por ejemplo, cargando datos con PE̅), el display queda en blanco.
Observá que los segmentos corresponden a patrones fijos: el 1 enciende solo b y c; el 7, a, b y c; el 8, los siete; y los dígitos 0, 1 y 7 son los únicos que no usan el segmento g. Eso permite diagnosticar a simple vista un segmento defectuoso (sección 7).
06 · Montaje 3
Dos dígitos, reset y desborde
Se duplica el bloque contador-decodificador-display y se encadenan las décadas como en el tema 19: el TC de las unidades habilita (CET) a las decenas, y el reloj es común. Un único reset borra ambas décadas.
| Conexión | Función |
|---|---|
| U2 pin 15 (TC) → U4 pin 10 (CET) | Las decenas avanzan solo cuando las unidades están en 9 |
| U4 pin 7 (CEP), pin 9 (PE̅) | +5 V |
| U1 pin 2 → U4 pin 2 (CP) | Mismo reloj para las dos décadas |
| U4 pines 3–6 (P0–P3) | Masa |
| U4 pines 14, 13, 12, 11 (Q0–Q3) → U5 pines 7, 1, 2, 6 (A, B, C, D) | Las decenas, al segundo decodificador |
| U5 pin 16 / 8 con 100 nF; pines 3 y 4 a +5 V | Alimentación e inactivos LT̅ y BI̅ |
| U5 pines 13, 12, 11, 10, 9, 15, 14 → 1 kΩ → segmentos | Segundo display (cátodo a masa) |
| U3 pin 5 (LE) ↔ U5 pin 5 (LE) | Un solo control para congelar ambos dígitos |
| U2 pin 1 (MR̅) ↔ U4 pin 1 (MR̅) | Reset común |
| Nodo MR̅ | 10 kΩ a +5 V, pulsador a masa y 1 µF a masa (reset de encendido) |
| U4 pin 15 (TC) → LED con 1 kΩ | Se enciende solo en 99 (aviso de desborde) |
Al encender, el condensador de 1 µF está descargado: el nodo de MR̅ vale 0 V y sube con τ = 10 kΩ · 1 µF = 10 ms. Durante esos primeros milisegundos MR̅ está en bajo y las dos décadas quedan en 00. Con el pulsador de reset se repite el borrado a mano. Para un flanco de subida más limpio se puede pasar la señal por dos inversores libres del 74HC14, como en el tema 10.
Pruebas
- Encendido: el display arranca en 00 todas las veces (probá diez encendidos seguidos).
- Cuenta: contando de 0 a 10 la cifra de las decenas pasa de 0 a 1 exactamente cuando las unidades vuelven a 0.
- Desborde: el LED de TC de las decenas se enciende en 99, y al pulsar una vez más vuelve a 00.
- Reset: con el contador en un valor cualquiera, el pulsador de reset lo lleva a 00 sin reloj.
- Congelado: con LE en alto, los dos dígitos permanecen fijos mientras se sigue pulsando; al bajar LE, aparecen los dígitos reales.
- Prueba larga: pulsar 100 veces, contando con las manos; el display debe volver a mostrar el valor de partida.
07 · Cuando no funciona
Corrientes, fallas y método
Corriente de los segmentos
Cada segmento es un LED. Con 1 kΩ en serie y unos 2 V de caída, circulan alrededor de (5 − 2) / 1 kΩ = 3 mA por segmento; el dígito 8 (siete segmentos) toma unos 21 mA, y los dos dígitos en 88 unos 42 mA. Las salidas del 74HC4511 son menos robustas que las del clásico CD4511B, así que conviene empezar con 1 kΩ y verificar los límites en la hoja de datos antes de bajar la resistencia (por ejemplo, a 330 Ω) para ganar brillo.
| Síntoma | Causa probable | Cómo comprobarlo |
|---|---|---|
| La cuenta avanza de a dos o más por pulsación | Falta el condensador o el Schmitt; rebotes en el reloj | Mirar el nodo con el osciloscopio; reponer el RC |
| Cuenta sin que nadie pulse | Entrada del 74HC14 al aire o nodo mal conectado | Medir el nodo: 5 V en reposo |
| El display muestra siempre 8 | LT̅ a masa | Medir el pin 3 (debe estar en 5 V) |
| El display está apagado | BI̅ a masa, o el display es de ánodo común | Medir pin 4 (5 V); revisar el tipo de display |
| El display no sigue a la cuenta | LE en alto | Medir pin 5 (debe estar en 0 V) |
| Dígitos 0, 1 y 7 bien; el resto incompleto | Falta el segmento g (resistencia o cable abierto) | Seguir el pin 14 del 4511 hasta el display |
| Los dígitos aparecen invertidos (8 se ve como vacío) | Display de ánodo común con un 4511 de cátodo común | Comprobar la hoja de datos del display |
| Las decenas avanzan en cada pulsación | CET de las decenas atado a +5 V en vez de a TC | Revisar el cable pin 15 → pin 10 |
| Las decenas nunca avanzan | TC no llega a CET, o CET a masa | Medir TC: debe subir en 9 |
| Arranca en cualquier número | Reset de encendido no funciona | Medir MR̅ al encender: debe estar en bajo unos ms |
| Segmentos muy débiles | Resistencias demasiado altas o display de bajo brillo | Medir la corriente; probar 680 Ω |
Armar por etapas
- Alimentación primero: Vcc, GND y el 100 nF en cada chip.
- La entrada sola: medir el nodo del pulsador y la salida del Schmitt antes de conectar el contador.
- Un dígito con LED: probar el contador de década con los cuatro LED antes del decodificador.
- El decodificador con LT̅, BI̅ y LE: comprobar los tres controles antes de confiar en la lectura.
- Después, la cascada: con la segunda década, probar el paso de 09 a 10.
- Cambiar una sola cosa a la vez y comparar la secuencia observada con la esperada.
08 · El taller en código
Filtrar, decodificar, contar y medir
Los bloques reproducen el filtro RC con Schmitt sobre una pulsación con rebotes, generan el código de siete segmentos de cada dígito, simulan la cascada de dos décadas con el control de congelado y comparan la cuenta con y sin filtro.
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 filtro RC con Schmitt frente a los rebotes
# Pulsador con pull-up de 100 kΩ y condensador de 100 nF; un inversor Schmitt (74HC14) detrás.
R, C = 100e3, 100e-9
tau = R * C
VCC, VT_ALTA, VT_BAJA = 5.0, 2.7, 1.8
dt = 0.1e-3 # paso de 0,1 ms
# Contacto: 1 = cerrado (a masa). Se aprieta en t = 10 ms con rebotes, se suelta en t = 100 ms con rebotes.
def contacto(t):
ms = t * 1e3
rebote_apretar = [(10.0, 10.4), (10.8, 11.1), (11.6, 12.0), (12.3, 12.5)] # tramos abiertos
rebote_soltar = [(100.0, 100.3), (100.7, 100.9), (101.5, 101.6)] # tramos cerrados
if ms < 10.0:
return 0
if ms < 100.0:
return 0 if any(a <= ms < b for a, b in rebote_apretar) else 1
if ms < 102.0:
return 1 if any(a <= ms < b for a, b in rebote_soltar) else 0
return 0
vc, salida, t = VCC, 0, 0.0 # salida del Schmitt (inversor): alta cuando la entrada está baja
crudo_prev, flancos_crudos, flancos_filtro, vmax_rebote = 0, 0, 0, 0.0
salida = 0
while t < 0.15:
cerrado = contacto(t)
vc = 0.0 if cerrado else vc + (VCC - vc) * dt / tau
# Schmitt inversor: la salida sube cuando vc baja de VT_BAJA y baja cuando vc supera VT_ALTA
if salida == 0 and vc < VT_BAJA:
salida = 1
flancos_filtro += 1
print(f" t = {t * 1e3:6.1f} ms: salida del 74HC14 sube (evento contado)")
elif salida == 1 and vc > VT_ALTA:
salida = 0
print(f" t = {t * 1e3:6.1f} ms: salida del 74HC14 baja (soltó)")
if 0.0105 < t < 0.020: # desde el primer cierre hasta que el contacto se estabiliza
vmax_rebote = max(vmax_rebote, vc)
if cerrado and not crudo_prev:
flancos_crudos += 1
crudo_prev = cerrado
t += dt
print(f"tau = {tau * 1e3:.0f} ms; el condensador sube como máximo {vmax_rebote:.2f} V durante los rebotes de la pulsación (umbral de bajada del Schmitt: {VT_BAJA} V)")
print(f"cierres del contacto (4 al apretar y 2 al soltar): {flancos_crudos}")
print(f"flancos ascendentes a la salida filtrada: {flancos_filtro}")
print(f"tiempo hasta que el Schmitt detecta la suelta: {-tau * __import__('math').log(1 - VT_ALTA / VCC) * 1e3:.1f} ms")
El contacto cierra seis veces (cuatro al apretar y dos al soltar), pero la salida del Schmitt sube una sola vez, a los 10,5 ms. Durante los rebotes de la pulsación el condensador sube como máximo 0,20 V, lejos del umbral de 1,8 V. La salida baja recién a los 109,3 ms, unos 7,8 ms después del último rebote de la suelta. Cambiá R o C a la mitad y mirá cómo se acorta ese tiempo.
Paso 2: el código de siete segmentos
SEGMENTOS = { # a b c d e f g (cátodo común: 1 = encendido)
0: "1111110", 1: "0110000", 2: "1101101", 3: "1111001", 4: "0110011",
5: "1011011", 6: "1011111", 7: "1110000", 8: "1111111", 9: "1111011",
}
def dibujar(numero):
d1, d2 = f"{numero:02d}"
filas = ["", "", "", "", ""]
for d in (d1, d2):
a, b, c, dd, e, f, g = (s == "1" for s in SEGMENTOS[int(d)])
filas[0] += " " + ("_" if a else " ") + " "
filas[1] += ("|" if f else " ") + ("_" if g else " ") + ("|" if b else " ") + " "
filas[2] += ("|" if e else " ") + ("_" if dd else " ") + ("|" if c else " ") + " "
return "\n".join(filas[:3])
print("código de 7 segmentos (a b c d e f g) por dígito:")
for dig, cod in SEGMENTOS.items():
print(f" {dig}: {cod} ({cod.count('1')} segmentos)")
print()
print(dibujar(47))
print()
print(dibujar(80))
print()
total = sum(cod.count("1") for cod in SEGMENTOS.values())
print(f"promedio de segmentos encendidos por dígito: {total / 10:.1f}")
print(f"corriente a 5 mA por segmento: máximo {7 * 5} mA por dígito (el 8), unos {total / 10 * 5:.1f} mA en promedio")
La tabla muestra el patrón a b c d e f g de cada dígito; solo 0, 1 y 7 tienen el segmento g apagado, y el 8 enciende los siete. El dibujo en texto compone 47 y 80 con esos patrones. En promedio un dígito enciende 4,9 segmentos, así que a 5 mA por segmento el consumo medio ronda los 24,5 mA y el máximo (el 8) llega a 35 mA por dígito. Cambiá el número que se dibuja.
Paso 3: dos décadas, display y congelado
class Decada:
def __init__(self):
self.q = 0
def rco(self, ent):
return int(ent and self.q == 9)
def flanco(self, ent=1):
if ent:
self.q = (self.q + 1) % 10
class Visor:
"""Dos décadas en cascada y un decodificador con latch (LE) delante del display."""
def __init__(self):
self.u, self.d = Decada(), Decada()
self.le = 0
self.mostrado = 0
self.desbordes = 0
def evento(self):
ent_d = self.u.rco(1)
desborda = self.d.rco(ent_d)
self.d.flanco(ent_d)
self.u.flanco(1)
if desborda:
self.desbordes += 1
if not self.le: # LE = 1 congela lo que muestra el display
self.mostrado = self.d.q * 10 + self.u.q
@property
def cuenta(self):
return self.d.q * 10 + self.u.q
v = Visor()
for k in range(1, 131):
if k == 40:
v.le = 1 # congelo el display
if k == 46:
v.le = 0
v.mostrado = v.cuenta # al soltar LE se actualiza
v.evento()
if k in (9, 10, 39, 40, 41, 45, 46, 99, 100, 101, 130):
print(f"evento {k:3d}: contador {v.cuenta:02d} display {v.mostrado:02d} desbordes {v.desbordes}")
Hasta el evento 39 el display sigue al contador. En el 40 se activa LE: el contador pasa a 40, 41 … 45 pero el display queda en 39. Al soltar LE en el 46 el display salta al valor real. En el evento 100 el contador desborda a 00 (un desborde) y sigue 01 … hasta 30 en el evento 130. Es el comportamiento del 4511 con su latch interno.
Paso 4: con y sin filtro
import random
rnd = random.Random(3)
PULSACIONES = 50
def flancos_por_pulsacion(max_rebotes):
return 1 + rnd.randint(0, max_rebotes)
def contar(max_rebotes, con_filtro):
cuenta, flancos_total = 0, 0
for _ in range(PULSACIONES):
f = flancos_por_pulsacion(max_rebotes)
flancos_total += f
cuenta = (cuenta + (1 if con_filtro else f)) % 100
return cuenta, flancos_total
esperado = PULSACIONES % 100
print(f"{PULSACIONES} pulsaciones reales; el display debería mostrar {esperado:02d}")
print("rebotes máx. sin filtro (cuenta, flancos) con filtro RC (cuenta)")
for m in (0, 1, 3, 6):
sin, fl = contar(m, False)
con, _ = contar(m, True)
print(f"{m:6d} {sin:02d} ({fl:3d} flancos) {con:02d}")
print()
tau = 10e-3
import math
t_suelta = -tau * math.log(1 - 2.7 / 5)
print(f"el filtro tarda {t_suelta * 1e3:.1f} ms en dar por soltado el pulsador")
print(f"frecuencia máxima de pulsaciones contables ≈ {1 / (2 * t_suelta):.0f} por segundo (muy por encima de cualquier mano)")
Sin rebotes, la cuenta es exacta con o sin filtro (50). Con hasta 1 rebote por pulsación entran 80 flancos y el display mostraría 80; con hasta 3, 114 flancos y 14; con hasta 6, 202 flancos y 02. Con el filtro, la cuenta es siempre 50. Notá que con 1 rebote máximo el resultado «80» tiene aspecto razonable: el error no se nota a simple vista, lo que lo hace más peligroso. El filtro limita la velocidad máxima a unas 64 pulsaciones por segundo, una cifra enorme para un dedo.
Los cuatro bloques cubren los tres lados del taller (entrada, visualización y cuenta) y dejan claro dónde está el verdadero riesgo: la entrada mecánica.
09 · Exploración interactiva
El banco de pruebas
El simulador reproduce el contador de eventos de dos cifras. «Pulsar» da una pulsación: con el pulsador directo, el contador recibe un flanco por la pulsación más una cantidad aleatoria de rebotes (hasta el máximo elegido); con el filtro RC y Schmitt activado, siempre uno. Los displays muestran el valor del decodificador, que se puede congelar con LE, apagar con BI̅ o probar con LT̅. El panel compara la cuenta con el número real de pulsaciones.
Contador de eventos 00–99
Contador en 00 con pulsador directo. Presioná «Pulsar» y comprobá si la cuenta coincide con las pulsaciones.
| N.º | Flancos recibidos | Cuenta | Display | Esperada | ¿Coincide? |
|---|---|---|---|---|---|
| Sin pulsaciones registradas. | |||||
Recorrido guiado
- Con el filtro desactivado y 3 rebotes extra máximos, presioná «Pulsar» varias veces: la cuenta salta y casi nunca coincide con las pulsaciones reales. «Flancos de la última pulsación» muestra cuántos flancos entraron.
- Bajá los rebotes extra a 0 y repetí: el pulsador se porta como uno ideal y la cuenta coincide. Es el caso optimista que no existe en la realidad.
- Marcá el filtro RC + Schmitt y presioná «10 pulsaciones»: la cuenta es exactamente 10 y «Flancos acumulados» coincide con las pulsaciones.
- Con el filtro, presioná «10 pulsaciones» varias veces hasta pasar el 99: la cuenta vuelve a 00 y «Desbordes» sube a 1. El display lo muestra como 00, 01, 02 …
- Marcá LE = 1 y presioná «Pulsar» cinco veces: el contador avanza pero el display permanece fijo. Desmarcá LE: el display salta al valor real.
- Marcá BI̅ = 0: el display se apaga pero el contador sigue sumando; al desmarcar, el valor reaparece.
- Marcá LT̅ = 0: ambos dígitos muestran 88, sea cual sea la cuenta. Es la prueba de segmentos.
- Presioná «Reset (MR̅)»: la cuenta vuelve a 00 sin ningún flanco. Compará con el contador del tema 19, donde el clear síncrono necesitaba reloj.
Desafío: encontrar un error que parece correcto
Sin filtro y con rebotes extra = 1, a veces la cuenta coincide con las pulsaciones aunque cada pulsación haya contado dos: ocurre cuando el error acumulado da una vuelta completa de 100. Con 50 pulsaciones y todas con 1 rebote, la cuenta mostrada sería 100 mod 100 = 00, un valor que no se parece a 50. La conclusión es que una cuenta «bien» aislada no demuestra que el contador sea confiable: hay que contrastar con un número de eventos conocido y repetir.
10 · Comprensión
Confusiones frecuentes
«Un condensador en paralelo con el pulsador basta, sin el Schmitt»
El condensador suaviza la señal, pero una entrada CMOS normal puede oscilar o consumir de más al atravesar su zona intermedia despacio. El Schmitt convierte la rampa lenta en un flanco limpio.
«Los rebotes se arreglan contando solo el primero por software»
Se puede, pero es otra solución: aquí lo resuelve el hardware. En cualquier caso, un contador digital que reciba los rebotes los cuenta.
«El display no cambia, entonces el contador no cuenta»
Puede que LE esté en alto o BI̅ en bajo. Los LED de Q3..Q0 o la salida TC confirman la cuenta sin el decodificador.
«El 4511 muestra cualquier número de cuatro bits»
Solo 0 a 9. Para los códigos 1010 a 1111 apaga el display. Eso sirve de alerta de que el contador salió del rango BCD.
«Con una década por dígito alcanza con unir los Q de todas»
Cada década necesita su propio decodificador, y la segunda debe habilitarse con el TC de la primera. Compartir señales no cuenta decenas.
«El reset de encendido es innecesario: el contador arranca en cero»
Los flip-flops arrancan en un estado indefinido. Sin reset, el display puede mostrar cualquier número, o nada si arrancó en un código mayor que 9.
«El TC avisa cuando se desborda a 00»
El TC de las decenas sube en 99, antes del desborde. En el flanco siguiente el contador pasa a 00; el aviso es anticipado, no posterior.
«Si la cuenta coincide en una prueba corta, el montaje está bien»
Un rebote aislado puede no aparecer en diez pulsaciones. Conviene probar con cien o más y comparar el resultado con un recuento hecho a mano.
11 · Práctica guiada
Predecí antes de armar
1. Constante de tiempo
Se usa 47 kΩ y 100 nF en la entrada. ¿Cuánto vale τ y cuánto tarda el nodo en llegar a 2,7 V (umbral de subida del Schmitt) tras soltar el pulsador?
Ver solución
τ = 47 kΩ · 100 nF = 4,7 ms. El nodo sube como 5 · (1 − e−t/τ) y alcanza 2,7 V en t = −τ · ln(1 − 2,7/5) ≈ 0,777 · 4,7 ms ≈ 3,65 ms. Sigue siendo mucho más largo que un rebote típico de menos de 1 ms.
2. Qué segmentos
La década está en 0111 (7). ¿Qué entradas D C B A recibe el 4511 y qué segmentos se encienden?
Ver solución
D C B A = 0 1 1 1 (D = Q3 = 0, C = Q2 = 1, B = Q1 = 1, A = Q0 = 1). Se encienden los segmentos a, b y c (en la convención de este curso); d, e, f y g quedan apagados.
3. Corriente de dos dígitos
Con resistencias de 1 kΩ y 2 V de caída en cada segmento, ¿cuánto consume el display mostrando 88 y 11?
Ver solución
Cada segmento toma (5 − 2) / 1 kΩ = 3 mA. En 88 hay 14 segmentos encendidos: 42 mA. En 11 hay 4 segmentos (b y c de cada dígito): 12 mA.
4. Desbordes
Se aprietan 250 veces el pulsador desde 00 (con filtro). ¿Qué muestra el display y cuántas veces pasó de 99 a 00?
Ver solución
250 mod 100 = 50: el display muestra 50. Pasó de 99 a 00 en las pulsaciones 100 y 200, es decir 2 veces.
5. Congelar y liberar
El contador está en 37 y se pone LE = 1. Llegan 5 pulsaciones más y después LE = 0. ¿Qué muestra el display en cada momento?
Ver solución
Con LE = 1 y las 5 pulsaciones, el contador llega a 42 pero el display queda en 37 (el latch retiene el dígito que estaba). Al poner LE = 0, el decodificador vuelve a ser transparente y muestra 42.
6. Diagnóstico
Los dígitos 0, 1 y 7 se ven perfectos y los demás aparecen incompletos, siempre con el segmento del medio apagado. ¿Qué falla y cómo se confirma?
Ver solución razonada
Los únicos dígitos que no usan el segmento g (el central) son 0, 1 y 7; todos los demás sí. Falla la rama del segmento g: la resistencia, el cable al pin 14 del 4511 o la pata del display. Se confirma poniendo LT̅ a masa (el 8 aparecería sin la barra central) y midiendo el pin 14 con un dígito que lleva g.
12 · Síntesis
Ideas para recordar
- Un contador de eventos tiene tres bloques: entrada limpia, contador y visualización. Se arman y prueban en ese orden.
- Un pulsador sin filtro produce varios flancos por pulsación; un condensador de 100 nF con 100 kΩ y un inversor Schmitt dan un flanco limpio (τ = 10 ms).
- Las décadas 74HC160 cuentan 0 a 9 y se encadenan con TC → CET y reloj común; el clear asíncrono permite un reset sin reloj.
- El 74HC4511 convierte BCD en siete segmentos de cátodo común y apaga el display ante códigos mayores que 9.
- LE memoriza el dígito (congela la lectura), BI̅ apaga el display y LT̅ enciende todos los segmentos como prueba.
- Cada segmento necesita su resistencia; con 1 kΩ circulan unos 3 mA y un 8 consume unos 21 mA.
- Un reset de encendido (RC sobre MR̅) garantiza el 00 inicial; sin él, el arranque es aleatorio.
- Una cuenta que coincide en una prueba corta no demuestra que el contador sea confiable: hay que probar con muchas pulsaciones y comparar.
¿Listo para el tema 21?
Antes de avanzar, explicá de memoria por qué el filtro necesita un Schmitt, cómo habilita la década de las decenas a la de las unidades y qué hacen LE, BI̅ y LT̅. Si podés justificar las tres respuestas, ya podés pasar de contar a recorrer secuencias.
En el próximo tema veremos los contadores en anillo y Johnson: registros de desplazamiento realimentados que recorren secuencias repetitivas y activan sus salidas en orden, sin decodificador.