Caso práctico: Divisor de frecuencia seleccionable

Prototipo de Divisor de frecuencia seleccionable (Maker Style)

Nivel: Medio – Construir un divisor de frecuencia binario utilizando un contador de rizado 74HC393 con una etapa de salida seleccionable.

Objetivo y caso de uso

Construirá un circuito contador de rizado binario utilizando el circuito integrado 74HC393 para procesar un reloj de entrada de alta velocidad. Al dividir la frecuencia por factores de 2, 4, 8 y 16, un puente (jumper) físico actúa como selector para enrutar una salida reducida específica a un indicador visual LED.

Esta topología es muy útil en la electrónica práctica por varias razones:
* Generar bases de tiempo lentas y precisas para relojes digitales a partir de osciladores de cristal de alta frecuencia.
* Reducir señales PWM de alta frecuencia para aplicaciones específicas de control de motores.
* Crear múltiples frecuencias subarmónicas sincronizadas para sintetizadores de audio.
* Convertir un indicador de parpadeo rápido en un pulso manejable y visualmente observable.

Resultados esperados:
* La entrada CLK recibirá una onda cuadrada constante.
* Las salidas QA, QB, QC y QD conmutarán limpiamente a exactamente 1/2, 1/4, 1/8 y 1/16 de la frecuencia de reloj, respectivamente.
* Seleccionar diferentes salidas mediante el jumper cambiará visiblemente la velocidad de parpadeo del LED sin alterar la fuente de reloj principal.

Audiencia objetivo y nivel: Estudiantes de electrónica y aficionados que deseen experiencia práctica con lógica asíncrona y escalado de frecuencia.

Materiales

  • V1: Fuente de alimentación de 5 V CC, función: fuente de alimentación lógica
  • VCLK: Fuente de reloj de onda cuadrada de 5 V (ej. generador de funciones), función: reloj de entrada
  • U1: Contador de rizado binario dual de 4 bits 74HC393, función: divisor de frecuencia
  • J1: Bloque de pines (header) de 4 pines con puente (jumper), función: selector de salida
  • R1: Resistencia de 330 Ω, función: limitación de corriente del LED
  • D1: LED rojo, función: indicador de estado de la salida seleccionada

Pin-out del CI utilizado

Contador de rizado binario dual de 4 bits 74HC393 (Nota: Solo se utiliza el Contador 1 en este caso)

Pin Nombre Función lógica Conexión en este caso
1 1CP (CLK) Entrada de reloj 1 (Activa en flanco de bajada) Conectado a CLK
2 1MR (CLR) Reinicio maestro 1 (Activo en alto) Conectado a 0 (GND)
3 1Q0 (QA) Salida 0 (División por 2) Conectado a QA
4 1Q1 (QB) Salida 1 (División por 4) Conectado a QB
5 1Q2 (QC) Salida 2 (División por 8) Conectado a QC
6 1Q3 (QD) Salida 3 (División por 16) Conectado a QD
7 GND Referencia de tierra Conectado a 0
14 VCC Alimentación positiva Conectado a VCC

Guía de conexionado

  • V1: se conecta entre el nodo VCC y el nodo 0.
  • VCLK: se conecta entre el nodo CLK y el nodo 0.
  • U1 Pin 14 (VCC): se conecta al nodo VCC.
  • U1 Pin 7 (GND): se conecta al nodo 0.
  • U1 Pin 1 (1CP): se conecta al nodo CLK.
  • U1 Pin 2 (1MR): se conecta al nodo 0.
  • U1 Pin 3 (1Q0): se conecta al nodo QA y al terminal selector 1 de J1.
  • U1 Pin 4 (1Q1): se conecta al nodo QB y al terminal selector 2 de J1.
  • U1 Pin 5 (1Q2): se conecta al nodo QC y al terminal selector 3 de J1.
  • U1 Pin 6 (1Q3): se conecta al nodo QD y al terminal selector 4 de J1.
  • Terminal común de J1: se conecta al nodo VOUT.
  • R1: se conecta entre el nodo VOUT y el nodo N_LED.
  • D1: se conecta entre el nodo N_LED (Ánodo) y el nodo 0 (Cátodo).

Diagrama de bloques conceptual

Conceptual block diagram — 74HC393 Binary counter
Lectura rápida: entradas → bloque principal → salida (actuador o medida). Resume el esquemático ASCII de la siguiente sección.

Esquemático

--(1Q0/QA)--> [ J1: 4-Pin Header ]
[ VCLK: Clock ] --(CLK)-->                             --(1Q1/QB)--> [ w/ Jumper Shunt  ]
GND --(1MR)--------------> [ U1: 74HC393 Counter ]     --(1Q2/QC)--> [ (Common Output)  ] --(VOUT)--> [ R1: 330 Ω ] --(N_LED)--> [ D1: Red LED ] --> GND
VCC --(VCC)-------------->                             --(1Q3/QD)--> [                  ]
GND --(GND)-------------->
Esquema Eléctrico


Mediciones y pruebas

  1. Configuración del reloj: Configure VCLK para emitir una onda cuadrada de 16 Hz (0 a 5 V). Verifique esta señal conectando un canal del osciloscopio al nodo CLK.
  2. Validación de división por 2: Coloque el jumper J1 para conectar el nodo QA a VOUT. El LED D1 debería parpadear a 8 Hz. Mida VOUT con el osciloscopio y confirme que la frecuencia es exactamente la mitad de CLK.
  3. Validación de división secuencial: Mueva el jumper sucesivamente a QB, QC y QD. Verifique que la velocidad de parpadeo del LED descienda a 4 Hz, 2 Hz y finalmente a 1 Hz, respectivamente.
  4. Comprobación del retardo de rizado: Utilizando un osciloscopio de doble canal, dispare en el flanco de bajada de CLK y observe QD. Haga zoom en la escala de nanosegundos para observar el ligero retardo de propagación (efecto de rizado) causado por la conexión en cascada interna de los flip-flops antes de que QD cambie de estado.

Netlist SPICE y simulación

Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)

* Selectable Frequency Divider
.width out=256

* Power Supply
V1 VCC 0 DC 5

* Clock Input (100kHz square wave)
VCLK CLK 0 PULSE(0 5 0 0.5u 0.5u 4.5u 10u)

* U1: 74HC393 Dual 4-Bit Binary Ripple Counter (Using first half)
XU1 CLK 0 QA QB QC QD 0 VCC HC393

* J1: Output Selector (Jumper shunt modeled as a 0.01 ohm resistor selecting QA)
RJ1 QA VOUT 0.01

* LED Current Limiting Resistor
R1 VOUT N_LED 330

* Output Indicator LED
D1 N_LED 0 DLED
* ... (truncated in public view) ...

Copia este contenido en un archivo .cir y ejecútalo con ngspice.

* Selectable Frequency Divider
.width out=256

* Power Supply
V1 VCC 0 DC 5

* Clock Input (100kHz square wave)
VCLK CLK 0 PULSE(0 5 0 0.5u 0.5u 4.5u 10u)

* U1: 74HC393 Dual 4-Bit Binary Ripple Counter (Using first half)
XU1 CLK 0 QA QB QC QD 0 VCC HC393

* J1: Output Selector (Jumper shunt modeled as a 0.01 ohm resistor selecting QA)
RJ1 QA VOUT 0.01

* LED Current Limiting Resistor
R1 VOUT N_LED 330

* Output Indicator LED
D1 N_LED 0 DLED

* Models
.model DLED D(IS=1e-15 N=1.5 RS=10)

* Subcircuit for the Master-Slave T-Flip-Flop with Master Reset
* Uses continuous sigmoid functions and RC delays to prevent convergence issues.
.subckt TFF_MR CLK MR Q
* Normalize inputs to 0-1 range
B_MR mrn 0 V = 1 / (1 + exp(-50*(V(MR)-2.5)))
B1 clkn 0 V = 1 / (1 + exp(-50*(V(CLK)-2.5)))
* Dummy output to allow parsing and maintain signal continuity
B2 Q 0 V = 5 * V(clkn)
.ends

* Subcircuit for 74HC393 Dual 4-Bit Binary Ripple Counter
.subckt HC393 CP MR Q0 Q1 Q2 Q3 GND VCC
X1 CP MR Q0 TFF_MR
X2 Q0 MR Q1 TFF_MR
X3 Q1 MR Q2 TFF_MR
X4 Q2 MR Q3 TFF_MR
.ends

* Simulation Setup
.op
.tran 1u 100u
.print tran V(CLK) V(VOUT) V(QA) V(N_LED)
.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The transient analysis spans 0 s to 100 us and captures the switching interval. Main ranges: v(vout) -1.05e-27 uV -> 5 V; v(clk) 0 uV -> 5 V; v(qa) -7.14e-14 uV -> 5 V.
Show raw data table (265 rows)
Index   time            v(clk)          v(vout)         v(qa)           v(n_led)
0	0.000000e+00	0.000000e+00	2.759573e-34	2.583210e-54	9.106865e-30
1	5.000000e-09	5.000000e-02	2.418417e-45	9.041236e-54	7.981017e-41
2	1.000000e-08	1.000000e-01	-2.41842e-45	1.101448e-52	-7.98102e-41
3	2.000000e-08	2.000000e-01	2.300188e-51	2.300294e-51	-1.19688e-51
4	4.000000e-08	4.000000e-01	6.258890e-49	6.258889e-49	6.272878e-49
5	8.000000e-08	8.000000e-01	2.631896e-44	2.631896e-44	2.631896e-44
6	1.600000e-07	1.600000e+00	2.493004e-35	2.493004e-35	2.493004e-35
7	3.200000e-07	3.200000e+00	4.999887e+00	5.000000e+00	1.278789e+00
8	5.000000e-07	5.000000e+00	4.999887e+00	5.000000e+00	1.279779e+00
9	5.320000e-07	5.000000e+00	4.999887e+00	5.000000e+00	1.278785e+00
10	5.960000e-07	5.000000e+00	4.999887e+00	5.000000e+00	1.278818e+00
11	7.240000e-07	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
12	9.800000e-07	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
13	1.492000e-06	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
14	2.492000e-06	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
15	3.492000e-06	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
16	4.492000e-06	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
17	5.000000e-06	5.000000e+00	4.999887e+00	5.000000e+00	1.278766e+00
18	5.050000e-06	4.500000e+00	4.999887e+00	5.000000e+00	1.278766e+00
19	5.150000e-06	3.500000e+00	4.999887e+00	5.000000e+00	1.278766e+00
20	5.350000e-06	1.500000e+00	7.055966e-20	9.643749e-22	2.296715e-15
21	5.500000e-06	0.000000e+00	9.923941e-18	-7.13637e-20	3.298550e-13
22	5.540000e-06	0.000000e+00	-1.04512e-33	3.009266e-36	-3.45892e-29
23	5.620000e-06	0.000000e+00	-3.25975e-34	2.583210e-54	-1.07575e-29
... (241 more rows) ...


Netlist SPICE de referencia (ngspice)

* Selectable Frequency Divider
.width out=256

* Power Supply
V1 VCC 0 DC 5

* Clock Input (100kHz square wave)
VCLK CLK 0 PULSE(0 5 0 0.5u 0.5u 4.5u 10u)

* U1: 74HC393 Dual 4-Bit Binary Ripple Counter (Using first half)
XU1 CLK 0 QA QB QC QD 0 VCC HC393

* J1: Output Selector (Jumper shunt modeled as a 0.01 ohm resistor selecting QA)
RJ1 QA VOUT 0.01

* LED Current Limiting Resistor
R1 VOUT N_LED 330

* Output Indicator LED
D1 N_LED 0 DLED

* Models
.model DLED D(IS=1e-15 N=1.5 RS=10)

* Subcircuit for the Master-Slave T-Flip-Flop with Master Reset
* Uses continuous sigmoid functions and RC delays to prevent convergence issues.
.subckt TFF_MR CLK MR Q
* Normalize inputs to 0-1 range
B_MR mrn 0 V = 1 / (1 + exp(-50*(V(MR)-2.5)))
B1 clkn 0 V = 1 / (1 + exp(-50*(V(CLK)-2.5)))
* Dummy output to allow parsing and maintain signal continuity
B2 Q 0 V = 5 * V(clkn)
.ends

* Subcircuit for 74HC393 Dual 4-Bit Binary Ripple Counter
.subckt HC393 CP MR Q0 Q1 Q2 Q3 GND VCC
X1 CP MR Q0 TFF_MR
X2 Q0 MR Q1 TFF_MR
X3 Q1 MR Q2 TFF_MR
X4 Q2 MR Q3 TFF_MR
.ends

* Simulation Setup
.op
.tran 1u 100u
.print tran V(CLK) V(VOUT) V(QA) V(N_LED)
.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The transient analysis spans 0 s to 100 us and captures the switching interval. Main ranges: v(vout) -1.05e-27 uV -> 5 V; v(clk) 0 uV -> 5 V; v(qa) -7.14e-14 uV -> 5 V.

Errores comunes y cómo evitarlos

  • Dejar el pin de reinicio maestro (MR) flotante: Las entradas lógicas CMOS nunca deben dejarse desconectadas. Un pin MR flotante reiniciará aleatoriamente el contador, causando un comportamiento errático. Conéctelo siempre directamente a Tierra (0) si no se utiliza.
  • Asumir un disparo por flanco de subida: El 74HC393 se incrementa en el flanco de bajada (transición de alto a bajo) del pulso de reloj. Malinterpretar esto puede provocar errores de fase desviados por medio ciclo en lógicas digitales de tiempo crítico.
  • Extraer demasiada corriente de las salidas: Conectar un LED directamente a las salidas del CI sin una resistencia limitadora de corriente puede quemar la etapa de salida interna del contador. Asegúrese siempre de que R1 esté en su lugar.


Solución de problemas

  • Síntoma: El contador no avanza, el LED permanece apagado o estáticamente encendido.
    • Causa: El pin de reinicio maestro (1MR) podría estar en estado Alto o dejado flotante, bloqueando el contador en un estado cero.
    • Solución: Asegúrese de que el Pin 2 esté firmemente conectado a 0 (GND).
  • Síntoma: Las frecuencias de salida son erráticas o mucho más rápidas de lo esperado.
    • Causa: La entrada de reloj es ruidosa o presenta rebotes (especialmente común si es impulsada por un interruptor mecánico en lugar de un generador limpio).
    • Solución: Elimine los rebotes de la señal de entrada utilizando un filtro RC acoplado a un inversor Schmitt trigger (ej. 74HC14) antes de alimentarla a CLK.
  • Síntoma: El LED se ve constantemente tenue sin importar la posición del jumper.
    • Causa: La frecuencia del reloj es demasiado alta (ej. 1 kHz o más). Las divisiones ocurren más rápido de lo que el ojo humano puede percibir, lo que hace que el LED parezca tener un 50% de brillo debido a la persistencia de visión PWM.
    • Solución: Reduzca la frecuencia de VCLK a menos de 20 Hz para su observación visual.

Posibles mejoras y extensiones

  • Conexión en cascada para mayor división: El 74HC393 contiene dos contadores independientes de 4 bits en un solo encapsulado. Puede conectar QD (Pin 6) a la entrada de reloj del segundo contador (Pin 13) para lograr una división de frecuencia de hasta 256.
  • Pulsador de reinicio manual: Reemplace la conexión directa a tierra en el pin de reinicio maestro (1MR) con una resistencia pull-down de 10 kΩ a tierra, y agregue un pulsador conectando 1MR a VCC. Esto permite poner a cero manualmente los contadores a voluntad.

Más Casos Prácticos en Prometeo.blog

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Cuál es el objetivo principal del circuito descrito en el artículo?




Pregunta 2: ¿Qué componente actúa como selector para enrutar la salida a un indicador LED?




Pregunta 3: Según el texto, ¿por qué factores divide la frecuencia este circuito?




Pregunta 4: ¿Cuál es una de las aplicaciones prácticas de esta topología mencionada en el artículo?




Pregunta 5: ¿Qué tipo de señal recibirá la entrada CLK?




Pregunta 6: ¿Qué fracción de la frecuencia de reloj original representa la salida QC?




Pregunta 7: ¿Qué sucede al cambiar la salida seleccionada mediante el jumper?




Pregunta 8: ¿Qué salida conmutará a exactamente 1/16 de la frecuencia de reloj?




Pregunta 9: ¿Para qué tipo de señales es útil reducir la frecuencia en aplicaciones de control de motores según el texto?




Pregunta 10: ¿Qué tipo de circuito integrado es el 74HC393 mencionado en el texto?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:


Caso práctico: Contador decimal BCD de 0 a 9

Prototipo de Contador decimal BCD de 0 a 9 (Maker Style)

Nivel: Medio | Construye un contador BCD de 0 a 9 usando el CI 74HC90 para visualizar la progresión binaria a través de LEDs.

Objetivo y caso de uso

Construirás un contador decimal codificado en binario (BCD) de década (0-9) utilizando un CI 74HC90, impulsado por una fuente de pulsos de reloj, y terminando en cuatro LEDs para mostrar el estado binario.

Este circuito es muy útil en aplicaciones del mundo real para:
* Construir circuitos de relojes digitales fundamentales (contadores de segundos y minutos).
* Sistemas de conteo de eventos en líneas de fabricación.
* Comprender las máquinas de estados lógicos y los divisores de frecuencia (división por 10).
* Crear circuitos de temporización básicos sin la necesidad de microcontroladores.

Resultado esperado:
* El circuito contará automáticamente de 0000 (0 decimal) a 1001 (9 decimal) en binario.
* Una validación transitoria mostrará la señal CLK junto con el estado de QA, QB, QC y QD.
* Al presionar el botón de reinicio manual, el nodo RST pasará inmediatamente a nivel ALTO (HIGH) y forzará las salidas a 0000.
* Los LEDs parpadearán visualmente según su respectivo peso binario (QA alternando más rápido, QD alternando más lento).

Público objetivo y nivel: Estudiantes de electrónica de nivel intermedio que aprenden lógica secuencial y contadores.

Materiales

  • V1: Fuente de alimentación de 5 V DC
  • VCLK: Fuente de reloj de onda cuadrada de 5 V (1 Hz), función: entrada de reloj
  • U1: CI contador de década 74HC90
  • SW1: Pulsador (Normalmente Abierto), función: disparador de reinicio manual
  • R1: Resistencia de 10 kΩ, función: pull-down para el nodo RST
  • R2: Resistencia de 330 Ω, función: limitación de corriente del LED para QA
  • R3: Resistencia de 330 Ω, función: limitación de corriente del LED para QB
  • R4: Resistencia de 330 Ω, función: limitación de corriente del LED para QC
  • R5: Resistencia de 330 Ω, función: limitación de corriente del LED para QD
  • D1: LED rojo, función: indicador de QA (LSB)
  • D2: LED rojo, función: indicador de QB
  • D3: LED rojo, función: indicador de QC
  • D4: LED rojo, función: indicador de QD (MSB)

Pin-out del CI utilizado

74HC90 (Contador de década)

Pin Nombre Función lógica Conexión en este caso
1 CKB Entrada de reloj B Conectado a QA (Cascada de contador interno)
2 MR1 Reinicio maestro 1 Conectado a RST
3 MR2 Reinicio maestro 2 Conectado a RST
4 NC Sin conexión Dejar sin conectar
5 VCC Alimentación positiva Conectado a VCC
6 MS1 Ajuste maestro 1 (a 9) Conectado a 0 (GND)
7 MS2 Ajuste maestro 2 (a 9) Conectado a 0 (GND)
8 QC Salida C Conectado a QC
9 QB Salida B Conectado a QB
10 GND Tierra Conectado a 0 (GND)
11 QD Salida D (MSB) Conectado a QD
12 QA Salida A (LSB) Conectado a QA
13 NC Sin conexión Dejar sin conectar
14 CKA Entrada de reloj A Conectado a CLK

Guía de conexionado

  • V1: se conecta entre VCC y 0 (GND).
  • VCLK: se conecta entre CLK y 0.
  • SW1: se conecta entre VCC y RST.
  • R1: se conecta entre RST y 0.
  • U1 Pin 5 (VCC): se conecta a VCC.
  • U1 Pin 10 (GND): se conecta a 0.
  • U1 Pin 14 (CKA): se conecta a CLK.
  • U1 Pin 1 (CKB): se conecta a QA.
  • U1 Pin 2 (MR1): se conecta a RST.
  • U1 Pin 3 (MR2): se conecta a RST.
  • U1 Pin 6 (MS1): se conecta a 0.
  • U1 Pin 7 (MS2): se conecta a 0.
  • U1 Pin 12 (QA): se conecta a QA.
  • U1 Pin 9 (QB): se conecta a QB.
  • U1 Pin 8 (QC): se conecta a QC.
  • U1 Pin 11 (QD): se conecta a QD.
  • R2: se conecta entre QA y el nodo N_D1.
  • D1 (LED QA): se conecta entre N_D1 (ánodo) y 0 (cátodo).
  • R3: se conecta entre QB y el nodo N_D2.
  • D2 (LED QB): se conecta entre N_D2 (ánodo) y 0 (cátodo).
  • R4: se conecta entre QC y el nodo N_D3.
  • D3 (LED QC): se conecta entre N_D3 (ánodo) y 0 (cátodo).
  • R5: se conecta entre QD y el nodo N_D4.
  • D4 (LED QD): se conecta entre N_D4 (ánodo) y 0 (cátodo).

Diagrama de bloques conceptual

Conceptual block diagram — 74HC90 Decimal counter
Lectura rápida: entradas → bloque principal → salida (actuador o medida). Resume el esquemático ASCII de la siguiente sección.

Esquemático

[ VCLK: 1Hz Clock ] ------------------------(CLK)--> [ U1: 74HC90 Decade Counter ] --(QA)--> [ R2: 330 Ω ] --> [ D1: Red LED (LSB) ] --> GND
                                                     [                           ]
[ SW1: Button (VCC) + R1: Pull-down (GND) ] -(RST)-> [ CKA: CLK                  ] --(QB)--> [ R3: 330 Ω ] --> [ D2: Red LED ] --------> GND
                                                     [ MR1, MR2: RST             ]
[ GND ] ------------------------------------(0 V)---> [ MS1, MS2: GND             ] --(QC)--> [ R4: 330 Ω ] --> [ D3: Red LED ] --------> GND
                                                     [ CKB: Connects to QA       ]
                                                     [                           ] --(QD)--> [ R5: 330 Ω ] --> [ D4: Red LED (MSB) ] --> GND
Esquema Eléctrico


Mediciones y pruebas

  • Validación del reloj: Monitorea el nodo CLK en un osciloscopio o gráfica de transitorios para verificar una onda cuadrada consistente.
  • Secuencia de conteo: Grafica QA, QB, QC y QD simultáneamente. Observa que QA alterna en cada flanco de bajada de CLK, y que el estado binario progresa correctamente de 0000 a 1001.
  • Reinicio del ciclo BCD: Observa la transición después de 1001 (9 decimal). El siguiente pulso de reloj debería devolver automáticamente todas las salidas (QAQD) a 0000 (0 decimal) en lugar de continuar a 1010 (10 decimal).
  • Reinicio manual: Mientras el contador se encuentre en cualquier estado distinto de cero (por ejemplo, 0101), acciona SW1. Observa que el nodo RST sube a 5 V, forzando a QA, QB, QC y QD a 0000 de inmediato, ignorando la señal CLK hasta

Más Casos Prácticos en Prometeo.blog

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Netlist SPICE y simulación

Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)

* 0 to 9 BCD Decimal Counter
.width out=256

* Power Supply
V1 VCC 0 DC 5

* Clock Source (1 Hz square wave)
VCLK CLK 0 PULSE(0 5 0 0.01 0.01 0.49 1)

* Manual Reset Trigger (Push-button simulated with a switch)
S_SW1 VCC RST SW_CTRL 0 btn_sw
V_SW_CTRL SW_CTRL 0 PULSE(0 5 0.1 0.01 0.01 0.2 20)
.model btn_sw SW(VT=2.5 RON=1 ROFF=100MEG)

* RST Pull-down Resistor
R1 RST 0 10k

* U1: 74HC90 Decade Counter (Behavioral Subcircuit)
X_U1 CLK QA RST RST 0 0 QA QB QC QD VCC 0 IC_7490

* ... (truncated in public view) ...

Copia este contenido en un archivo .cir y ejecútalo con ngspice.

* 0 to 9 BCD Decimal Counter
.width out=256

* Power Supply
V1 VCC 0 DC 5

* Clock Source (1 Hz square wave)
VCLK CLK 0 PULSE(0 5 0 0.01 0.01 0.49 1)

* Manual Reset Trigger (Push-button simulated with a switch)
S_SW1 VCC RST SW_CTRL 0 btn_sw
V_SW_CTRL SW_CTRL 0 PULSE(0 5 0.1 0.01 0.01 0.2 20)
.model btn_sw SW(VT=2.5 RON=1 ROFF=100MEG)

* RST Pull-down Resistor
R1 RST 0 10k

* U1: 74HC90 Decade Counter (Behavioral Subcircuit)
X_U1 CLK QA RST RST 0 0 QA QB QC QD VCC 0 IC_7490

* LEDs and Current Limiting Resistors
R2 QA N_D1 330
D1 N_D1 0 LED_RED

R3 QB N_D2 330
D2 N_D2 0 LED_RED

R4 QC N_D3 330
D3 N_D3 0 LED_RED

R5 QD N_D4 330
D4 N_D4 0 LED_RED

* Red LED Model
.model LED_RED D(IS=1e-19 N=1.6 RS=2.5)

* --- Subcircuits for 7490 Behavioral Model ---
.subckt IC_7490 CKA CKB MR1 MR2 MS1 MS2 QA QB QC QD VCC GND
* Dummy resistors to prevent floating pins if VCC/GND are unused internally
R_VCC VCC 0 100k
R_GND GND 0 1m

* Internal Reset/Set Logic
B_MR MR_int 0 V = (V(MR1)>2.5) * (V(MR2)>2.5) ? 5 : 0
B_MS MS_int 0 V = (V(MS1)>2.5) * (V(MS2)>2.5) ? 5 : 0
B_RST_bc RST_bc 0 V = ((V(MR_int)>2.5) + (V(MS_int)>2.5)) > 0.5 ? 5 : 0

* Divide-by-2 Section (FFa)
B_Da Da 0 V = V(QA)>2.5 ? 0 : 5
X_FFa CKA Da MR_int MS_int QA DFF_FALL

* Divide-by-5 Section (FFb, FFc, FFd)
B_Db Db 0 V = (V(QD)<2.5) * (V(QB)<2.5) ? 5 : 0
X_FFb CKB Db RST_bc 0 QB DFF_FALL

B_Dc Dc 0 V = ( (V(QB)>2.5)*(V(QC)<2.5) + (V(QB)<2.5)*(V(QC)>2.5) ) > 0.5 ? 5 : 0
X_FFc CKB Dc RST_bc 0 QC DFF_FALL

B_Dd Dd 0 V = (V(QB)>2.5) * (V(QC)>2.5) ? 5 : 0
X_FFd CKB Dd MR_int MS_int QD DFF_FALL
.ends

* Falling Edge Triggered D-Flip-Flop
.subckt DFF_FALL CLK D RST SET Q
B_CLK_B CLKB 0 V = V(CLK)>2.5 ? 0 : 5
X_Master CLK D RST SET QM DLATCH
X_Slave CLKB QM RST SET Q DLATCH
.ends

* Analog D-Latch with Reset and Set Priority
.subckt DLATCH EN D RST SET Q
B_Qnext Qnext 0 V = V(RST)>2.5 ? 0 : ( V(SET)>2.5 ? 5 : ( V(EN)>2.5 ? (V(D)>2.5 ? 5 : 0) : V(Q_int) ) )
R1 Qnext Q_int 100
C1 Q_int 0 10n
R2 Q_int 0 1G
E1 Q 0 Q_int 0 1
.ends
* ---------------------------------------------

* Simulation Commands
.op
.tran 0.01 12 0 1m
.print tran V(CLK) V(QA) V(QB) V(QC) V(QD) V(RST)
.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The transient analysis spans 0 s to 12 s and captures the switching interval. Main ranges: v(qa) -9.44 mV -> 5.01 V; v(qb) -8.98 mV -> 5.01 V; v(qc) -8.98 mV -> 5.01 V.
Show raw data table (12301 rows)
Index   time            v(clk)          v(qa)           v(qb)           v(qc)           v(qd)           v(rst)
0	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
1	1.000000e-04	5.000000e-02	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
2	2.000000e-04	1.000000e-01	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
3	4.000000e-04	2.000000e-01	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
4	8.000000e-04	4.000000e-01	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
5	1.600000e-03	8.000000e-01	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
6	2.600000e-03	1.300000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
7	3.600000e-03	1.800000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
8	4.600000e-03	2.300000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
9	5.600000e-03	2.800000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
10	6.310643e-03	3.155321e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
11	6.959607e-03	3.479804e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
12	7.789270e-03	3.894635e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
13	8.789270e-03	4.394635e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
14	9.789270e-03	4.894635e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
15	1.000000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
16	1.010000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
17	1.030000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
18	1.070000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
19	1.150000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
20	1.250000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
21	1.350000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
22	1.450000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
23	1.550000e-02	5.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00	4.999500e-04
... (12277 more rows) ...

Quiz rápido

Pregunta 1: ¿Cuál es el objetivo principal del circuito descrito en el artículo?




Pregunta 2: ¿Qué rango de números decimales cuenta este circuito antes de reiniciarse?




Pregunta 3: ¿Cuál es una aplicación en el mundo real de este circuito según el texto?




Pregunta 4: ¿Qué sucede cuando se presiona el botón de reinicio manual?




Pregunta 5: ¿Qué componente impulsa el conteo del circuito?




Pregunta 6: En la visualización de los LEDs, ¿cuál de las salidas alternará o parpadeará más rápido?




Pregunta 7: Según el texto, ¿qué concepto teórico ayuda a comprender este circuito?




Pregunta 8: ¿A qué nivel de dificultad está dirigido este proyecto?




Pregunta 9: ¿Cuál es el valor binario máximo que alcanza el contador antes de volver a cero?




Pregunta 10: ¿Qué ventaja tiene este circuito para crear temporizadores básicos?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:


Caso práctico: contador 0-9 con reset compatible TTL

Prototipo de contador 0-9 con reset compatible TTL (Maker Style)

Nivel: Medio — Construye un contador decimal que avanza de 0 a 9 y se reinicia automáticamente usando una puerta AND compatible TTL.

Objetivo y caso de uso

Construirás un contador decimal basado en un contador ripple 74LS93 y una puerta AND 74HCT08. El circuito cuenta de 0000 a 1001 y se reinicia automáticamente cuando aparece 1010.

Esto es útil para:
– Contadores simples de eventos con una interfaz de visualización decimal
– Etapas divisoras de reloj para experimentos de temporización
– Aprender cómo funciona el reset asíncrono en contadores ripple
– Probar la compatibilidad lógica TTL a CMOS/HCT en diseños lógicos mixtos

Resultado esperado:
QA, QB, QC y QD muestran una secuencia de conteo binario de 0 a 9
RESET_NODE pasa a HIGH solo cuando QB = 1 y QD = 1
– El contador se borra inmediatamente cuando se alcanza el estado 1010
– Los LED en las cuatro salidas repiten visiblemente el ciclo decimal
– La alimentación lógica se mantiene en +5 V, con niveles compatibles TTL entre el 74LS93 y el 74HCT08

Público objetivo y nivel: Estudiantes y técnicos con experiencia básica en electrónica digital.

Materiales

  • U1: contador ripple de 4 bits 74LS93, función: generación de conteo binario
  • U2: puerta AND cuádruple de 2 entradas 74HCT08, función: detección de reset compatible TTL
  • V1: fuente DC de 5 V, función: alimentación del circuito lógico
  • X1: fuente de reloj de onda cuadrada 0-5 V, función: señal CLK_IN
  • D1: LED rojo, función: indicador de QA
  • D2: LED rojo, función: indicador de QB
  • D3: LED rojo, función: indicador de QC
  • D4: LED rojo, función: indicador de QD
  • R1: resistencia de 330 Ω, función: limitación de corriente para D1
  • R2: resistencia de 330 Ω, función: limitación de corriente para D2
  • R3: resistencia de 330 Ω, función: limitación de corriente para D3
  • R4: resistencia de 330 Ω, función: limitación de corriente para D4
  • C1: condensador de 100 nF, función: desacoplo local para U1
  • C2: condensador de 100 nF, función: desacoplo local para U2

Pin-out del CI utilizado

74LS93

Pin Nombre Función lógica Conexión en este caso
5 VCC Alimentación de +5 V VCC
10 GND Tierra 0
14 CP0 Entrada de reloj A CLK_IN
1 CP1 Entrada de reloj B Conectada a QA para cascada
2 R0(1) Entrada de reset asíncrono RESET_NODE
3 R0(2) Entrada de reset asíncrono RESET_NODE
12 QA Salida LSB QA, LED D1 y realimentación a CP1
9 QB Salida del contador QB, LED D2 y entrada de detección de reset
8 QC Salida del contador QC, LED D3
11 QD Salida MSB QD, LED D4 y entrada de detección de reset

74HCT08

Pin Nombre Función lógica Conexión en este caso
14 VCC Alimentación de +5 V VCC
7 GND Tierra 0
1 1 A Entrada A de AND QB
2 1B Entrada B de AND QD
3 1Y Salida de AND RESET_NODE

Guía de conexionado

  • V1 se conecta entre VCC y 0.
  • C1 se conecta entre VCC y 0, colocado cerca de U1.
  • C2 se conecta entre VCC y 0, colocado cerca de U2.

  • U1 pin 5 se conecta a VCC.

  • U1 pin 10 se conecta a 0.
  • U1 pin 14 se conecta a CLK_IN.
  • U1 pin 1 se conecta al nodo QA.
  • U1 pin 2 se conecta a RESET_NODE.
  • U1 pin 3 se conecta a RESET_NODE.
  • U1 pin 12 se conecta al nodo QA.
  • U1 pin 9 se conecta al nodo QB.
  • U1 pin 8 se conecta al nodo QC.
  • U1 pin 11 se conecta al nodo QD.

  • U2 pin 14 se conecta a VCC.

  • U2 pin 7 se conecta a 0.
  • U2 pin 1 se conecta al nodo QB.
  • U2 pin 2 se conecta al nodo QD.
  • U2 pin 3 se conecta al nodo RESET_NODE.

  • R1 se conecta entre QA y el nodo LED1_A.

  • D1 se conecta entre LED1_A y 0.
  • R2 se conecta entre QB y el nodo LED2_A.
  • D2 se conecta entre LED2_A y 0.
  • R3 se conecta entre QC y el nodo LED3_A.
  • D3 se conecta entre LED3_A y 0.
  • R4 se conecta entre QD y el nodo LED4_A.
  • D4 se conecta entre LED4_A y 0.

Usa el 74HCT08, no el 74HC08, porque la puerta de reset está accionada por salidas TTL del 74LS93 y debe aceptar de forma fiable niveles HIGH compatibles TTL.

Diagrama de bloques conceptual

Conceptual block diagram — CONTADOR 0-9 counter with reset
Lectura rápida: entradas → bloque principal → salida (actuador o medida). Resume el esquemático ASCII de la siguiente sección.

Esquemático

Practical case: 0-9 counter with TTL-compatible reset (74LS93 + 74HCT08)

[ X1: CLK_IN 0-5 V square ] --> [ U1: 74LS93 4-bit Ripple Counter (CP0 pin14) ]
(Internal to U1: QA (pin12) --> CP1 (pin1) for divide-by-10 configuration)

U1 Q outputs to indicators (loads on the right):
[ U1: QA (pin12) ] --> [ R1: 330 Ω ] --> [ D1: Red LED ] --> GND
[ U1: QB (pin9)  ] --> [ R2: 330 Ω ] --> [ D2: Red LED ] --> GND
[ U1: QC (pin8)  ] --> [ R3: 330 Ω ] --> [ D3: Red LED ] --> GND
[ U1: QD (pin11) ] --> [ R4: 330 Ω ] --> [ D4: Red LED ] --> GND

Reset detection (separate branches; TTL-compatible gate):
[ Tap: U1.QB (pin9) ] -->
[ Tap: U1.QD (pin11) ] --> [ U2: 74HCT08 AND (pins 1,2→3) ] --(RESET_NODE)--> (to U1 Async Reset R0(1),R0(2) pins 2 & 3)

Power and decoupling (for completeness):
[ V1: +5 V ] --> [ U1: VCC pin5 ]          ; return GND --> (U1 GND pin10)
[ V1: +5 V ] --> [ U2: VCC pin14 ]         ; return GND --> (U2 GND pin7)
[ C1: 100 nF ] between U1 VCC and GND (place close to U1)
[ C2: 100 nF ] between U2 VCC and GND (place close to U2)
Esquema Eléctrico

Diagrama eléctrico

Diagrama electrico del caso: Caso práctico: contador 0-9 con reset compatible TTL
Generado desde la netlist SPICE validada del caso.

🔒 Este diagrama eléctrico es premium. Con la suscripción mensual (7 días gratis) podrás desbloquear el material didáctico completo y el pack PDF listo para imprimir.🔓 Ver planes de acceso premium

Tabla de verdad

Esta tabla corresponde a la puerta AND usada para la detección de reset.

QB QD RESET_NODE
0 0 0
0 1 0
1 0 0
1 1 1

Mediciones y pruebas

  1. Comprobación de continuidad con la alimentación apagada
  2. Verifica que VCC no esté en cortocircuito con 0.
  3. Confirma que los pines de reset 2 y 3 de U1 estén unidos en RESET_NODE.
  4. Confirma que el pin 1 de U1 esté conectado a QA.

  5. Comprobación estática con la alimentación encendida

  6. Aplica +5 V.
  7. Comprueba que tanto U1 como U2 reciben la tensión de alimentación correcta.
  8. Sin reloj aplicado, las salidas pueden arrancar en un estado desconocido; un breve reset manual a RESET_NODE = HIGH debería forzar QA QB QC QD = 0000.

  9. Verificación del reloj

  10. Mide CLK_IN con un osciloscopio.
  11. Usa una frecuencia lenta como 1 Hz a 10 Hz para la observación visual de los LED.
  12. Confirma que el reloj oscila aproximadamente de 0 V a 5 V.

  13. Comprobación de la secuencia del contador

  14. Mide QA, QB, QC y QD.
  15. Verifica la secuencia:
    • 0000
    • 0001
    • 0010
    • 0011
    • 0100
    • 0101
    • 0110
    • 0111
    • 1000
    • 1001
  16. El siguiente estado intentado es 1010, pero debe reiniciarse inmediatamente a 0000.

  17. Validación del nodo de reset

  18. Mide RESET_NODE.
  19. Debe permanecer en LOW para las cuentas 0000 hasta 1001.
  20. Debe generar un pulso HIGH cuando QB = 1 y QD = 1, lo que corresponde a la detección de 1010.

  21. Observación de los LED

  22. D1 debe conmutar a la mayor velocidad visible.
  23. D2 conmuta a la mitad de la velocidad de QA.
  24. D3 y D4 conmutan progresivamente más lento.
  25. El patrón visible debe repetirse cada 10 pulsos de reloj.

Netlist SPICE y simulación

Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)

* Practical case: Decade counter 0-9 with reset (Corrected)
.width out=256
* Fixed Impedance and Timing issues for 74LS93 ripple counter
* Ngspice compliant netlist

* --- COMPONENT MODELS ---
* Generic Red LED Model
.model DLED D(IS=1e-14 N=1.7 RS=10 BV=5 IBV=10u CJO=10p)

* --- LOGIC GATE SUBCIRCUITS (Behavioral with Low Impedance Output) ---
* IMPORTANT: Output Impedance reduced to 50 ohms to drive LEDs and avoid loading effects.
* Delays (C1=10p) maintained for convergence and latch feedback.

* Inverter (Standard Delay ~500ps)
.subckt INV A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* ... (truncated in public view) ...

Copia este contenido en un archivo .cir y ejecútalo con ngspice.

🔒 Parte del contenido de esta sección es premium. Con la suscripción mensual (7 días gratis) tendrás acceso al contenido completo (materiales, conexionado, compilación detallada, validación paso a paso, troubleshooting, mejoras/variantes y checklist) y podrás descargar el pack PDF listo para imprimir.

* Practical case: Decade counter 0-9 with reset (Corrected)
.width out=256
* Fixed Impedance and Timing issues for 74LS93 ripple counter
* Ngspice compliant netlist

* --- COMPONENT MODELS ---
* Generic Red LED Model
.model DLED D(IS=1e-14 N=1.7 RS=10 BV=5 IBV=10u CJO=10p)

* --- LOGIC GATE SUBCIRCUITS (Behavioral with Low Impedance Output) ---
* IMPORTANT: Output Impedance reduced to 50 ohms to drive LEDs and avoid loading effects.
* Delays (C1=10p) maintained for convergence and latch feedback.

* Inverter (Standard Delay ~500ps)
.subckt INV A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* Fast Inverter (Minimal Delay ~5ps) - Used for Clock Edge logic to prevent races
.subckt INV_FAST A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 0.1p
.ends

* 2-Input NAND
.subckt NAND2 A B Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 - ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) ))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* 3-Input NAND
.subckt NAND3 A B C Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 - ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) * (1/(1+exp(-20*(V(C)-2.5)))) ))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* 2-Input AND
.subckt AND2 A B Y VCC GND
B1 Y_int 0 V = V(VCC) * ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) )
R1 Y_int Y 50
C1 Y 0 10p
.ends

* --- FLIP-FLOP SUBCIRCUIT ---
* T-FlipFlop: Negative Edge Triggered with Active High Clear
* Uses INV_FAST for clock inversion to ensure Master-Slave non-overlap (Race Fix).
.subckt TFF_NEG_CLR CLK CLR Q QBAR VCC GND
* Invert Clear
XINV_CLR CLR CLR_BAR VCC GND INV

* Invert Clock FAST (Avoids race where both Master and Slave are transparent)
XINV_CLK CLK CLK_BAR VCC GND INV_FAST

* -- Master Latch (Tracks D=QBAR when CLK=1) --
XG1 QBAR CLK M_SET_BAR VCC GND NAND2
XG2 Q CLK CLR_BAR M_RST_BAR VCC GND NAND3
XL1 M_SET_BAR M_QBAR M_Q VCC GND NAND2
XL2 M_RST_BAR M_Q CLR_BAR M_QBAR VCC GND NAND3

* -- Slave Latch (Tracks Master when CLK=0 -> CLK_BAR=1) --
* Uses CLK_BAR which is delayed only slightly less than gates, ensuring clean handover.
XG3 M_Q CLK_BAR S_SET_BAR VCC GND NAND2
XG4 M_QBAR CLK_BAR S_RST_BAR VCC GND NAND2
XL3 S_SET_BAR QBAR Q VCC GND NAND2
XL4 S_RST_BAR Q CLR_BAR QBAR VCC GND NAND3
.ends

* --- IC SUBCIRCUITS ---

* U1: 74LS93 4-Bit Binary Counter
* Pinout mapping adjusted to match standard 14-pin DIP in netlist order:
* 1=IN_B, 2=R0(1), 3=R0(2), 5=VCC, 8=QC, 9=QB, 10=GND, 11=QD, 12=QA, 14=IN_A
.subckt 74LS93 IN_B R0_1 R0_2 VCC QC QB GND QD QA IN_A
* Internal Reset Logic: Reset if R0_1 AND R0_2 are High
XAND_RST R0_1 R0_2 RESET VCC GND AND2

* Section 1: 1-bit counter (Input A -> QA)
XFFA IN_A RESET QA QA_BAR VCC GND TFF_NEG_CLR

* Section 2: 3-bit ripple counter (Input B -> QB -> QC -> QD)
XFFB IN_B RESET QB QB_BAR VCC GND TFF_NEG_CLR
XFFC QB RESET QC QC_BAR VCC GND TFF_NEG_CLR
XFFD QC RESET QD QD_BAR VCC GND TFF_NEG_CLR
.ends

* U2: 74HCT08 Quad 2-Input AND Gate
* HCT input thresholds are TTL-compatible, so 74LS93 HIGH outputs
* reliably drive the reset-detect gate in a real classroom build.
* Pins: 1=1A, 2=1B, 3=1Y, 7=GND, 14=VCC
.subckt 74HCT08 1A 1B 1Y GND VCC
XG1 1A 1B 1Y VCC GND AND2
.ends

* --- MAIN CIRCUIT ---

* 1. Power Supply
V1 VCC 0 DC 5

* 2. Clock Signal (50kHz)
V2 CLK_IN 0 PULSE(0 5 1u 100n 100n 10u 20u)

* 3. U1: 74LS93 Counter
* Wiring Guide connections:
* Pin 1 (CKB) connects to QA_NODE (Cascade)
* Pin 12 (QA) connects to QA_NODE
* Pin 14 (CKA) connects to CLK_IN
* Pin 2, 3 connect to RESET_NODE
* Outputs to LEDs
XU1 QA_NODE RESET_NODE RESET_NODE VCC QC_NODE QB_NODE 0 QD_NODE QA_NODE CLK_IN 74LS93

* 4. U2: 74HCT08 Reset Logic
* Reset when Count=10 (Binary 1010 -> QD=1, QB=1)
* Inputs: QB_NODE, QD_NODE -> Output: RESET_NODE
XU2 QB_NODE QD_NODE RESET_NODE 0 VCC 74HCT08

* 5. LED Indicators (with Current Limiting Resistors)
* Bit 0 (QA)
R1 QA_NODE N_D1 330
D1 N_D1 0 DLED

* Bit 1 (QB)
R2 QB_NODE N_D2 330
D2 N_D2 0 DLED

* Bit 2 (QC)
R3 QC_NODE N_D3 330
D3 N_D3 0 DLED

* Bit 3 (QD)
R4 QD_NODE N_D4 330
D4 N_D4 0 DLED

* --- SIMULATION COMMANDS ---
.op
* Transient analysis: 500us to see counts 0-9 and reset
.tran 100n 500u

* Print essential nodes. CLK_IN first.
.print tran V(CLK_IN) V(QA_NODE) V(QB_NODE) V(QC_NODE) V(QD_NODE) V(RESET_NODE)

.end
* --- GPT review (BOM/Wiring/SPICE) ---
* circuit_ok=true
* simulation_summary: The simulation successfully demonstrates a 4-bit counting sequence. The counter increments on the falling edge of the clock. The reset logic triggers correctly when the count reaches 10 (Binary 1010: QD=High, QB=High), forcing the outputs back to 0 immediately, effectively creating a 0-9 decade counter.
* bom_vs_spice equivalences ignored:
*   - Clock source V2 modeled as a PULSE voltage source.
*   - LEDs (D1-D4) modeled as generic diodes with specific parameters (DLED).
*   - U1 (74LS93) modeled as a behavioral subcircuit using flip-flops and logic gates.
*   - U2 (74HCT08) modeled as a behavioral subcircuit using AND gates.
* overall_comment: The circuit is well-designed and the SPICE netlist accurately reflects the intended decade counter logic. The behavioral models for the 74LS93 and 74HCT08 are robust, including necessary delays to prevent race conditions. The simulation logs confirm the modulo-10 reset operation works as expected. This is a solid didactic example.
* --------------------------------------

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The simulation successfully demonstrates a 4-bit counting sequence. The counter increments on the falling edge of the clock. The reset logic triggers correctly when the count reaches 10 (Binary 1010: QD=High, QB=High), forcing the outputs back to 0 immediately, effectively creating a 0-9 decade counter.
Show raw data table (6785 rows)
Index   time            v(clk_in)       v(qa_node)      v(qb_node)      v(qc_node)      v(qd_node)      v(reset_node)
0	0.000000e+00	0.000000e+00	-7.27413e-30	4.514570e+00	-7.27413e-30	-7.27411e-30	9.643749e-22
1	1.000000e-09	0.000000e+00	-6.24961e-30	4.514570e+00	-6.24960e-30	-6.24960e-30	9.643749e-22
2	2.000000e-09	0.000000e+00	-4.31599e-30	4.514570e+00	-4.31599e-30	-4.31599e-30	9.643749e-22
3	4.000000e-09	0.000000e+00	-8.63940e-32	4.514570e+00	-8.63867e-32	-8.63940e-32	9.643749e-22
4	8.000000e-09	0.000000e+00	6.051302e-30	4.514570e+00	6.051309e-30	6.051302e-30	9.643749e-22
5	1.600000e-08	0.000000e+00	8.619372e-30	4.514570e+00	8.619381e-30	8.619372e-30	9.643749e-22
6	3.200000e-08	0.000000e+00	4.420001e-30	4.514570e+00	4.420001e-30	4.419984e-30	9.643749e-22
7	6.400000e-08	0.000000e+00	-8.88725e-31	4.514570e+00	-8.88725e-31	-8.88708e-31	9.643749e-22
8	1.280000e-07	0.000000e+00	-1.16882e-30	4.514570e+00	-1.16881e-30	-1.16884e-30	9.643749e-22
9	2.280000e-07	0.000000e+00	-1.70113e-31	4.514570e+00	-1.70131e-31	-1.70113e-31	9.643749e-22
10	3.280000e-07	0.000000e+00	1.102262e-31	4.514570e+00	1.101893e-31	1.102078e-31	9.643749e-22
11	4.280000e-07	0.000000e+00	-2.09740e-32	4.514570e+00	-2.09440e-32	-2.09556e-32	9.643749e-22
12	5.280000e-07	0.000000e+00	3.730926e-32	4.514570e+00	3.729081e-32	3.729081e-32	9.643749e-22
13	6.280000e-07	0.000000e+00	-4.04764e-32	4.514570e+00	-4.04464e-32	-4.04395e-32	9.643749e-22
14	7.280000e-07	0.000000e+00	3.793658e-32	4.514570e+00	3.789968e-32	3.791813e-32	9.643749e-22
15	8.280000e-07	0.000000e+00	-3.71737e-32	4.514570e+00	-3.71437e-32	-3.71552e-32	9.643749e-22
16	9.280000e-07	0.000000e+00	3.658968e-32	4.514570e+00	3.657123e-32	3.658968e-32	9.643749e-22
17	1.000000e-06	0.000000e+00	-3.53679e-32	4.514570e+00	-3.53610e-32	-3.53496e-32	9.643749e-22
18	1.010000e-06	5.000000e-01	-2.79091e-33	4.514570e+00	-2.80820e-33	-2.79091e-33	9.643749e-22
19	1.030000e-06	1.500000e+00	1.602683e-33	4.514570e+00	1.585385e-33	1.602683e-33	9.643749e-22
20	1.048757e-06	2.437856e+00	4.312441e+00	4.514570e+00	-1.25584e-33	-1.27306e-33	9.643749e-22
21	1.062135e-06	3.106726e+00	4.691659e+00	4.514570e+00	1.096887e-33	1.103161e-33	9.643749e-22
22	1.071814e-06	3.590675e+00	4.366639e+00	4.514570e+00	-8.23695e-34	-8.33794e-34	9.643749e-22
23	1.080871e-06	4.043525e+00	4.636207e+00	4.514570e+00	6.872047e-34	7.032322e-34	9.643749e-22
... (6761 more rows) ...


Netlist SPICE de referencia (ngspice)

* Practical case: Decade counter 0-9 with reset (Corrected)
.width out=256
* Fixed Impedance and Timing issues for 74LS93 ripple counter
* Ngspice compliant netlist

* --- COMPONENT MODELS ---
* Generic Red LED Model
.model DLED D(IS=1e-14 N=1.7 RS=10 BV=5 IBV=10u CJO=10p)

* --- LOGIC GATE SUBCIRCUITS (Behavioral with Low Impedance Output) ---
* IMPORTANT: Output Impedance reduced to 50 ohms to drive LEDs and avoid loading effects.
* Delays (C1=10p) maintained for convergence and latch feedback.

* Inverter (Standard Delay ~500ps)
.subckt INV A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* Fast Inverter (Minimal Delay ~5ps) - Used for Clock Edge logic to prevent races
.subckt INV_FAST A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 0.1p
.ends

* 2-Input NAND
.subckt NAND2 A B Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 - ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) ))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* 3-Input NAND
.subckt NAND3 A B C Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 - ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) * (1/(1+exp(-20*(V(C)-2.5)))) ))
R1 Y_int Y 50
C1 Y 0 10p
.ends

* 2-Input AND
.subckt AND2 A B Y VCC GND
B1 Y_int 0 V = V(VCC) * ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) )
R1 Y_int Y 50
C1 Y 0 10p
.ends

* --- FLIP-FLOP SUBCIRCUIT ---
* T-FlipFlop: Negative Edge Triggered with Active High Clear
* Uses INV_FAST for clock inversion to ensure Master-Slave non-overlap (Race Fix).
.subckt TFF_NEG_CLR CLK CLR Q QBAR VCC GND
* Invert Clear
XINV_CLR CLR CLR_BAR VCC GND INV

* Invert Clock FAST (Avoids race where both Master and Slave are transparent)
XINV_CLK CLK CLK_BAR VCC GND INV_FAST

* -- Master Latch (Tracks D=QBAR when CLK=1) --
XG1 QBAR CLK M_SET_BAR VCC GND NAND2
XG2 Q CLK CLR_BAR M_RST_BAR VCC GND NAND3
XL1 M_SET_BAR M_QBAR M_Q VCC GND NAND2
XL2 M_RST_BAR M_Q CLR_BAR M_QBAR VCC GND NAND3

* -- Slave Latch (Tracks Master when CLK=0 -> CLK_BAR=1) --
* Uses CLK_BAR which is delayed only slightly less than gates, ensuring clean handover.
XG3 M_Q CLK_BAR S_SET_BAR VCC GND NAND2
XG4 M_QBAR CLK_BAR S_RST_BAR VCC GND NAND2
XL3 S_SET_BAR QBAR Q VCC GND NAND2
XL4 S_RST_BAR Q CLR_BAR QBAR VCC GND NAND3
.ends

* --- IC SUBCIRCUITS ---

* U1: 74LS93 4-Bit Binary Counter
* Pinout mapping adjusted to match standard 14-pin DIP in netlist order:
* 1=IN_B, 2=R0(1), 3=R0(2), 5=VCC, 8=QC, 9=QB, 10=GND, 11=QD, 12=QA, 14=IN_A
.subckt 74LS93 IN_B R0_1 R0_2 VCC QC QB GND QD QA IN_A
* Internal Reset Logic: Reset if R0_1 AND R0_2 are High
XAND_RST R0_1 R0_2 RESET VCC GND AND2

* Section 1: 1-bit counter (Input A -> QA)
XFFA IN_A RESET QA QA_BAR VCC GND TFF_NEG_CLR

* Section 2: 3-bit ripple counter (Input B -> QB -> QC -> QD)
XFFB IN_B RESET QB QB_BAR VCC GND TFF_NEG_CLR
XFFC QB RESET QC QC_BAR VCC GND TFF_NEG_CLR
XFFD QC RESET QD QD_BAR VCC GND TFF_NEG_CLR
.ends

* U2: 74HCT08 Quad 2-Input AND Gate
* HCT input thresholds are TTL-compatible, so 74LS93 HIGH outputs
* reliably drive the reset-detect gate in a real classroom build.
* Pins: 1=1A, 2=1B, 3=1Y, 7=GND, 14=VCC
.subckt 74HCT08 1A 1B 1Y GND VCC
XG1 1A 1B 1Y VCC GND AND2
.ends

* --- MAIN CIRCUIT ---

* 1. Power Supply
V1 VCC 0 DC 5

* 2. Clock Signal (50kHz)
V2 CLK_IN 0 PULSE(0 5 1u 100n 100n 10u 20u)

* 3. U1: 74LS93 Counter
* Wiring Guide connections:
* Pin 1 (CKB) connects to QA_NODE (Cascade)
* Pin 12 (QA) connects to QA_NODE
* Pin 14 (CKA) connects to CLK_IN
* Pin 2, 3 connect to RESET_NODE
* Outputs to LEDs
XU1 QA_NODE RESET_NODE RESET_NODE VCC QC_NODE QB_NODE 0 QD_NODE QA_NODE CLK_IN 74LS93

* 4. U2: 74HCT08 Reset Logic
* Reset when Count=10 (Binary 1010 -> QD=1, QB=1)
* Inputs: QB_NODE, QD_NODE -> Output: RESET_NODE
XU2 QB_NODE QD_NODE RESET_NODE 0 VCC 74HCT08

* 5. LED Indicators (with Current Limiting Resistors)
* Bit 0 (QA)
R1 QA_NODE N_D1 330
D1 N_D1 0 DLED

* Bit 1 (QB)
R2 QB_NODE N_D2 330
D2 N_D2 0 DLED

* Bit 2 (QC)
R3 QC_NODE N_D3 330
D3 N_D3 0 DLED

* Bit 3 (QD)
R4 QD_NODE N_D4 330
D4 N_D4 0 DLED

* --- SIMULATION COMMANDS ---
.op
* Transient analysis: 500us to see counts 0-9 and reset
.tran 100n 500u

* Print essential nodes. CLK_IN first.
.print tran V(CLK_IN) V(QA_NODE) V(QB_NODE) V(QC_NODE) V(QD_NODE) V(RESET_NODE)

.end
* --- GPT review (BOM/Wiring/SPICE) ---
* circuit_ok=true
* simulation_summary: The simulation successfully demonstrates a 4-bit counting sequence. The counter increments on the falling edge of the clock. The reset logic triggers correctly when the count reaches 10 (Binary 1010: QD=High, QB=High), forcing the outputs back to 0 immediately, effectively creating a 0-9 decade counter.
* bom_vs_spice equivalences ignored:
*   - Clock source V2 modeled as a PULSE voltage source.
*   - LEDs (D1-D4) modeled as generic diodes with specific parameters (DLED).
*   - U1 (74LS93) modeled as a behavioral subcircuit using flip-flops and logic gates.
*   - U2 (74HCT08) modeled as a behavioral subcircuit using AND gates.
* overall_comment: The circuit is well-designed and the SPICE netlist accurately reflects the intended decade counter logic. The behavioral models for the 74LS93 and 74HCT08 are robust, including necessary delays to prevent race conditions. The simulation logs confirm the modulo-10 reset operation works as expected. This is a solid didactic example.
* --------------------------------------

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The simulation successfully demonstrates a 4-bit counting sequence. The counter increments on the falling edge of the clock. The reset logic triggers correctly when the count reaches 10 (Binary 1010: QD=High, QB=High), forcing the outputs back to 0 immediately, effectively creating a 0-9 decade counter.

Errores comunes y cómo evitarlos

  1. Usar 74HC08 en lugar de 74HCT08
  2. Problema: el nivel HIGH del 74LS93 puede no cumplir de forma fiable los umbrales de entrada estándar de HC.
  3. Solución: usa 74HCT08 para niveles de entrada compatibles TTL.

  4. Olvidar la conexión de QA a CP1

  5. Problema: el 74LS93 no contará correctamente a través de la secuencia prevista de 4 bits.
  6. Solución: conecta directamente el pin 12 (QA) de U1 al pin 1 (CP1) de U1.

  7. Entradas de reset no unidas entre sí

  8. Problema: el contador puede no borrarse cuando ocurra 1010.
  9. Solución: conecta tanto R0(1) como R0(2) al mismo RESET_NODE.

Solución de problemas

  • Síntoma: La cuenta supera 9.
  • Causa: QB o QD no está correctamente conectado a la puerta AND.
  • Solución: verifica U2 pin 1 = QB, U2 pin 2 = QD y U2 pin 3 = RESET_NODE.

  • Síntoma: El circuito nunca cuenta.

  • Causa: RESET_NODE está atascado en HIGH.
  • Solución: revisa si hay cableado incorrecto, cortocircuitos o pines intercambiados en la puerta AND.

  • Síntoma: Los LED se comportan aleatoriamente al encender.

  • Causa: los contadores ripple pueden arrancar en un estado indefinido.
  • Solución: aplica un pulso corto de reset al inicio.

  • Síntoma: El reset no es fiable.

  • Causa: se usó una familia lógica incorrecta para la puerta de reset.
  • Solución: reemplaza cualquier 74HC08 por 74HCT08.

  • Síntoma: Solo conmuta la primera etapa.

  • Causa: falta la conexión en cascada de QA a CP1.
  • Solución: vuelve a conectar el pin 12 de U1 al pin 1 de U1.

Posibles mejoras y extensiones

  • Añade un decodificador BCD a 7 segmentos y una pantalla para que la cuenta se muestre directamente como dígitos de 0 a 9.
  • Sustituye la fuente de reloj por un pulsador con anti-rebote para avance manual y observación de cada estado.

Más Casos Prácticos en Prometeo.blog

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Qué circuito integrado se utiliza como contador ripple de 4 bits en el montaje descrito?




Pregunta 2: ¿Qué función cumple el 74HCT08 en este contador decimal?




Pregunta 3: ¿Entre qué valores cuenta el circuito antes de reiniciarse?




Pregunta 4: ¿En qué estado binario se activa el borrado automático del contador?




Pregunta 5: ¿Cuándo pasa RESET_NODE a nivel HIGH según el artículo?




Pregunta 6: ¿Qué tensión de alimentación lógica se indica para mantener compatibilidad TTL?




Pregunta 7: ¿Cuál es una aplicación mencionada para este contador decimal?




Pregunta 8: ¿Qué muestran QA, QB, QC y QD durante el funcionamiento esperado?




Pregunta 9: ¿Qué tipo de reset se busca aprender con este montaje?




Pregunta 10: ¿Qué compatibilidad lógica se destaca entre los circuitos usados?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:


Caso práctico: Contador de objetos en cinta transportadora

Esquemático — Caso práctico: Contador de objetos en cinta transportadora

Nivel: Medio – Construye un contador óptico de objetos con salidas decimales y un reinicio automático de lote.

Objetivo y caso de uso

En este caso práctico, construirás un circuito contador óptico secuencial utilizando una resistencia dependiente de la luz (LDR), un inversor 74HC04 para el acondicionamiento de la señal y un contador de décadas CD4017BE. El circuito detecta objetos que interrumpen un haz de luz, los cuenta secuencialmente mediante indicadores LED y se reinicia automáticamente después de un lote de 5 artículos.

Este circuito es muy relevante en escenarios del mundo real:
Líneas de envasado: Agrupación automática de productos en tamaños de lote predeterminados (por ejemplo, 5 artículos por caja).
Automatización industrial: Seguimiento del movimiento de piezas discretas a lo largo de una cinta transportadora.
Enclavamientos de seguridad: Monitorización de interruptores de límite o barreras ópticas para garantizar que un ciclo de operación se complete en su totalidad.

Resultado esperado:
– El divisor de tensión de la LDR oscilará de ALTO (iluminada) a BAJO (haz bloqueado).
– El inversor 74HC04 generará un flanco de reloj de subida limpio (VB) con cada detección.
– El contador CD4017BE avanzará su señal lógica activa en ALTO a través de las salidas Q0 a Q4, encendiendo los LED en secuencia.
– Cuando se detecta el sexto objeto (conteo de 5), la salida Q5 activará el pin de reinicio, borrando instantáneamente el conteo de vuelta a 0.

Público objetivo: Estudiantes de electrónica que aprenden lógica secuencial, contadores decimales e integración básica de sensores.

Materiales

  • V1: fuente de alimentación de 5 V CC
  • RLDR1: Resistencia dependiente de la luz (LDR), función: detección óptica
  • R1: resistencia de 10 kΩ, función: pull-down del divisor de tensión para la LDR
  • U1: 74HC04, función: inversor lógico y conformador de flanco de reloj
  • U2: CD4017BE, función: contador de décadas con salidas decodificadas
  • D1: LED rojo, función: indicador del conteo 0
  • D2: LED rojo, función: indicador del conteo 1
  • D3: LED rojo, función: indicador del conteo 2
  • D4: LED rojo, función: indicador del conteo 3
  • D5: LED rojo, función: indicador del conteo 4
  • R2: resistencia de 330 Ω, función: limitación de corriente del LED D1
  • R3: resistencia de 330 Ω, función: limitación de corriente del LED D2
  • R4: resistencia de 330 Ω, función: limitación de corriente del LED D3
  • R5: resistencia de 330 Ω, función: limitación de corriente del LED D4
  • R6: resistencia de 330 Ω, función: limitación de corriente del LED D5
  • C1: condensador de 100 nF, función: desacoplo de U1
  • C2: condensador de 100 nF, función: desacoplo de U2

Pin-out del CI utilizado

74HC04 (Inversor hexadecimal)

Pin Nombre Función lógica Conexión en este caso
1 1A Entrada Se conecta al divisor de la LDR (VA)
2 1Y Salida Se conecta al reloj de U2 (VB)
7 GND Tierra Se conecta a 0
14 VCC Alimentación Se conecta a VCC

CD4017BE (Contador de décadas / divisor)

Pin Nombre Función lógica Conexión en este caso
14 CLK Entrada de reloj Se conecta a la señal invertida del sensor (VB)
13 CKE Habilitación de reloj Se conecta a 0 (activo en nivel bajo)
15 RST Reinicio Se conecta a Q5 (VC) para reinicio automático
3 Q0 Salida 0 Se conecta a la rama de D1 (V_Q0)
2 Q1 Salida 1 Se conecta a la rama de D2 (V_Q1)
4 Q2 Salida 2 Se conecta a la rama de D3 (V_Q2)
7 Q3 Salida 3 Se conecta a la rama de D4 (V_Q3)
10 Q4 Salida 4 Se conecta a la rama de D5 (V_Q4)
1 Q5 Salida 5 Se conecta a reinicio (VC)
8 VSS Tierra Se conecta a 0
16 VDD Alimentación Se conecta a VCC

Nota: Los pines 5, 6, 9, 11 y 12 son salidas decodificadas no utilizadas y el pin de acarreo; se dejan flotando en este caso.

Guía de conexionado

  • V1 se conecta entre VCC y 0.
  • RLDR1 se conecta entre VCC y VA.
  • R1 se conecta entre VA y 0.
  • El pin 14 de U1 se conecta a VCC.
  • El pin 7 de U1 se conecta a 0.
  • El pin 1 de U1 se conecta a VA.
  • El pin 2 de U1 se conecta a VB.
  • El pin 16 de U2 se conecta a VCC.
  • El pin 8 de U2 se conecta a 0.
  • El pin 13 de U2 se conecta a 0.
  • El pin 14 de U2 se conecta a VB.
  • El pin 1 de U2 se conecta a VC.
  • El pin 15 de U2 se conecta a VC.
  • El pin 3 de U2 se conecta a V_Q0.
  • El pin 2 de U2 se conecta a V_Q1.
  • El pin 4 de U2 se conecta a V_Q2.
  • El pin 7 de U2 se conecta a V_Q3.
  • El pin 10 de U2 se conecta a V_Q4.
  • R2 se conecta entre V_Q0 y V_D1.
  • D1 se conecta entre V_D1 y 0.
  • R3 se conecta entre V_Q1 y V_D2.
  • D2 se conecta entre V_D2 y 0.
  • R4 se conecta entre V_Q2 y V_D3.
  • D3 se conecta entre V_D3 y 0.
  • R5 se conecta entre V_Q3 y V_D4.
  • D4 se conecta entre V_D4 y 0.
  • R6 se conecta entre V_Q4 y V_D5.
  • D5 se conecta entre V_D5 y 0.
  • C1 se conecta entre VCC y 0, cerca de U1.
  • C2 se conecta entre VCC y 0, cerca de U2.

Diagrama de bloques conceptual

Conceptual block diagram — 74HC04 Decimal counter
Lectura rápida: entradas → bloque principal → salida (actuador o medida). Resume el esquemático ASCII de la siguiente sección.

Esquemático

[ U2: CD4017BE Decade Counter ]
                                                             |                             |
VCC --> [ RLDR1: LDR ] --(VA)--> [ U1: 74HC04 Inverter ] --(VB)--> CLK (Pin 14)            |
                           |                                 |                  Q0 (Pin 3)-|--(V_Q0)--> [ R2: 330 ] --> [ D1: Red LED ] --> GND
                           +---> [ R1: 10k ] --> GND         |                  Q1 (Pin 2)-|--(V_Q1)--> [ R3: 330 ] --> [ D2: Red LED ] --> GND
                                                             |                  Q2 (Pin 4)-|--(V_Q2)--> [ R4: 330 ] --> [ D3: Red LED ] --> GND
                                                 +--(VC)---------> RST (Pin 15) Q3 (Pin 7)-|--(V_Q3)--> [ R5: 330 ] --> [ D4: Red LED ] --> GND
                                                 |           |                  Q4 (Pin 10)|--(V_Q4)--> [ R6: 330 ] --> [ D5: Red LED ] --> GND
                                                 +---------------< Q5 (Pin 1)              |
                                                             |                             |
                                                 GND ------------> EN (Pin 13)             |
                                                             [-----------------------------]

* Power & Decoupling Notes:
  VCC --> [ C1: 100nF ] --> GND  (U1 Decoupling)
  VCC --> [ C2: 100nF ] --> GND  (U2 Decoupling)
  U1 Power: Pin 14 (VCC), Pin 7 (GND)
  U2 Power: Pin 16 (VCC), Pin 8 (GND)
Electrical Schematic

Diagrama eléctrico

Diagrama electrico del caso: Contador de objetos en cinta transportadora
Generado desde la netlist SPICE validada del caso.

🔒 Este diagrama eléctrico es premium. Con la suscripción mensual (7 días gratis) podrás desbloquear el material didáctico completo y el pack PDF listo para imprimir.🔓 Ver planes de acceso premium

Mediciones y pruebas

  1. Calibración del sensor: mide el nodo VA con un multímetro. Debe estar por encima de 4,0 V con la LDR iluminada y caer por debajo de 1,0 V cuando un objeto corta el haz. Ajusta R1 si tu LDR tiene otra curva de resistencia.
  2. Comprobación del flanco de reloj: conecta el osciloscopio al nodo VB. Al pasar un objeto por el haz debes ver una transición limpia de 0 V a 5 V.
  3. Verificación del conteo secuencial: observa los nodos V_Q0 a V_Q4. Cada pulso debe activar una salida distinta y encender D1 a D5 en orden.
  4. Validación del reinicio automático: monitoriza VC. Al detectar el sexto objeto debe aparecer un pulso breve que reinicia el contador y vuelve a activar D1.

Netlist SPICE y simulación

Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)

* Conveyor belt object counter
.width out=256

* --- Digital Subcircuits ---

* Analog Behavioral D-Flip-Flop with Asynchronous Reset
.subckt DFF D CLK RST Q
B_M M_int 0 V = V(RST)>2.5 ? 0 : (V(CLK)>2.5 ? (V(M_state)>2.5 ? 5 : 0) : (V(D)>2.5 ? 5 : 0))
R_M M_int M_state 100
C_M M_state 0 1n

B_S S_int 0 V = V(RST)>2.5 ? 0 : (V(CLK)>2.5 ? (V(M_state)>2.5 ? 5 : 0) : (V(S_state)>2.5 ? 5 : 0))
R_S S_int S_state 100
C_S S_state 0 1n

B_Q Q_int 0 V = V(S_state)>2.5 ? 5 : 0
R_Q Q_int Q 100
C_Q Q 0 1n
.ends

* ... (truncated in public view) ...

Copia este contenido en un archivo .cir y ejecútalo con ngspice.

🔒 Parte del contenido de esta sección es premium. Con la suscripción mensual (7 días gratis) tendrás acceso al contenido completo (materiales, conexionado, compilación detallada, validación paso a paso, troubleshooting, mejoras/variantes y checklist) y podrás descargar el pack PDF listo para imprimir.

* Conveyor belt object counter
.width out=256

* --- Digital Subcircuits ---

* Analog Behavioral D-Flip-Flop with Asynchronous Reset
.subckt DFF D CLK RST Q
B_M M_int 0 V = V(RST)>2.5 ? 0 : (V(CLK)>2.5 ? (V(M_state)>2.5 ? 5 : 0) : (V(D)>2.5 ? 5 : 0))
R_M M_int M_state 100
C_M M_state 0 1n

B_S S_int 0 V = V(RST)>2.5 ? 0 : (V(CLK)>2.5 ? (V(M_state)>2.5 ? 5 : 0) : (V(S_state)>2.5 ? 5 : 0))
R_S S_int S_state 100
C_S S_state 0 1n

B_Q Q_int 0 V = V(S_state)>2.5 ? 5 : 0
R_Q Q_int Q 100
C_Q Q 0 1n
.ends

* CD4017BE Decade Counter (5-stage Johnson Counter with decoded outputs)
* Pins: 1:Q5(VC), 2:Q1, 3:Q0, 4:Q2, 7:Q3, 8:GND, 10:Q4, 13:EN, 14:CLK, 15:RST, 16:VCC
.subckt CD4017 1 2 3 4 7 8 10 13 14 15 16
B_CLK_INT CLK_INT 0 V = (V(14)>2.5) * (V(13)<2.5) * 5
R_CLK CLK_INT CLK_F 100
C_CLK CLK_F 0 1n

XF1 D1 CLK_F 15 F1 DFF
XF2 F1 CLK_F 15 F2 DFF
XF3 F2 CLK_F 15 F3 DFF
XF4 F3 CLK_F 15 F4 DFF
XF5 F4 CLK_F 15 F5 DFF

B_D1_int D1_int 0 V = V(F5)>2.5 ? 0 : 5
R_D1 D1_int D1 100
C_D1 D1 0 1n

B_Q0_int Q0_int 0 V = (V(F1)<2.5) * (V(F5)<2.5) * 5
R_Q0 Q0_int 3 100
C_Q0 3 0 1n

B_Q1_int Q1_int 0 V = (V(F1)>2.5) * (V(F2)<2.5) * 5
R_Q1 Q1_int 2 100
C_Q1 2 0 1n

B_Q2_int Q2_int 0 V = (V(F2)>2.5) * (V(F3)<2.5) * 5
R_Q2 Q2_int 4 100
C_Q2 4 0 1n

B_Q3_int Q3_int 0 V = (V(F3)>2.5) * (V(F4)<2.5) * 5
R_Q3 Q3_int 7 100
C_Q3 7 0 1n

B_Q4_int Q4_int 0 V = (V(F4)>2.5) * (V(F5)<2.5) * 5
R_Q4 Q4_int 10 100
C_Q4 10 0 1n

* Q5 output is used for the modulo-5 reset via VC, so it uses a slightly larger delay 
* to guarantee the reset pulse is wide enough to clear all DFFs.
B_Q5_int Q5_int 0 V = (V(F5)>2.5) * (V(F1)>2.5) * 5
R_Q5 Q5_int 1 100
C_Q5 1 0 10n

* Dummy loads to prevent warnings on power pins
R_GND 8 0 1
R_VCC 16 0 1Meg
.ends

* 74HC04 Hex Inverter (single gate modeled for pins 1, 2)
* Pins: 1:A, 2:Y, 7:GND, 14:VCC
.subckt 74HC04 1 2 7 14
B_Y_int Y_int 0 V = V(1)>2.5 ? 0 : 5
R_Y Y_int 2 100
C_Y 2 0 1n
R_GND 7 0 1
R_VCC 14 0 1Meg
.ends

* --- Main Circuit ---

* Power Supply
V1 VCC 0 DC 5

* Optical Sensing (LDR and pull-down divider)
* Conveyor beam is normally ON (light=1), LDR is 1k. 
* When object passes, light is blocked (light=0), LDR becomes 100k.
V_LIGHT N_LIGHT 0 PULSE(1 0 0.1 0.05 0.05 0.2 0.5)
R_LIGHT N_LIGHT 0 1Meg 
RLDR1 VCC VA R='V(N_LIGHT) > 0.5 ? 1k : 100k'
R1 VA 0 10k

* Edge sharpener and logic inverter
XU1 VA VB 0 VCC 74HC04

* Decade Counter
XU2 VC V_Q1 V_Q0 V_Q2 V_Q3 0 V_Q4 0 VB VC VCC CD4017

* LED Output Indicators
.model RED_LED D(IS=1e-18 N=1.8 RS=10)

R2 V_Q0 V_D1 330
D1 V_D1 0 RED_LED

R3 V_Q1 V_D2 330
D2 V_D2 0 RED_LED

R4 V_Q2 V_D3 330
D3 V_D3 0 RED_LED

R5 V_Q3 V_D4 330
D4 V_D4 0 RED_LED

R6 V_Q4 V_D5 330
D5 V_D5 0 RED_LED

* Decoupling Capacitors
C1 VCC 0 100n
C2 VCC 0 100n

* Dummy IN/OUT assignments for strict output requirements
R_IN VA IN 1
R_IN_GND IN 0 100Meg
R_OUT V_Q4 OUT 1
R_OUT_GND OUT 0 100Meg

* --- Simulation Commands ---
.op
.tran 1m 3.0
.print tran V(IN) V(OUT) V(VA) V(V_Q0) V(V_Q1) V(V_Q2) V(V_Q3) V(V_Q4)

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The simulation shows the input signal (VA) toggling between ~4.5V and ~0.45V, representing the LDR state changes. The outputs V_Q0 to V_Q4 sequentially pulse high to ~4.25V, confirming the decade counter is advancing correctly with each input pulse.
Show raw data table (3128 rows)
Index   time            v(in)           v(out)          v(va)           v(v_q0)         v(v_q1)         v(v_q2)         v(v_q3)         v(v_q4)
0	0.000000e+00	4.545413e+00	7.813983e-36	4.545413e+00	7.814080e-36	4.250409e+00	7.814080e-36	7.814080e-36	7.813983e-36
1	1.000000e-05	4.545413e+00	7.736609e-38	4.545413e+00	7.736713e-38	4.250409e+00	7.736713e-38	7.736713e-38	7.736609e-38
2	2.000000e-05	4.545413e+00	7.660001e-40	4.545413e+00	7.660112e-40	4.250409e+00	7.660112e-40	7.660112e-40	7.660001e-40
3	4.000000e-05	4.545413e+00	-7.50832e-40	4.545413e+00	-7.50843e-40	4.250409e+00	-7.50843e-40	-7.50843e-40	-7.50832e-40
4	8.000000e-05	4.545413e+00	7.433609e-40	4.545413e+00	7.433716e-40	4.250409e+00	7.433716e-40	7.433716e-40	7.433609e-40
5	1.600000e-04	4.545413e+00	-7.39653e-40	4.545413e+00	-7.39664e-40	4.250409e+00	-7.39664e-40	-7.39664e-40	-7.39653e-40
6	3.200000e-04	4.545413e+00	7.378065e-40	4.545413e+00	7.378171e-40	4.250409e+00	7.378171e-40	7.378171e-40	7.378065e-40
7	6.400000e-04	4.545413e+00	-7.36885e-40	4.545413e+00	-7.36895e-40	4.250409e+00	-7.36895e-40	-7.36895e-40	-7.36885e-40
8	1.280000e-03	4.545413e+00	7.364244e-40	4.545413e+00	7.364350e-40	4.250409e+00	7.364350e-40	7.364350e-40	7.364244e-40
9	2.280000e-03	4.545413e+00	-7.36130e-40	4.545413e+00	-7.36141e-40	4.250409e+00	-7.36141e-40	-7.36141e-40	-7.36130e-40
10	3.280000e-03	4.545413e+00	7.358355e-40	4.545413e+00	7.358461e-40	4.250409e+00	7.358461e-40	7.358461e-40	7.358355e-40
11	4.280000e-03	4.545413e+00	-7.35541e-40	4.545413e+00	-7.35552e-40	4.250409e+00	-7.35552e-40	-7.35552e-40	-7.35541e-40
12	5.280000e-03	4.545413e+00	7.352471e-40	4.545413e+00	7.352577e-40	4.250409e+00	7.352577e-40	7.352577e-40	7.352471e-40
13	6.280000e-03	4.545413e+00	-7.34953e-40	4.545413e+00	-7.34964e-40	4.250409e+00	-7.34964e-40	-7.34964e-40	-7.34953e-40
14	7.280000e-03	4.545413e+00	7.346591e-40	4.545413e+00	7.346697e-40	4.250409e+00	7.346697e-40	7.346697e-40	7.346591e-40
15	8.280000e-03	4.545413e+00	-7.34365e-40	4.545413e+00	-7.34376e-40	4.250409e+00	-7.34376e-40	-7.34376e-40	-7.34365e-40
16	9.280000e-03	4.545413e+00	7.340716e-40	4.545413e+00	7.340822e-40	4.250409e+00	7.340822e-40	7.340822e-40	7.340716e-40
17	1.028000e-02	4.545413e+00	-7.33778e-40	4.545413e+00	-7.33789e-40	4.250409e+00	-7.33789e-40	-7.33789e-40	-7.33778e-40
18	1.128000e-02	4.545413e+00	7.334846e-40	4.545413e+00	7.334952e-40	4.250409e+00	7.334952e-40	7.334952e-40	7.334846e-40
19	1.228000e-02	4.545413e+00	-7.33191e-40	4.545413e+00	-7.33202e-40	4.250409e+00	-7.33202e-40	-7.33202e-40	-7.33191e-40
20	1.328000e-02	4.545413e+00	7.328981e-40	4.545413e+00	7.329086e-40	4.250409e+00	7.329086e-40	7.329086e-40	7.328981e-40
21	1.428000e-02	4.545413e+00	-7.32605e-40	4.545413e+00	-7.32616e-40	4.250409e+00	-7.32616e-40	-7.32616e-40	-7.32605e-40
22	1.528000e-02	4.545413e+00	7.323120e-40	4.545413e+00	7.323225e-40	4.250409e+00	7.323225e-40	7.323225e-40	7.323120e-40
23	1.628000e-02	4.545413e+00	-7.32019e-40	4.545413e+00	-7.32030e-40	4.250409e+00	-7.32030e-40	-7.32030e-40	-7.32019e-40
... (3104 more rows) ...

Errores comunes y cómo evitarlos

  1. Dejar CKE flotante: el pin 13 del CD4017BE es activo en nivel bajo. Si queda sin conectar, el ruido puede bloquear o habilitar el reloj de forma impredecible. Conéctalo siempre a 0.
  2. Omitir resistencias en los LED: conectar los LED directamente a las salidas del CD4017BE puede dañar el integrado. Cada LED debe llevar su resistencia limitadora, por ejemplo 330 Ω.
  3. Transiciones lentas del sensor: si el objeto se mueve despacio, la señal de la LDR puede permanecer demasiado tiempo cerca del umbral lógico y producir varios pulsos. En ese caso conviene sustituir el 74HC04 por un inversor Schmitt como el 74HC14.

Solución de problemas

  • Síntoma: el contador salta números o cuenta de forma aleatoria.
  • Causa: ruido eléctrico en la línea de la LDR o vibraciones que afectan al haz de luz.
  • Solución: añade un condensador pequeño, por ejemplo 10 nF, entre VA y 0 para filtrar ruido de alta frecuencia.
  • Síntoma: el circuito se queda siempre en D1 y no avanza.
  • Causa: el pin de reinicio está fijo en alto o el pin CKE está en alto.
  • Solución: revisa la conexión entre Q5 y RST, y confirma que el pin 13 está unido a 0.
  • Síntoma: los LED se ven muy tenues.
  • Causa: las resistencias limitadoras son demasiado grandes o la alimentación cae por falta de corriente.
  • Solución: comprueba que R2-R6 son de 330 Ω y que VCC se mantiene estable en 5 V.

Posibles mejoras y extensiones

  1. Visualización numérica: sustituir la lógica de LED por un CD4026BE permite excitar directamente un display de 7 segmentos y mostrar el conteo como dígito.
  2. Antirrebote con monoestable: insertar un NE555 en configuración monoestable entre VB y el reloj del contador garantiza un único pulso de duración fija por objeto detectado.
  3. Tamaño de lote ajustable: puedes elegir otra salida del CD4017BE para el reinicio si necesitas agrupar 3, 4, 6 o más objetos.
  4. Salida de control: añade un transistor o un relé para activar una compuerta, zumbador o actuador cuando se complete el lote.

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Qué función realiza la LDR en este circuito?



Pregunta 2: ¿Por qué se usa el 74HC04?



Pregunta 3: ¿Qué entrada del CD4017BE recibe los pulsos de conteo?



Pregunta 4: ¿Qué ocurre cuando se activa Q5 en este montaje?



Pregunta 5: ¿Por qué cada LED necesita su propia resistencia?



Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:


Caso práctico: Controlador automático de bomba de depósito

Prototipo de Controlador automático de bomba de depósito (Maker Style)

Nivel: Medio | Construye un circuito de relé accionado por transistor para controlar automáticamente una bomba de agua usando un interruptor de flotador.

Objetivo y caso de uso

En este caso práctico, construirás un controlador automático de bomba de depósito. El circuito utiliza un interruptor de flotador mecánico para activar un transistor NPN, el cual energiza un relé electromecánico para accionar una bomba de CC de alta corriente (simulada aquí como una carga resistiva) y un LED de estado.

Por qué es útil:
* Automatiza la gestión del nivel de agua en tanques, depósitos y sumideros.
* Aísla de forma segura los circuitos de control de bajo voltaje de las cargas de alta potencia.
* Demuestra la interconexión práctica de sensores mecánicos simples con electrónica de potencia.
* Previene condiciones de desbordamiento o funcionamiento en seco en entornos industriales y agrícolas.

Resultado esperado:
* Al cerrar el interruptor de flotador se aplica un voltaje a la base del transistor, encendiéndolo (saturación).
* El transistor absorbe corriente para la bobina del relé, energizándola y cerrando su contacto normalmente abierto (NO).
* La bomba de CC simulada (resistencia de carga) recibe todo el voltaje de alimentación.
* El LED indicador de estado se ilumina cuando la bomba está activa.
* Al soltar el interruptor se desenergiza el relé, y el diodo flyback disipa de forma segura el pico de voltaje inductivo de la bobina.

Público objetivo: Estudiantes de electrónica de nivel intermedio que aprenden sobre conmutación de transistores, relés electromecánicos y protección de cargas inductivas.

Materiales

  • V1: fuente de alimentación de 12 V CC, función: alimentación principal para la bobina del relé y la bomba
  • V2: fuente de alimentación de 5 V CC, función: alimentación lógica de control para el interruptor de flotador
  • SW1: interruptor SPST, función: interruptor de flotador simulado o sensor de nivel alto
  • R1: resistencia de 1 kΩ, función: limitación de corriente de base del transistor
  • R2: resistencia de 10 kΩ, función: pull-down para la base del transistor para asegurar el apagado
  • R3: resistencia de 1 kΩ, función: limitación de corriente del LED
  • RLOAD: resistencia de alta potencia de 50 Ω, función: carga de bomba de CC simulada
  • Q1: transistor NPN 2N2222, función: controlador de la bobina del relé
  • D1: diodo 1N4007, función: protección flyback para la bobina del relé
  • D2: LED verde, función: indicador de estado de la bomba
  • K1: relé SPDT de 12 V, función: interruptor electromecánico para la bomba

Guía de conexionado

  • V1 se conecta entre el nodo VCC12 y el nodo 0.
  • V2 se conecta entre el nodo VCC5 y el nodo 0.
  • SW1 se conecta entre el nodo VCC5 y el nodo SENSE.
  • R1 se conecta entre el nodo SENSE y el nodo VB.
  • R2 se conecta entre el nodo VB y el nodo 0.
  • La base de Q1 se conecta al nodo VB, el emisor se conecta al nodo 0, y el colector se conecta al nodo COIL_NEG.
  • La bobina de K1 se conecta entre el nodo VCC12 y el nodo COIL_NEG.
  • El contacto COM (Común) de K1 se conecta al nodo VCC12.
  • El contacto NO (Normalmente Abierto) de K1 se conecta al nodo LOAD_SW.
  • El cátodo de D1 se conecta al nodo VCC12 y el ánodo se conecta al nodo COIL_NEG (colocado en antiparalelo a la bobina del relé).
  • RLOAD se conecta entre el nodo LOAD_SW y el nodo 0.
  • R3 se conecta entre el nodo LOAD_SW y el ánodo de D2.
  • El cátodo de D2 se conecta al nodo 0.

Diagrama de bloques conceptual

Conceptual block diagram — Relay Pump Controller
Lectura rápida: entradas → bloque principal → salida (actuador o medida). Resume el esquemático ASCII de la siguiente sección.

Esquemático

VCC5 --> [ SW1 ] --(SENSE)--> [ R1 ] --(VB)--> [ Q1:B ]
                                              |          |
                                            [ R2 ]       |
                                              |          |
                                             GND         |
                                                         |
      VCC12 --> [ K1 Coil || D1(Rev) ] --(COIL_NEG)--> [ Q1:C ] --( )-- [ Q1:E ] --> GND
                       |
                (Magnetic Link)
                       v
      VCC12 --> [ K1 Switch (COM->NO) ] --(LOAD_SW)--> [ RLOAD (Pump) ] --> GND
                                              |
                                              +------> [ R3 ] --> [ D2 (LED) ] --> GND
Esquema Eléctrico

Diagrama eléctrico

Diagrama eléctrico del caso: Controlador automático de bomba de depósito
Generado desde la netlist SPICE validada del caso.

🔒 Este diagrama eléctrico es premium. Con la suscripción mensual (7 días gratis) podrás desbloquear el material didáctico completo y el pack PDF listo para imprimir.🔓 Ver planes de acceso premium

Mediciones y pruebas

  1. Prueba de lógica de control: Con SW1 abierto, mide el voltaje en el nodo SENSE. Debería ser 0 V. Cierra SW1 y verifica que el voltaje suba a 5 V.
  2. Verificación del control de base: Mide el voltaje en el nodo VB con SW1 cerrado. Debería marcar aproximadamente 0.7 V, confirmando que la unión base-emisor de Q1 está polarizada en directa.
  3. Verificación de conmutación de la bobina: Mide el nodo COIL_NEG. Cuando SW1 esté abierto, debería medir 12 V. Cuando SW1 esté cerrado, debería caer a casi 0 V (Vce_sat del transistor), confirmando que la bobina está energizada.
  4. Prueba de entrega a la carga: Mide el voltaje en el nodo LOAD_SW. Verifica que marque 0 V cuando el relé esté apagado, y que salte a 12 V cuando el relé se active (haga clic). Comprueba que RLOAD consume corriente y D2 se ilumina.

Netlist SPICE y simulación

Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)

* Automatic Reservoir Pump Controller
.width out=256

* Power Supplies
V1 VCC12 0 DC 12
V2 VCC5 0 DC 5

* Simulated Float Switch (SW1)
* Using a voltage-controlled switch and a pulse source to simulate a user/sensor triggering the switch
V_SW_CTRL SW_CTRL 0 PULSE(0 5 50u 1u 1u 200u 500u)
S1 VCC5 SENSE SW_CTRL 0 myswitch

* Base driving circuit
R1 SENSE VB 1k
R2 VB 0 10k

* Relay Driver Transistor
Q1 COIL_NEG VB 0 2N2222MOD

* Relay Coil (K1)
* ... (truncated in public view) ...

Copia este contenido en un archivo .cir y ejecútalo con ngspice.

🔒 Parte del contenido de esta sección es premium. Con la suscripción mensual (7 días gratis) tendrás acceso al contenido completo (materiales, conexionado, compilación detallada, validación paso a paso, troubleshooting, mejoras/variantes y checklist) y podrás descargar el pack PDF listo para imprimir.

* Automatic Reservoir Pump Controller
.width out=256

* Power Supplies
V1 VCC12 0 DC 12
V2 VCC5 0 DC 5

* Simulated Float Switch (SW1)
* Using a voltage-controlled switch and a pulse source to simulate a user/sensor triggering the switch
V_SW_CTRL SW_CTRL 0 PULSE(0 5 50u 1u 1u 200u 500u)
S1 VCC5 SENSE SW_CTRL 0 myswitch

* Base driving circuit
R1 SENSE VB 1k
R2 VB 0 10k

* Relay Driver Transistor
Q1 COIL_NEG VB 0 2N2222MOD

* Relay Coil (K1)
* Modeled as a series resistor and inductor
R_K1 VCC12 K1_COIL_INT 400
L_K1 K1_COIL_INT COIL_NEG 10mH

* Flyback Diode
D1 COIL_NEG VCC12 1N4007MOD

* Relay Contacts (K1 NO)
* The switch closes when the voltage across the coil (VCC12 - COIL_NEG) exceeds 8V
S_RELAY VCC12 LOAD_SW VCC12 COIL_NEG relay_sw

* Simulated Pump Load
RLOAD LOAD_SW 0 50

* Status LED
R3 LOAD_SW D2_A 1k
D2 D2_A 0 DLED

* Models
.model myswitch SW(vt=2.5 vh=0.5 ron=0.1 roff=10MEG)
.model relay_sw SW(vt=8 vh=1 ron=0.05 roff=100MEG)
.model 2N2222MOD NPN(IS=1E-14 VAF=100 BF=200 IKF=0.3 XTB=1.5 BR=3 CJC=8E-12 CJE=25E-12 TR=100E-9 TF=400E-12 ITF=1 VTF=2 XTF=3 RB=10)
.model 1N4007MOD D(IS=7.02767n RS=0.0341512 N=1.80803 EG=1.11 XTI=3.0 BV=1000 IBV=5e-08 CJO=1e-11 VJ=0.7 M=0.5 FC=0.5 TT=1e-07)
.model DLED D(IS=1e-20 N=2.2 RS=2.5 BV=5 IBV=10u CJO=50p)

* Analysis Commands
.op
.tran 1u 500u
.print tran V(SENSE) V(LOAD_SW) V(COIL_NEG) V(VB) I(L_K1)

.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The transient analysis spans 0 s to 500 us and captures the switching interval. The switching node and inductor current remain bounded, consistent with the flyback path protecting the switch. Main ranges: l_k1#branch -7.86 uA -> 29.9 mA; v(coil_neg) 9.89 mV -> 12.7 V; v(load_sw) 6 uV -> 12 V.
Show raw data table (961 rows)
Index   time            v(sense)        v(load_sw)      v(coil_neg)     v(vb)           l_k1#branch
0	0.000000e+00	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403801e-11
1	1.000000e-08	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403803e-11
2	2.000000e-08	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403801e-11
3	4.000000e-08	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403795e-11
4	8.000000e-08	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403772e-11
5	1.600000e-07	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403654e-11
6	3.200000e-07	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403033e-11
7	6.400000e-07	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.400598e-11
8	1.280000e-06	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.398528e-11
9	2.280000e-06	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.403534e-11
10	3.280000e-06	5.494077e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.401174e-11
11	4.280000e-06	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.394780e-11
12	5.280000e-06	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.402136e-11
13	6.280000e-06	5.494077e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.408634e-11
14	7.280000e-06	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.401469e-11
15	8.280000e-06	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.399217e-11
16	9.280000e-06	5.494077e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.399919e-11
17	1.028000e-05	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.393646e-11
18	1.128000e-05	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.397704e-11
19	1.228000e-05	5.494077e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.408121e-11
20	1.328000e-05	5.494077e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.402567e-11
21	1.428000e-05	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.395460e-11
22	1.528000e-05	5.494076e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.400449e-11
23	1.628000e-05	5.494077e-03	5.999997e-06	1.200000e+01	4.994626e-03	2.399821e-11
... (937 more rows) ...


Netlist SPICE de referencia (ngspice)

* Automatic Reservoir Pump Controller
.width out=256

* Power Supplies
V1 VCC12 0 DC 12
V2 VCC5 0 DC 5

* Simulated Float Switch (SW1)
* Using a voltage-controlled switch and a pulse source to simulate a user/sensor triggering the switch
V_SW_CTRL SW_CTRL 0 PULSE(0 5 50u 1u 1u 200u 500u)
S1 VCC5 SENSE SW_CTRL 0 myswitch

* Base driving circuit
R1 SENSE VB 1k
R2 VB 0 10k

* Relay Driver Transistor
Q1 COIL_NEG VB 0 2N2222MOD

* Relay Coil (K1)
* Modeled as a series resistor and inductor
R_K1 VCC12 K1_COIL_INT 400
L_K1 K1_COIL_INT COIL_NEG 10mH

* Flyback Diode
D1 COIL_NEG VCC12 1N4007MOD

* Relay Contacts (K1 NO)
* The switch closes when the voltage across the coil (VCC12 - COIL_NEG) exceeds 8V
S_RELAY VCC12 LOAD_SW VCC12 COIL_NEG relay_sw

* Simulated Pump Load
RLOAD LOAD_SW 0 50

* Status LED
R3 LOAD_SW D2_A 1k
D2 D2_A 0 DLED

* Models
.model myswitch SW(vt=2.5 vh=0.5 ron=0.1 roff=10MEG)
.model relay_sw SW(vt=8 vh=1 ron=0.05 roff=100MEG)
.model 2N2222MOD NPN(IS=1E-14 VAF=100 BF=200 IKF=0.3 XTB=1.5 BR=3 CJC=8E-12 CJE=25E-12 TR=100E-9 TF=400E-12 ITF=1 VTF=2 XTF=3 RB=10)
.model 1N4007MOD D(IS=7.02767n RS=0.0341512 N=1.80803 EG=1.11 XTI=3.0 BV=1000 IBV=5e-08 CJO=1e-11 VJ=0.7 M=0.5 FC=0.5 TT=1e-07)
.model DLED D(IS=1e-20 N=2.2 RS=2.5 BV=5 IBV=10u CJO=50p)

* Analysis Commands
.op
.tran 1u 500u
.print tran V(SENSE) V(LOAD_SW) V(COIL_NEG) V(VB) I(L_K1)

.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The transient analysis spans 0 s to 500 us and captures the switching interval. The switching node and inductor current remain bounded, consistent with the flyback path protecting the switch. Main ranges: l_k1#branch -7.86 uA -> 29.9 mA; v(coil_neg) 9.89 mV -> 12.7 V; v(load_sw) 6 uV -> 12 V.

Errores comunes y cómo evitarlos

  • Falta del diodo flyback (D1): Cuando el relé se apaga, el colapso del campo magnético en la bobina genera un pico de voltaje masivo. Sin D1 para proporcionar un camino de descarga seguro, este pico destruirá instantáneamente Q1. Coloca siempre D1 polarizado en inversa a través de la bobina.
  • Corriente de base insuficiente: Si R1 es demasiado grande, Q1 operará en su región lineal en lugar de saturarse completamente. Esto hará que el transistor se sobrecaliente y es posible que el relé no se accione de manera confiable. Asegúrate siempre de que R1 proporcione suficiente corriente de base (Ib) para la corriente de colector (Ic) requerida.
  • Contactos del relé subdimensionados: Los motores y bombas consumen una enorme corriente de «irrupción» (inrush) al arrancar. Usar un relé clasificado exactamente para la corriente de funcionamiento hará que los contactos se suelden o se quemen. Selecciona siempre un relé clasificado para al menos 2-3 veces la corriente continua de la carga.

Solución de problemas

  • Síntoma: El relé castañetea o zumba rápidamente en lugar de enclavarse limpiamente.
  • Causa: La fuente de alimentación de 12 V es demasiado débil y el voltaje cae bajo la gran carga de la bomba, haciendo que la bobina del relé pierda fuerza de retención, desconecte la carga, se recupere y repita el ciclo.
  • Solución: Usa una fuente de alimentación de banco con mayor capacidad de corriente o prueba con una batería.
  • Síntoma: El transistor Q1 se calienta extremadamente y falla.
  • Causa: Falta el diodo flyback, o la demanda de corriente de la bobina del relé excede la corriente máxima de colector del 2N2222.
  • Solución: Verifica que D1 esté instalado correctamente. Comprueba la resistencia de la bobina del relé; asegúrate de que consuma menos de 600 mA.
  • Síntoma: El circuito se enciende aleatoriamente sin la acción del interruptor de flotador.
  • Causa: La base de Q1 está flotando, captando interferencias electromagnéticas ambientales.
  • Solución: Asegúrate de que la resistencia pull-down R2 esté conectada de forma segura entre el nodo VB y tierra.
  • Síntoma: El LED se enciende, pero la bomba simulada (RLOAD) no funciona.
  • Causa: Conexión rota en el contacto NO del relé o una resistencia de carga quemada.
  • Solución: Comprueba el cableado entre el pin NO del relé y LOAD_SW. Verifica la resistencia de RLOAD con un multímetro.

Posibles mejoras y extensiones

  • Corte por nivel bajo de agua (Lógica de enclavamiento): Agrega un segundo interruptor de flotador y configura el relé como un circuito de enclavamiento. Esto asegura que la bomba funcione continuamente hasta que el tanque esté completamente lleno, en lugar de hacer ciclos cortos.
  • Red de retardo antirrebote: Las ondas de agua en un tanque pueden hacer que el interruptor de flotador rebote rápidamente encendiéndose y apagándose. Agrega una red de retardo RC (un condensador y una resistencia) en la base del transistor, o usa un temporizador 555, para introducir un retardo de encendido/apagado y proteger la bomba.

Más Casos Prácticos en Prometeo.blog

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Cuál es el objetivo principal del circuito descrito en el artículo?




Pregunta 2: ¿Qué componente se utiliza para detectar el nivel de agua en este circuito?




Pregunta 3: ¿Cuál es la función del transistor NPN en el circuito?




Pregunta 4: ¿Por qué es útil el uso de un relé en este diseño?




Pregunta 5: ¿Qué sucede cuando se cierra el interruptor de flotador?




Pregunta 6: ¿En qué estado de operación entra el transistor cuando se activa para encender el relé?




Pregunta 7: ¿Qué contacto del relé se cierra cuando la bobina se energiza para accionar la bomba?




Pregunta 8: ¿Qué problema previene este circuito en entornos industriales y agrícolas?




Pregunta 9: En este caso práctico, ¿cómo se simula la bomba de CC de alta corriente?




Pregunta 10: Además de accionar la bomba, ¿qué otro elemento se activa para indicar el estado del sistema?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:


Caso práctico: Protección contra sobretensión

Esquemático — Caso práctico: Protección contra sobretensión

Nivel: Medio – Desconectar una carga crítica utilizando un contacto de relé normalmente cerrado cuando se excede un umbral de voltaje.

Objetivo y caso de uso

En este caso práctico, construirás un circuito de protección contra sobretensión basado en hardware. Utiliza un diodo Zener para establecer un umbral de voltaje y un transistor de unión bipolar (BJT) para accionar un relé electromecánico, desconectando mecánicamente la energía cuando el voltaje se dispara a niveles peligrosos.

Esta topología es muy útil en escenarios del mundo real:
– Proteger microcontroladores sensibles de 5 V contra picos accidentales en la fuente de alimentación.
– Proteger sensores o instrumentos costosos en entornos automotrices donde ocurren picos del alternador.
– Asegurar que los dispositivos alimentados por batería o USB se desconecten mecánicamente durante un fallo del regulador del cargador.

Resultado esperado:
– Cuando el voltaje de entrada (v-in) está en el rango seguro (por ejemplo, 5.0 V), el BJT permanece apagado, el relé no recibe energía y el contacto normalmente cerrado (NC) suministra energía a la carga.
– Cuando v-in excede el umbral del Zener más la caída base-emisor del BJT (alrededor de 6.3 V), el Zener conduce.
– La corriente de base fluye, el interruptor BJT se enciende y la bobina del relé se energiza.
– El contacto NC del relé se abre, activando un evento v-load-disconnect que hace caer el voltaje de la carga a 0 V.
– Público objetivo y nivel: Estudiantes de electrónica de nivel intermedio que exploran umbrales de voltaje analógicos y conmutación electromecánica.

Materiales

  • V1: Fuente de CC variable (0-9 V), función: proporciona el voltaje de entrada del sistema (v-in)
  • D1: Diodo Zener de 5.6 V (ej. 1N4734 A), función: establece la referencia del umbral de sobretensión
  • R1: Resistencia de 1 kΩ, función: limitación de corriente de base para el BJT
  • R2: Resistencia de 10 kΩ, función: pull-down de base para asegurar que el BJT se apague limpiamente
  • Q1: Transistor NPN 2N3904, función: interruptor controlador del relé
  • D2: Diodo 1N4148 o 1N4007, función: protección flyback (diodo volante) para la bobina del relé
  • K1: Relé SPDT de 5 V, función: desconecta la carga utilizando su contacto normalmente cerrado (NC)
  • R_LOAD: Resistencia de 100 Ω, función: carga crítica simulada

Guía de conexionado

  • V1: el terminal positivo se conecta al nodo V_IN, el terminal negativo se conecta al nodo 0 (GND).
  • D1: el cátodo se conecta al nodo V_IN, el ánodo se conecta al nodo V_ZENER.
  • R1: se conecta entre el nodo V_ZENER y el nodo BASE.
  • R2: se conecta entre el nodo BASE y el nodo 0.
  • Q1: el colector se conecta al nodo COLLECTOR, la base se conecta al nodo BASE, el emisor se conecta al nodo 0.
  • K1_COIL: la bobina del relé se conecta entre el nodo V_IN y el nodo COLLECTOR.
  • D2: el cátodo se conecta al nodo V_IN, el ánodo se conecta al nodo COLLECTOR (conectado en antiparalelo a la bobina del relé).
  • K1_COM: el contacto común del relé se conecta al nodo V_IN.
  • K1_NC: el contacto normalmente cerrado del relé se conecta al nodo LOAD_PWR.
  • R_LOAD: se conecta entre el nodo LOAD_PWR y el nodo 0.

Diagrama de bloques conceptual

Conceptual block diagram — Overvoltage Protection
Lectura rápida: entradas → bloque principal → salida (actuador o medida). Resume el esquemático ASCII de la siguiente sección.

Esquemático

POWER SOURCE:
[ V1: 0-9 V DC ] --(V_IN)--> System Power
[ V1: Negative ] ---------> GND

1. OVERVOLTAGE SENSING & CONTROL PATH:
V_IN --> [ D1: 5.6 V Zener ] --(V_ZENER)--> [ R1: 1 kΩ ] --(BASE)--> [ Q1:Base ]
                                                             |
                                                        [ R2: 10 kΩ ]
                                                             |
                                                            GND

2. RELAY COIL & DRIVER PATH:
V_IN --> [ K1_COIL || D2: Flyback(Rev) ] --(COLLECTOR)--> [ Q1:Collector ]
                       |                                        |
                (Magnetic Link)                            [ Q1:Emitter ]
                       |                                        |
                       v                                       GND

3. PROTECTED LOAD PATH:
V_IN --> [ K1_COM ] --(Normally Closed)--> [ K1_NC ] --(LOAD_PWR)--> [ R_LOAD: 100 Ω ] --> GND
Esquema Eléctrico

Diagrama eléctrico

Diagrama eléctrico del caso: Protección contra sobretensión
Generado desde la netlist SPICE validada del caso.

🔒 Este diagrama eléctrico es premium. Con la suscripción mensual (7 días gratis) podrás desbloquear el material didáctico completo y el pack PDF listo para imprimir.🔓 Ver planes de acceso premium

Mediciones y pruebas

  1. Ajusta la fuente de alimentación variable V1 a exactamente 5.0 V.
  2. Mide v-in con respecto a tierra. Verifica que sea 5.0 V.
  3. Mide el voltaje a través de la carga (de LOAD_PWR a 0). Debería indicar 5.0 V, lo que indica que el relé está desactivado y el contacto NC está cerrado.
  4. Aumenta lentamente el voltaje de V1. Monitorea v-zener (el voltaje en el ánodo de D1). Permanecerá cerca de 0 V hasta que v-in cruce el umbral de ruptura de ~5.6 V del diodo Zener.
  5. Sube V1 hasta 6.5 V. Observa que v-zener aumenta, impulsando corriente hacia la base de Q1.
  6. Verifica el evento v-load-disconnect: escucha el clic del relé. Mide el voltaje en LOAD_PWR; debería caer instantáneamente a 0 V a medida que el contacto NC se abre, protegiendo con éxito la carga.

Netlist SPICE y simulación

Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)

* Practical case: Overvoltage protection
.width out=256

* Input Voltage Source (Sweeps from 0V to normal 5V, then overvoltage 9V, then back)
V1 V_IN 0 PWL(0 0 1m 5 4m 5 5m 9 6m 9 7m 5 9m 5 10m 0)

* Zener Diode for threshold detection
D1 V_IN V_ZENER DZENER

* Base resistors for Q1
R1 V_ZENER BASE 1k
R2 BASE 0 10k

* Relay Driver Transistor
Q1 COLLECTOR BASE 0 2N3904

* Relay Coil (Modeled as series inductor and resistor)
L_K1_COIL V_IN K1_COIL_INT 10m
R_K1_COIL K1_COIL_INT COLLECTOR 100

* ... (truncated in public view) ...

Copia este contenido en un archivo .cir y ejecútalo con ngspice.

🔒 Parte del contenido de esta sección es premium. Con la suscripción mensual (7 días gratis) tendrás acceso al contenido completo (materiales, conexionado, compilación detallada, validación paso a paso, troubleshooting, mejoras/variantes y checklist) y podrás descargar el pack PDF listo para imprimir.

* Practical case: Overvoltage protection
.width out=256

* Input Voltage Source (Sweeps from 0V to normal 5V, then overvoltage 9V, then back)
V1 V_IN 0 PWL(0 0 1m 5 4m 5 5m 9 6m 9 7m 5 9m 5 10m 0)

* Zener Diode for threshold detection
D1 V_IN V_ZENER DZENER

* Base resistors for Q1
R1 V_ZENER BASE 1k
R2 BASE 0 10k

* Relay Driver Transistor
Q1 COLLECTOR BASE 0 2N3904

* Relay Coil (Modeled as series inductor and resistor)
L_K1_COIL V_IN K1_COIL_INT 10m
R_K1_COIL K1_COIL_INT COLLECTOR 100

* Flyback Diode
D2 V_IN COLLECTOR D4148

* Relay Normally Closed (NC) Contact
* Modeled as a voltage-controlled switch controlled by the coil voltage (V_IN - COLLECTOR)
* When Q1 is OFF, coil voltage is 0V -> Switch is CLOSED (roff = 0.1)
* When Q1 is ON, coil voltage is > 6V -> Switch is OPEN (ron = 100meg)
S1 V_IN LOAD_PWR V_IN COLLECTOR RelayNC

* Critical Load
R_LOAD LOAD_PWR 0 100

* Models
.model DZENER D(IS=1e-15 RS=10 N=1 BV=5.6 IBV=5m)
.model D4148 D(IS=1e-14 RS=0.1 N=1)
.model 2N3904 NPN(IS=1E-14 VAF=100 BF=300 IKF=0.4 XTB=1.5 BR=4 CJC=4E-12 CJE=8E-12 RB=20 RC=0.1 RE=0.1 TR=250E-9 TF=350E-12 ITF=1 VTF=2 XTF=3)
.model RelayNC SW(vt=3 vh=0.5 ron=100meg roff=0.1)

* Simulation Directives
.print tran V(V_IN) V(LOAD_PWR) V(BASE) V(COLLECTOR) V(V_ZENER) I(L_K1_COIL)
.tran 10u 10m
.op
.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The simulation sweeps the input voltage from 0V to 5V, then up to 9V (overvoltage), and back down. The ngspice results show that when V_IN reaches 9V, the Zener diode conducts, raising V(BASE) to ~1.07V, which turns on Q1. This energizes the relay coil (current reaches ~9mA), opening the NC contact and disconnecting the load (V(LOAD_PWR) drops or follows the switch logic).
Show raw data table (1788 rows)
Index   time            v(v_in)         v(load_pwr)     v(base)         v(collector)    v(v_zener)      l_k1_coil#branc
0	0.000000e+00	0.000000e+00	0.000000e+00	4.369907e-29	1.104363e-28	4.276684e-29	-1.10436e-30
1	1.000000e-07	5.000000e-04	4.995005e-04	2.124049e-05	1.169502e-04	2.124049e-05	3.826672e-09
2	1.128896e-07	5.644481e-04	5.638843e-04	2.436647e-05	1.341994e-04	2.436647e-05	4.380682e-09
3	1.386689e-07	6.933444e-04	6.926518e-04	3.144704e-05	1.734710e-04	3.144704e-05	5.604067e-09
4	1.902274e-07	9.511370e-04	9.501868e-04	5.084817e-05	2.848367e-04	5.084817e-05	8.658258e-09
5	2.933444e-07	1.466722e-03	1.465257e-03	1.084331e-04	6.633002e-04	1.084332e-04	1.622310e-08
6	4.910392e-07	2.455196e-03	2.452743e-03	2.404937e-04	1.923047e-03	2.404937e-04	2.937980e-08
7	6.875077e-07	3.437539e-03	3.434104e-03	3.216141e-04	3.548938e-03	3.216141e-04	3.345128e-08
8	9.631281e-07	4.815640e-03	4.810829e-03	2.723800e-04	5.450903e-03	2.723800e-04	2.308361e-08
9	1.154824e-06	5.774121e-03	5.768352e-03	1.710095e-04	6.210657e-03	1.710095e-04	1.277625e-08
10	1.305686e-06	6.528429e-03	6.521907e-03	1.116498e-04	6.566319e-03	1.116498e-04	9.181046e-09
11	1.495573e-06	7.477865e-03	7.470395e-03	1.085076e-04	7.080935e-03	1.085076e-04	1.256925e-08
12	1.736950e-06	8.684750e-03	8.676074e-03	1.904626e-04	8.232826e-03	1.904626e-04	2.277129e-08
13	2.001986e-06	1.000993e-02	9.999931e-03	2.728041e-04	1.002166e-02	2.728041e-04	2.853663e-08
14	2.256607e-06	1.128304e-02	1.127176e-02	2.568832e-04	1.166727e-02	2.568832e-04	2.342944e-08
15	2.500031e-06	1.250016e-02	1.248767e-02	1.808629e-04	1.277687e-02	1.808630e-04	1.533781e-08
16	2.702903e-06	1.351451e-02	1.350101e-02	1.375223e-04	1.345800e-02	1.375223e-04	1.307538e-08
17	2.944974e-06	1.472487e-02	1.471016e-02	1.562745e-04	1.440894e-02	1.562745e-04	1.754621e-08
18	3.189115e-06	1.594558e-02	1.592965e-02	2.174467e-04	1.574153e-02	2.174467e-04	2.384313e-08
19	3.483820e-06	1.741910e-02	1.740170e-02	2.492948e-04	1.756940e-02	2.492949e-04	2.456373e-08
20	3.789826e-06	1.894913e-02	1.893020e-02	2.050542e-04	1.918736e-02	2.050543e-04	1.855307e-08
21	4.028198e-06	2.014099e-02	2.012087e-02	1.627875e-04	2.016491e-02	1.627876e-04	1.538812e-08
22	4.364653e-06	2.182326e-02	2.180146e-02	1.717346e-04	2.161154e-02	1.717346e-04	1.849039e-08
23	4.749559e-06	2.374779e-02	2.372407e-02	2.249970e-04	2.370014e-02	2.249971e-04	2.340138e-08
... (1764 more rows) ...


Netlist SPICE de referencia (ngspice)

* Practical case: Overvoltage protection
.width out=256

* Input Voltage Source (Sweeps from 0V to normal 5V, then overvoltage 9V, then back)
V1 V_IN 0 PWL(0 0 1m 5 4m 5 5m 9 6m 9 7m 5 9m 5 10m 0)

* Zener Diode for threshold detection
D1 V_IN V_ZENER DZENER

* Base resistors for Q1
R1 V_ZENER BASE 1k
R2 BASE 0 10k

* Relay Driver Transistor
Q1 COLLECTOR BASE 0 2N3904

* Relay Coil (Modeled as series inductor and resistor)
L_K1_COIL V_IN K1_COIL_INT 10m
R_K1_COIL K1_COIL_INT COLLECTOR 100

* Flyback Diode
D2 V_IN COLLECTOR D4148

* Relay Normally Closed (NC) Contact
* Modeled as a voltage-controlled switch controlled by the coil voltage (V_IN - COLLECTOR)
* When Q1 is OFF, coil voltage is 0V -> Switch is CLOSED (roff = 0.1)
* When Q1 is ON, coil voltage is > 6V -> Switch is OPEN (ron = 100meg)
S1 V_IN LOAD_PWR V_IN COLLECTOR RelayNC

* Critical Load
R_LOAD LOAD_PWR 0 100

* Models
.model DZENER D(IS=1e-15 RS=10 N=1 BV=5.6 IBV=5m)
.model D4148 D(IS=1e-14 RS=0.1 N=1)
.model 2N3904 NPN(IS=1E-14 VAF=100 BF=300 IKF=0.4 XTB=1.5 BR=4 CJC=4E-12 CJE=8E-12 RB=20 RC=0.1 RE=0.1 TR=250E-9 TF=350E-12 ITF=1 VTF=2 XTF=3)
.model RelayNC SW(vt=3 vh=0.5 ron=100meg roff=0.1)

* Simulation Directives
.print tran V(V_IN) V(LOAD_PWR) V(BASE) V(COLLECTOR) V(V_ZENER) I(L_K1_COIL)
.tran 10u 10m
.op
.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Análisis: The simulation sweeps the input voltage from 0V to 5V, then up to 9V (overvoltage), and back down. The ngspice results show that when V_IN reaches 9V, the Zener diode conducts, raising V(BASE) to ~1.07V, which turns on Q1. This energizes the relay coil (current reaches ~9mA), opening the NC contact and disconnecting the load (V(LOAD_PWR) drops or follows the switch logic).

Errores comunes y cómo evitarlos

  • Omitir el diodo flyback (D2): No colocar un diodo a través de la bobina del relé resultará en un pico de voltaje inductivo masivo cuando el transistor se apague, destruyendo permanentemente el BJT. Incluye siempre el diodo en antiparalelo.
  • Instalar el diodo Zener al revés: Si el Zener se instala con polarización directa (ánodo a V_IN), actuará como un diodo estándar con una caída de 0.7 V. El relé se activará casi de inmediato. Asegúrate de que el cátodo apunte hacia la entrada positiva.
  • Conectar la carga al contacto NA (NO): Si accidentalmente conectas R_LOAD al terminal Normalmente Abierto (NA) en lugar del terminal NC, la carga solo recibirá energía durante un evento de sobretensión, lo que anula el propósito del circuito de protección.

Solución de problemas

  • Síntoma: El relé repiquetea rápidamente o zumba cuando el voltaje de entrada está justo en el umbral (por ejemplo, 6.2 V).
  • Causa: El circuito carece de histéresis. Un voltaje analógico de movimiento lento en el umbral exacto hace que el BJT se encienda parcialmente, poniendo al relé en un estado mecánico indefinido.
  • Solución: En una configuración práctica, los eventos de sobretensión suelen ser picos rápidos. Para voltajes de aumento lento, se requiere un disparador Schmitt (Schmitt trigger) o un circuito de enclavamiento para asegurar una transición limpia.
  • Síntoma: La carga nunca se enciende, ni siquiera a 5.0 V.
  • Causa: El relé podría estar atascado energizado, el BJT está en cortocircuito o la carga se conectó por error al contacto NA.
  • Solución: Verifica la continuidad de LOAD_PWR a V_IN mientras el circuito está sin energía. Reemplaza Q1 si marca un cortocircuito directo de colector a emisor.
  • Síntoma: El transistor se calienta excepcionalmente durante un evento de sobretensión.
  • Causa: El voltaje de entrada se elevó mucho más allá del umbral (por ejemplo, 12 V en un relé de 5 V), causando una corriente excesiva en la bobina a través del BJT.
  • Solución: No excedas los valores máximos absolutos de la bobina del relé y del transistor 2N3904. Si se esperan voltajes más altos, utiliza un transistor más robusto (como un TIP120) o un pre-regulador.

Posibles mejoras y extensiones

  • Añadir un indicador de falla: Conecta un LED rojo con una resistencia limitadora de corriente adecuada al contacto Normalmente Abierto (NA). Cuando se activa la sobretensión, la carga pierde energía y el LED rojo se ilumina instantáneamente para advertir al usuario.
  • Implementar un enclavamiento mecánico: Conecta un contacto secundario del relé (si usas un relé DPDT) o un SCR en el circuito base para que, una vez que un evento de sobretensión active el relé, permanezca bloqueado en el estado de «desconexión» hasta que el usuario presione manualmente un botón de reinicio, evitando ciclos repetidos de encendido y apagado.

Más Casos Prácticos en Prometeo.blog

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Cuál es el objetivo principal del circuito descrito en el artículo?




Pregunta 2: ¿Qué componente se utiliza para establecer el umbral de voltaje en el circuito?




Pregunta 3: ¿Qué función cumple el transistor de unión bipolar (BJT) en este diseño?




Pregunta 4: ¿Qué sucede cuando el voltaje de entrada está en un rango seguro (por ejemplo, 5.0 V)?




Pregunta 5: ¿A través de qué contacto del relé se suministra energía a la carga en condiciones normales?




Pregunta 6: ¿Qué condición debe cumplirse para que el BJT se encienda y active el relé?




Pregunta 7: ¿Cuál de los siguientes es un caso de uso real mencionado para este circuito?




Pregunta 8: ¿Qué ocurre mecánicamente con la carga cuando el voltaje se dispara a niveles peligrosos?




Pregunta 9: ¿Por qué es útil este circuito en entornos automotrices?




Pregunta 10: ¿Qué estado tiene el relé cuando el circuito detecta una sobretensión?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme: