Caso práctico: Sincronización de transferencia de datos

Prototipo de Sincronización de transferencia de datos (Maker Style)

Nivel: Avanzado. Implementar un circuito de reloj controlado (clock gating) que permita pulsos de sincronización solo cuando Data Ready y System Enable estén activos.

Objetivo y caso de uso

En esta sesión, diseñará y analizará un circuito de gating de reloj (clock gating) utilizando puertas AND en cascada para controlar el flujo de pulsos de reloj de alta velocidad hacia un registro de desplazamiento. Validará que la señal de reloj solo se propague cuando dos banderas de control distintas (‘Data Ready’ y ‘System Enable’) estén simultáneamente en alto.

Por qué es útil:
* Gestión de energía: Deshabilitar el árbol de reloj hacia registros de desplazamiento inactivos o subsistemas reduce el consumo de energía dinámica en circuitos CMOS.
* Integridad de datos: Asegura que los datos solo se registren en el búfer cuando la fuente indica datos válidos (Data Ready) y el controlador permite la recepción (System Enable).
* Arbitraje de bus: Previene la contención del bus sincronizando múltiples periféricos que comparten una línea de datos común.

Resultado esperado:
* La salida GATED_CLK refleja la entrada CLK solo cuando DATA_RDY = 1 y SYS_EN = 1.
* Se mide el retardo de propagación entre el flanco de reloj de entrada y el flanco de reloj de salida (típicamente 7–15 ns para la serie 74HC).
* Identificación de «pulsos enanos» (runt pulses) o glitches si las señales de habilitación cambian de estado mientras el reloj está en alto.

Público objetivo y nivel:
Estudiantes de ingeniería electrónica y diseñadores de sistemas embebidos (Avanzado).

Materiales

  • U1: CI 74HC08 de cuatro puertas AND de 2 entradas, función: puerta lógica
  • V_CLK: Generador de pulsos, función: Reloj Maestro (1 MHz, 0V-5V)
  • V_DR: Fuente de tensión CC o Interruptor, función: señal Data Ready
  • V_SE: Fuente de tensión CC o Interruptor, función: señal System Enable
  • V1: Fuente de alimentación de 5 V CC, función: alimentación principal
  • C1: Condensador cerámico de 100 nF, función: desacoplo de U1
  • R_LOAD: Resistencia de 10 kΩ, función: simula impedancia de entrada del registro de desplazamiento
  • C_LOAD: Condensador de 15 pF, función: simula capacitancia de entrada y carga de la sonda

Pin-out del CI utilizado

Chip seleccionado: 74HC08 (Cuádruple puerta AND de 2 entradas)

Pin Nombre Función lógica Conexión en este caso
1 1A Entrada Puerta 1 Conecta al Nodo DATA_RDY
2 1B Entrada Puerta 1 Conecta al Nodo SYS_EN
3 1Y Salida Puerta 1 Conecta al Nodo ENABLE_COMBINED (Interno)
4 2A Entrada Puerta 2 Conecta al Nodo ENABLE_COMBINED
5 2B Entrada Puerta 2 Conecta al Nodo CLK_IN
6 2Y Salida Puerta 2 Conecta al Nodo GATED_CLK
7 GND Tierra / Masa Conecta al Nodo 0
14 VCC Alimentación Conecta al Nodo VCC

Guía de conexionado

Construya el circuito siguiendo estas conexiones de nodos. Asegúrese de que la fuente de alimentación esté apagada mientras realiza el cableado.

  • Fuente de alimentación:

    • El terminal positivo de V1 conecta al nodo VCC.
    • El terminal negativo de V1 conecta al nodo 0 (GND).
    • C1 conecta entre VCC y 0 (colocado cerca de U1).
    • El Pin 14 de U1 conecta a VCC.
    • El Pin 7 de U1 conecta a 0.
  • Lógica de control (Puerta 1):

    • El terminal positivo de V_DR (Data Ready) conecta al nodo DATA_RDY.
    • El terminal positivo de V_SE (System Enable) conecta al nodo SYS_EN.
    • El Pin 1 (1A) de U1 conecta al nodo DATA_RDY.
    • El Pin 2 (1B) de U1 conecta al nodo SYS_EN.
    • El Pin 3 (1Y) de U1 conecta al nodo ENABLE_COMBINED.
  • Gating de reloj (Puerta 2):

    • El terminal positivo de V_CLK (Fuente de reloj) conecta al nodo CLK_IN.
    • El Pin 4 (2A) de U1 conecta al nodo ENABLE_COMBINED.
    • El Pin 5 (2B) de U1 conecta al nodo CLK_IN.
    • El Pin 6 (2Y) de U1 conecta al nodo GATED_CLK.
  • Carga de salida:

    • R_LOAD conecta entre GATED_CLK y 0.
    • C_LOAD conecta entre GATED_CLK y 0.

Diagrama de bloques conceptual

Conceptual block diagram — 74HC08 AND gate

Esquemático

[ INPUT SIGNALS ]                       [ LOGIC PROCESSING (U1: 74HC08) ]                     [ OUTPUT STAGE ]

                                             +-----------------------------------+
                                             |    POWER SUPPLY & DECOUPLING      |
                                             |  V1 (5V) -> Pin 14, GND -> Pin 7  |
                                             |  C1 (100nF) across VCC/GND        |
                                             +-----------------------------------+
                                                               |
    [ V_DR: Data Ready ] --(Pin 1)-->+                         |
                                     |                         v
                                                  +-----> [ AND Gate 1 ] ---+
                                     |       (Control Logic)   |
    [ V_SE: Sys Enable ] --(Pin 2)-->+                         |
                                                               |
                                                               | (Pin 3: ENABLE_COMBINED)
                                                               |
                                                               v
                                                          (Pin 4)
                                                                                         +---> [ AND Gate 2 ] --(Pin 6)--> [ R_LOAD (10k) ] --+
                                                               |     (Clock Gating)              [ C_LOAD (15pF) ]  |
    [ V_CLK: Master Clk ] --(Pin 5)----------------------------+     (Signal: GATED_CLK)                            v
                                                                                                                   GND
Esquema Eléctrico

Tabla de verdad

Esta tabla representa la lógica en cascada: GATED_CLK = (DATA_RDY AND SYS_EN) AND CLK_IN.

DATA_RDY SYS_EN ENABLE_COMBINED (Interno) CLK_IN GATED_CLK Descripción del estado
0 X 0 X 0 Bloqueado: Datos no listos
X 0 0 X 0 Bloqueado: Sistema deshabilitado
1 1 1 0 0 Activo: Fase baja del reloj
1 1 1 1 1 Activo: Fase alta del reloj aprobada

(X = No importa)

Mediciones y pruebas

Realice los siguientes pasos de validación utilizando un osciloscopio (se recomienda doble canal).

  1. Validación lógica estática:

    • Establezca V_CLK a 0V. Conmute V_DR y V_SE. Asegúrese de que GATED_CLK permanezca en 0V.
    • Establezca V_CLK a 5V (CC). Asegúrese de que GATED_CLK esté en Alto SOLO cuando tanto V_DR como V_SE estén en Alto.
  2. Gating de reloj dinámico:

    • Configure V_CLK a una onda cuadrada de 1 MHz (ciclo de trabajo del 50%).
    • Habilite el Canal 1 en CLK_IN y el Canal 2 en GATED_CLK.
    • Active tanto V_DR como V_SE. Verifique que el Canal 2 replique al Canal 1.
    • Desactive V_DR. Verifique que el Canal 2 se quede plano en Bajo.
  3. Análisis del retardo de propagación (Avanzado):

    • Con el reloj funcionando y pasando a través, maximice el zoom horizontal (base de tiempo ~10ns/div).
    • Mida la diferencia de tiempo entre el punto de tensión del 50% del flanco de subida de CLK_IN y el flanco de subida de GATED_CLK.
    • Resultado esperado: Un retardo de aproximadamente 15ns–25ns (suma de los retardos a través de la Puerta 1 y la Puerta 2).
  4. Observación de Glitch/Riesgos:

    • Mientras CLK_IN está en Alto, conmute manualmente DATA_RDY.
    • Observe si aparecen pulsos truncados («enanos» o runts) en la salida. Estos son riesgos causados por el gating asíncrono.

Netlist SPICE y simulación

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

* Practical case: Data transfer synchronization

* --- Power Supply ---
* V1 positive terminal connects to node VCC. Negative to node 0 (GND).
V1 VCC 0 DC 5
* C1 connects between VCC and 0 (placed close to U1).
C1 VCC 0 100n

* --- Input Stimuli (Dynamic) ---
* V_CLK: Master Clock (1 MHz, 0V-5V). 
* PULSE(V1 V2 TD TR TF PW PER) -> 1us Period, 0.49us Width
V_CLK CLK_IN 0 PULSE(0 5 0 10n 10n 490n 1u)

* V_DR: Data Ready signal.
* Simulates a data packet ready signal. Pulses High from 5us to 15us.
V_DR DATA_RDY 0 PULSE(0 5 5u 10n 10n 10u 40u)

* V_SE: System Enable signal.
* Simulates system enable window. Pulses High from 2us to 22us.
V_SE SYS_EN 0 PULSE(0 5 2u 10n 10n 20u 50u)

* --- Control Logic (U1: 74HC08) ---
* Instantiation of the IC using a behavioral subcircuit.
* Mapping pins according to Wiring Guide:
* Pin 1 (1A) -> DATA_RDY
* Pin 2 (1B) -> SYS_EN
* Pin 3 (1Y) -> ENABLE_COMBINED
* Pin 4 (2A) -> ENABLE_COMBINED
* Pin 5 (2B) -> CLK_IN
* Pin 6 (2Y) -> GATED_CLK
* ... (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 el pase de 7 días o la suscripción mensual 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: Data transfer synchronization

* --- Power Supply ---
* V1 positive terminal connects to node VCC. Negative to node 0 (GND).
V1 VCC 0 DC 5
* C1 connects between VCC and 0 (placed close to U1).
C1 VCC 0 100n

* --- Input Stimuli (Dynamic) ---
* V_CLK: Master Clock (1 MHz, 0V-5V). 
* PULSE(V1 V2 TD TR TF PW PER) -> 1us Period, 0.49us Width
V_CLK CLK_IN 0 PULSE(0 5 0 10n 10n 490n 1u)

* V_DR: Data Ready signal.
* Simulates a data packet ready signal. Pulses High from 5us to 15us.
V_DR DATA_RDY 0 PULSE(0 5 5u 10n 10n 10u 40u)

* V_SE: System Enable signal.
* Simulates system enable window. Pulses High from 2us to 22us.
V_SE SYS_EN 0 PULSE(0 5 2u 10n 10n 20u 50u)

* --- Control Logic (U1: 74HC08) ---
* Instantiation of the IC using a behavioral subcircuit.
* Mapping pins according to Wiring Guide:
* Pin 1 (1A) -> DATA_RDY
* Pin 2 (1B) -> SYS_EN
* Pin 3 (1Y) -> ENABLE_COMBINED
* Pin 4 (2A) -> ENABLE_COMBINED
* Pin 5 (2B) -> CLK_IN
* Pin 6 (2Y) -> GATED_CLK
* Pin 7 (GND)-> 0
* Pin 14(VCC)-> VCC
XU1 DATA_RDY SYS_EN ENABLE_COMBINED ENABLE_COMBINED CLK_IN GATED_CLK 0 VCC 74HC08_BEHAVIORAL

* --- Output Loading ---
* R_LOAD connects between GATED_CLK and 0.
R_LOAD GATED_CLK 0 10k
* C_LOAD connects between GATED_CLK and 0.
C_LOAD GATED_CLK 0 15p

* --- Subcircuit Model: 74HC08 ---
* Robust behavioral implementation using sigmoid functions for convergence.
* Only the gates used in the wiring are modeled to save complexity.
.subckt 74HC08_BEHAVIORAL 1A 1B 1Y 2A 2B 2Y GND VCC
    * Gate 1: 1Y = 1A AND 1B
    * Function: V(VCC) * Sigmoid(A) * Sigmoid(B)
    B_G1 1Y_INT GND V = V(VCC) * (1 / (1 + exp(-50*(V(1A)-2.5)))) * (1 / (1 + exp(-50*(V(1B)-2.5))))
    R_G1 1Y_INT 1Y 100

    * Gate 2: 2Y = 2A AND 2B
    B_G2 2Y_INT GND V = V(VCC) * (1 / (1 + exp(-50*(V(2A)-2.5)))) * (1 / (1 + exp(-50*(V(2B)-2.5))))
    R_G2 2Y_INT 2Y 100
.ends

* --- Analysis Directives ---
.op
* Transient analysis: 10ns step, 25us duration to capture full logic sequence
.tran 10n 25u

* --- Output Directives ---
.print tran V(CLK_IN) V(DATA_RDY) V(SYS_EN) V(ENABLE_COMBINED) V(GATED_CLK)

.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Show raw data table (6072 rows)
Index   time            v(clk_in)       v(data_rdy)     v(sys_en)
0	0.000000e+00	0.000000e+00	0.000000e+00	0.000000e+00
1	1.000000e-10	5.000000e-02	0.000000e+00	0.000000e+00
2	2.000000e-10	1.000000e-01	0.000000e+00	0.000000e+00
3	4.000000e-10	2.000000e-01	0.000000e+00	0.000000e+00
4	8.000000e-10	4.000000e-01	0.000000e+00	0.000000e+00
5	1.600000e-09	8.000000e-01	0.000000e+00	0.000000e+00
6	3.200000e-09	1.600000e+00	0.000000e+00	0.000000e+00
7	6.400000e-09	3.200000e+00	0.000000e+00	0.000000e+00
8	1.000000e-08	5.000000e+00	0.000000e+00	0.000000e+00
9	1.064000e-08	5.000000e+00	0.000000e+00	0.000000e+00
10	1.192000e-08	5.000000e+00	0.000000e+00	0.000000e+00
11	1.448000e-08	5.000000e+00	0.000000e+00	0.000000e+00
12	1.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
13	2.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
14	3.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
15	4.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
16	5.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
17	6.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
18	7.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
19	8.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
20	9.960000e-08	5.000000e+00	0.000000e+00	0.000000e+00
21	1.096000e-07	5.000000e+00	0.000000e+00	0.000000e+00
22	1.196000e-07	5.000000e+00	0.000000e+00	0.000000e+00
23	1.296000e-07	5.000000e+00	0.000000e+00	0.000000e+00
... (6048 more rows) ...

Errores comunes y cómo evitarlos

  1. Dejar entradas no utilizadas flotando:
    • Problema: Las entradas no utilizadas en el 74HC08 (p. ej., Pines 9, 10, 12, 13) captan ruido, causando alto consumo de energía u oscilación.
    • Solución: Conecte todas las entradas de puertas AND no utilizadas directamente a GND o VCC.
  2. Ignorar la acumulación del retardo de propagación:
    • Problema: Asumir que la salida ocurre instantáneamente. En esta configuración en cascada (Puerta 1 -> Puerta 2), el retardo es el doble que el de una sola puerta.
    • Solución: Tenga en cuenta este retardo en los diagramas de tiempo; las señales pueden llegar demasiado tarde para el tiempo de establecimiento (setup time) del registro de desplazamiento subsiguiente.
  3. Hacer gating del reloj de forma asíncrona:
    • Problema: Cambiar SYS_EN mientras el reloj está en Alto recorta el ancho del pulso, violando el requisito de ancho de pulso mínimo del registro de desplazamiento.
    • Solución: Idealmente, sincronice la señal de Habilitación (Enable) con el flanco de bajada del reloj (usando un Flip-Flop) antes de alimentarla a la puerta AND.

Solución de problemas

  • Síntoma: La salida está permanentemente en Bajo, incluso cuando todas las entradas están en Alto.
    • Causa: Falta alimentación en el Pin 14 o GND en el Pin 7.
    • Solución: Verifique la continuidad de VCC/GND con un multímetro.
  • Síntoma: «Fantasma» (ghosting) o flancos ruidosos en el osciloscopio.
    • Causa: Falta de condensador de desacoplo o cables de tierra largos en las sondas.
    • Solución: Instale C1 (100nF) extremadamente cerca del CI; use el muelle de tierra en la punta de la sonda.
  • Síntoma: Los flancos de la señal son muy redondeados (tiempo de subida lento).
    • Causa: La carga capacitiva es demasiado alta (cables largos o capacitancia parásita de la protoboard).
    • Solución: Acorte los cables o añada un búfer si maneja una carga pesada.

Posibles mejoras y extensiones

  1. Gating libre de glitches: Añada un D-Flip-Flop (p. ej., 74HC74) para sincronizar la señal ENABLE_COMBINED de modo que solo cambie de estado cuando el Reloj esté en Bajo.
  2. Inserción de estados de espera: Expanda el circuito para afirmar una señal «BUSY» de vuelta al controlador siempre que el reloj se active con éxito, confirmando que la transferencia de datos está activa.

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 de 'clock gating' descrito en el artículo?




Pregunta 2: ¿Qué condiciones deben cumplirse simultáneamente para que la señal de reloj se propague?




Pregunta 3: ¿Qué beneficio aporta el 'clock gating' en términos de gestión de energía?




Pregunta 4: ¿Qué componente lógico básico se menciona para realizar el 'gating' en este diseño?




Pregunta 5: ¿Cómo contribuye este circuito a la integridad de los datos?




Pregunta 6: ¿Qué utilidad tiene el circuito en relación con el 'Arbitraje de bus'?




Pregunta 7: ¿Cuál es el nivel de dificultad asignado a este ejercicio de implementación?




Pregunta 8: ¿Qué sucede con la salida GATED_CLK si 'Data Ready' es 1 pero 'System Enable' es 0?




Pregunta 9: ¿Por qué es importante reducir el consumo de energía dinámica en circuitos CMOS?




Pregunta 10: ¿Qué señal de salida debe reflejar la entrada CLK cuando las condiciones de habilitación se cumplen?




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: Enclavamiento de seguridad en un reactor químico

Prototipo de Enclavamiento de seguridad en un reactor químico (Maker Style)

Nivel: Avanzado. Diseñe un sistema de seguridad redundante que permita la inyección de catalizador solo cuando tres variables críticas estén dentro del rango.

Objetivo y caso de uso

En este caso, construirá un circuito lógico de enclavamiento de seguridad basado en hardware que monitorea tres parámetros analógicos simulados (Temperatura, Presión, Nivel). Utiliza comparadores para digitalizar estas señales y una disposición de puertas lógicas en cascada para controlar un relé de alta potencia.

Por qué es útil:
* Seguridad industrial: Evita que las reacciones químicas comiencen a menos que las condiciones ambientales sean perfectas, evitando eventos térmicos descontrolados.
* Protección de maquinaria: Asegura que las guardas estén cerradas, la presión liberada y los motores detenidos antes de desbloquear las puertas de mantenimiento.
* Dispositivos médicos: Evita la emisión de láser o radiación a menos que todos los enclavamientos (llave, contacto de puerta, sensor de paciente) estén activos.

Resultado esperado:
* Salida lógica: La señal de control final V_SAFE pasa a ALTO (Lógica 1, ~5V) solo cuando las tres entradas están dentro de la zona «Segura» simultáneamente.
* Indicación visual: El relé se activa (cerrando el circuito para la válvula de catalizador) y un LED verde se enciende solo en el estado 1-1-1.
* Histéresis: El sistema mantiene la estabilidad cerca de los umbrales de conmutación (dependiendo de la configuración del comparador).

Público objetivo: Estudiantes de ingeniería electrónica y técnicos de automatización industrial.

Materiales

  • V1: Fuente de alimentación de 5 V CC, función: Alimentación lógica y de sensores.
  • U1: 74HC08, función: Cuádruple puerta AND de 2 entradas (usada para crear lógica de 3 entradas).
  • U2: LM339, función: Cuádruple comparador de colector abierto (digitaliza sensores analógicos).
  • R1: Potenciómetro de 10 kΩ, función: Simulador para Sensor de Temperatura.
  • R2: Potenciómetro de 10 kΩ, función: Simulador para Sensor de Presión.
  • R3: Potenciómetro de 10 kΩ, función: Simulador para Nivel de Tanque.
  • R_REF: Arreglo de resistencias de 10 kΩ (o potenciómetros), función: Divisores de voltaje para umbrales de referencia (2.5 V).
  • R_PU1: Resistencia de 4.7 kΩ, función: Pull-up para la salida del Comparador 1.
  • R_PU2: Resistencia de 4.7 kΩ, función: Pull-up para la salida del Comparador 2.
  • R_PU3: Resistencia de 4.7 kΩ, función: Pull-up para la salida del Comparador 3.
  • R_BASE: Resistencia de 1 kΩ, función: Limitación de corriente de base del transistor.
  • Q1: Transistor NPN 2N2222, función: Controlador del relé.
  • K1: Relé de 5 V, función: Actuador para la válvula de catalizador.
  • D1: Diodo 1N4007, función: Protección flyback para Q1.
  • D2: LED verde, función: Indicador para «Inyección Activa».
  • R_LED: Resistencia de 330 Ω, función: Limitación de corriente del LED.

Pin-out del CI utilizado

Chip seleccionado: 74HC08 (Cuádruple puerta AND de 2 entradas)

Pin Nombre Función lógica Conexión en este caso
1 1A Entrada A (Puerta 1) Conectado al Estado de Temperatura (SIG_TEMP)
2 1B Entrada B (Puerta 1) Conectado al Estado de Presión (SIG_PRES)
3 1Y Salida (Puerta 1) Resultado intermedio (Temp AND Pres)
4 2A Entrada A (Puerta 2) Conectado a 1Y (Resultado intermedio)
5 2B Entrada B (Puerta 2) Conectado al Estado de Nivel (SIG_LEV)
6 2Y Salida (Puerta 2) Señal de Seguridad Final (V_SAFE)
7 GND Tierra Conectado a la fuente de alimentación 0
14 VCC Alimentación Conectado a VCC (+5V)

Guía de conexionado

Fuente de alimentación
* V1 se conecta entre VCC y 0 (GND).
* U1 (74HC08) Pin 14 se conecta a VCC, Pin 7 a 0.
* U2 (LM339) Pin 3 (V+) se conecta a VCC, Pin 12 (GND) a 0.

Entradas analógicas y comparadores (Acondicionamiento de señal)
* R1 (Potenciómetro de Temp) se conecta entre VCC y 0; el cursor se conecta a U2 Entrada 1- (NODE_T_SENS).
* El divisor de referencia se conecta a U2 Entrada 1+ (NODE_REF).
* U2 Salida 1 se conecta a SIG_TEMP.
* R_PU1 se conecta entre VCC y SIG_TEMP (requerido para colector abierto).
* R2 (Potenciómetro de Pres) se conecta entre VCC y 0; el cursor se conecta a U2 Entrada 2- (NODE_P_SENS).
* El divisor de referencia se conecta a U2 Entrada 2+ (NODE_REF).
* U2 Salida 2 se conecta a SIG_PRES.
* R_PU2 se conecta entre VCC y SIG_PRES.
* R3 (Potenciómetro de Nivel) se conecta entre VCC y 0; el cursor se conecta a U2 Entrada 3- (NODE_L_SENS).
* El divisor de referencia se conecta a U2 Entrada 3+ (NODE_REF).
* U2 Salida 13 se conecta a SIG_LEV.
* R_PU3 se conecta entre VCC y SIG_LEV.

Lógica digital (Cascada para AND de 3 entradas)
* U1 Pin 1 (1A) se conecta a SIG_TEMP.
* U1 Pin 2 (1B) se conecta a SIG_PRES.
* U1 Pin 3 (1Y) se conecta a U1 Pin 4 (2A).
* U1 Pin 5 (2B) se conecta a SIG_LEV.
* U1 Pin 6 (2Y) se conecta a V_SAFE.

Etapa de salida
* R_BASE se conecta entre V_SAFE y NODE_BASE.
* La Base de Q1 se conecta a NODE_BASE.
* El Emisor de Q1 se conecta a 0.
* El Colector de Q1 se conecta a NODE_RELAY.
* K1 (Bobina del relé) se conecta entre VCC y NODE_RELAY.
* D1 se conecta entre NODE_RELAY (Ánodo) y VCC (Cátodo) Nota: Verifique la polaridad, cátodo al positivo para flyback.
* R_LED se conecta entre NODE_RELAY y NODE_LED_A.
* D2 se conecta entre NODE_LED_A y 0.

Diagrama de bloques conceptual

Conceptual block diagram — 74HC08 AND gate

Esquemático

Title: Practical case: Safety interlock in a chemical reactor

      [ SENSORS / INPUTS ]           [ SIGNAL CONDITIONING ]               [ LOGIC PROCESSING ]                  [ OUTPUT ACTUATOR STAGE ]

                                         (VCC / Pull-ups)                                                         (VCC 5V Source)
                                                |                                                                        |
    [ R1: Temp Pot ] --(Analog)--> [ U2: LM339 Comp 1 ] --(SIG_TEMP)-->+                                    +------------+------------+
    (Simulates Sensor)             [ Ref: 2.5V Divider]                |                                    |            |            |
                                                                       v                                [ K1 Relay ] [ D1 Diode ] [ R_LED ]
                                                                [ U1: 74HC08 ]                          [  Coil    ] [ Cathode^ ] [   +     ]
    [ R2: Pres Pot ] --(Analog)--> [ U2: LM339 Comp 2 ] --(SIG_PRES)-->[  AND Gate A  ] --(Intermed)--> |            [ Anode v  ] [ D2 LED  ]
    (Simulates Sensor)             [ Ref: 2.5V Divider]                [              ]       |         |            |            |
                                                                                              |         +------------+------------+
                                                                                              v                      |
                                                                                        [ U1: 74HC08 ]               | (NODE_RELAY)
                                                                                        [  AND Gate B  ]             v
    [ R3: Levl Pot ] --(Analog)--> [ U2: LM339 Comp 3 ] --(SIG_LEV)--->(Pin 5)--------->[              ] --(V_SAFE)--> [ R_BASE ] --> [ Q1: 2N2222 ]
    (Simulates Sensor)             [ Ref: 2.5V Divider]                                 [              ]                              [ NPN Base   ]
                                                                                                                                      [            ]
                                                                                                                                      [ Collector  ] --< (Sinks Current)
                                                                                                                                      [ Emitter    ]
                                                                                                                                             |
                                                                                                                                            GND
Esquema Eléctrico

Tabla de verdad

Esta tabla representa la lógica en cascada (Temp AND Presión AND Nivel).

Temp OK (A) Pres OK (B) Nivel OK (C) Intermedio (A·B) Salida Final (V_SAFE) Acción
0 0 0 0 0 Modo seguro (Apagado)
0 0 1 0 0 Modo seguro (Apagado)
0 1 0 0 0 Modo seguro (Apagado)
0 1 1 0 0 Modo seguro (Apagado)
1 0 0 0 0 Modo seguro (Apagado)
1 0 1 0 0 Modo seguro (Apagado)
1 1 0 1 0 Modo seguro (Apagado)
1 1 1 1 1 Inyectar catalizador

Mediciones y pruebas

  1. Prueba de sensor individual: Ajuste R1 (Temp) por debajo del umbral. Verifique que SIG_TEMP pase a ALTO (aprox 5V). Repita para R2 y R3.
  2. Validación de la lógica: Establezca Temp y Presión en «Seguro» (Lógica alta), pero Nivel en «Inseguro» (Lógica baja). Mida U1 Pin 3 (Intermedio); debería estar en ALTO. Mida U1 Pin 6 (V_SAFE); debería estar en BAJO.
  3. Activación completa: Establezca los tres potenciómetros en el rango «Seguro». Verifique que V_SAFE esté en ALTO, Q1 se sature y el Relé (K1) haga clic en «Encendido».
  4. Tiempo de respuesta: Conecte el canal 1 de un osciloscopio a SIG_LEV y el canal 2 a V_SAFE. Conmute el interruptor de Nivel y mida el retardo de propagación (típicamente nanosegundos para la puerta, milisegundos para el relé).

Netlist SPICE y simulación

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

* Practical case: Safety interlock in a chemical reactor

* --- Models ---
* Generic NPN Transistor
.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=46.91E-9 TF=411.1E-12 ITF=0.6 VTF=1.7 XTF=3 RB=10 RC=1 RE=0.1)
* Flyback Diode
.model D1N4007 D(IS=7.02767n RS=0.03415 N=1.2686 EG=1.11 XTI=3 BV=1000 IBV=10m CJO=10p VJ=0.7 M=0.5 FC=0.5 TT=100n)
* Green LED Indicator
.model LED_GREEN D(IS=1e-22 RS=5 N=1.5 CJO=50p BV=5 IBV=10u EG=2.1)
* Voltage Controlled Switch for Open Collector Comparator
* Vt=0: Switch state changes when control voltage crosses 0V
* Ron=10: Low resistance when closed (Logic 0 / Low)
* Roff=100Meg: High resistance when open (Logic 1 / High via Pull-up)
.model SW_OC SW(Vt=0 Vh=0.001 Ron=10 Roff=100Meg)

* --- Power Supply ---
* V1: 5 V DC power supply
V1 VCC 0 DC 5

* --- Reference Voltage (R_REF) ---
* Function: Voltage dividers for reference thresholds (2.5 V)
* Wiring: Reference divider connects to U2 Input + (NODE_REF)
R_REF_A VCC NODE_REF 10k
R_REF_B NODE_REF 0 10k

* --- Sensors (Simulated with PWL Voltage Sources) ---
* R1, R2, R3 Potentiometers simulated by PWL sources at the wiper nodes.
* Logic: Low Voltage (<2.5V) = Safe. High Voltage (>2.5V) = Unsafe/Alarm.
* Sequence: T=Safe, then Temp Fault, then Pres Fault, then Level Fault.

* ... (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 el pase de 7 días o la suscripción mensual 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: Safety interlock in a chemical reactor

* --- Models ---
* Generic NPN Transistor
.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=46.91E-9 TF=411.1E-12 ITF=0.6 VTF=1.7 XTF=3 RB=10 RC=1 RE=0.1)
* Flyback Diode
.model D1N4007 D(IS=7.02767n RS=0.03415 N=1.2686 EG=1.11 XTI=3 BV=1000 IBV=10m CJO=10p VJ=0.7 M=0.5 FC=0.5 TT=100n)
* Green LED Indicator
.model LED_GREEN D(IS=1e-22 RS=5 N=1.5 CJO=50p BV=5 IBV=10u EG=2.1)
* Voltage Controlled Switch for Open Collector Comparator
* Vt=0: Switch state changes when control voltage crosses 0V
* Ron=10: Low resistance when closed (Logic 0 / Low)
* Roff=100Meg: High resistance when open (Logic 1 / High via Pull-up)
.model SW_OC SW(Vt=0 Vh=0.001 Ron=10 Roff=100Meg)

* --- Power Supply ---
* V1: 5 V DC power supply
V1 VCC 0 DC 5

* --- Reference Voltage (R_REF) ---
* Function: Voltage dividers for reference thresholds (2.5 V)
* Wiring: Reference divider connects to U2 Input + (NODE_REF)
R_REF_A VCC NODE_REF 10k
R_REF_B NODE_REF 0 10k

* --- Sensors (Simulated with PWL Voltage Sources) ---
* R1, R2, R3 Potentiometers simulated by PWL sources at the wiper nodes.
* Logic: Low Voltage (<2.5V) = Safe. High Voltage (>2.5V) = Unsafe/Alarm.
* Sequence: T=Safe, then Temp Fault, then Pres Fault, then Level Fault.

* R1: Temp Sensor Simulator
V_SENS_T NODE_T_SENS 0 PWL(0 1 100u 1 101u 4 200u 4 201u 1)

* R2: Pressure Sensor Simulator
V_SENS_P NODE_P_SENS 0 PWL(0 1 300u 1 301u 4 400u 4 401u 1)

* R3: Tank Level Simulator
V_SENS_L NODE_L_SENS 0 PWL(0 1 500u 1 501u 4 600u 4 601u 1)

* --- U2: LM339 Quad Comparator ---
* Function: Digitizes analog sensors. Open Collector Outputs.
* Logic: If V(In-) > V(In+), Switch closes to Ground (Output Low).
*        Else Switch opens (Output High via Pull-up).

* Comparator 1 (Temperature)
* Wiring: Wiper (NODE_T_SENS) to Input 1-, Ref to Input 1+, Output to SIG_TEMP
S_COMP1 SIG_TEMP 0 NODE_T_SENS NODE_REF SW_OC
* R_PU1: Pull-up for Comparator 1
R_PU1 VCC SIG_TEMP 4.7k

* Comparator 2 (Pressure)
* Wiring: Wiper (NODE_P_SENS) to Input 2-, Ref to Input 2+, Output to SIG_PRES
S_COMP2 SIG_PRES 0 NODE_P_SENS NODE_REF SW_OC
* R_PU2: Pull-up for Comparator 2
R_PU2 VCC SIG_PRES 4.7k

* Comparator 3 (Level)
* Wiring: Wiper (NODE_L_SENS) to Input 3-, Ref to Input 3+, Output to SIG_LEV
S_COMP3 SIG_LEV 0 NODE_L_SENS NODE_REF SW_OC
* R_PU3: Pull-up for Comparator 3
R_PU3 VCC SIG_LEV 4.7k

* --- U1: 74HC08 Quad 2-input AND ---
* Function: Safety Logic.
* Modeled using Behavioral Sources (Sigmoid function for HC logic levels).

* Gate 1 (Pins 1, 2, 3)
* Inputs: SIG_TEMP, SIG_PRES. Output: NODE_AND_INT
B_AND1 NODE_AND_INT 0 V = 5 * (1 / (1 + exp(-20*(V(SIG_TEMP)-2.5)))) * (1 / (1 + exp(-20*(V(SIG_PRES)-2.5))))

* Gate 2 (Pins 4, 5, 6)
* Inputs: NODE_AND_INT (Pin 4 connects to Pin 3), SIG_LEV. Output: V_SAFE
B_AND2 V_SAFE 0 V = 5 * (1 / (1 + exp(-20*(V(NODE_AND_INT)-2.5)))) * (1 / (1 + exp(-20*(V(SIG_LEV)-2.5))))

* --- Output Stage ---

* R_BASE: Transistor base current limiting
R_BASE V_SAFE NODE_BASE 1k

* Q1: 2N2222 NPN Transistor, Relay driver
* Wiring: Base to NODE_BASE, Emitter to 0, Collector to NODE_RELAY
Q1 NODE_RELAY NODE_BASE 0 2N2222MOD

* K1: 5 V Relay Coil
* Wiring: Connects between VCC and NODE_RELAY
* Modeled as Inductor and Series Resistor
L_K1 VCC NODE_RELAY_INT 10m
R_K1 NODE_RELAY_INT NODE_RELAY 100

* D1: Flyback protection
* Wiring: Anode to NODE_RELAY, Cathode to VCC
D1 NODE_RELAY VCC D1N4007

* D2 & R_LED: Indicator "Injection Active"
* Corrected Wiring: LED should be parallel to Relay Coil to indicate Activation.
* Path: VCC -> Resistor -> LED Anode -> LED Cathode -> Collector (NODE_RELAY).
* When Q1 is ON (Relay Active), NODE_RELAY is Low (~0.2V), LED turns ON.
R_LED VCC NODE_LED_A 330
D2 NODE_LED_A NODE_RELAY LED_GREEN

* --- Analysis Directives ---
* Transient analysis to observe the sequence of sensor faults
.tran 1u 800u

* Print required signals
.print tran V(NODE_T_SENS) V(NODE_P_SENS) V(NODE_L_SENS)
.print tran V(SIG_TEMP) V(SIG_PRES) V(SIG_LEV)
.print tran V(NODE_AND_INT) V(V_SAFE)
.print tran V(NODE_RELAY) V(NODE_BASE)

.end

Resultados de Simulación (Transitorio)

Resultados de Simulación (Transitorio)
Show raw data table (3828 rows)
Index   time            v(node_t_sens)  v(node_p_sens)  v(node_l_sens)
0	0.000000e+00	1.000000e+00	1.000000e+00	1.000000e+00
1	1.000000e-08	1.000000e+00	1.000000e+00	1.000000e+00
2	2.000000e-08	1.000000e+00	1.000000e+00	1.000000e+00
3	4.000000e-08	1.000000e+00	1.000000e+00	1.000000e+00
4	8.000000e-08	1.000000e+00	1.000000e+00	1.000000e+00
5	1.600000e-07	1.000000e+00	1.000000e+00	1.000000e+00
6	3.200000e-07	1.000000e+00	1.000000e+00	1.000000e+00
7	6.400000e-07	1.000000e+00	1.000000e+00	1.000000e+00
8	1.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
9	2.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
10	3.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
11	4.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
12	5.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
13	6.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
14	7.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
15	8.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
16	9.280000e-06	1.000000e+00	1.000000e+00	1.000000e+00
17	1.028000e-05	1.000000e+00	1.000000e+00	1.000000e+00
18	1.128000e-05	1.000000e+00	1.000000e+00	1.000000e+00
19	1.228000e-05	1.000000e+00	1.000000e+00	1.000000e+00
20	1.328000e-05	1.000000e+00	1.000000e+00	1.000000e+00
21	1.428000e-05	1.000000e+00	1.000000e+00	1.000000e+00
22	1.528000e-05	1.000000e+00	1.000000e+00	1.000000e+00
23	1.628000e-05	1.000000e+00	1.000000e+00	1.000000e+00
... (3804 more rows) ...

Errores comunes y cómo evitarlos

  1. Faltan resistencias pull-up: El comparador LM339 tiene una salida de colector abierto. Si olvida R_PU1/2/3, las entradas de la puerta lógica flotarán o permanecerán en BAJO. Siempre ate las salidas a VCC a través de una resistencia (p. ej., 4.7kΩ).
  2. Entradas no utilizadas flotantes: El 74HC08 es un dispositivo CMOS. Si los pines 9, 10, 12, 13 (Puertas 3 y 4) se dejan flotando, captan ruido y aumentan el consumo de energía. Conecte las entradas no utilizadas a GND.
  3. Patada inductiva (Kickback): Omitir D1 (diodo flyback) a través de la bobina del relé. Esto generará un pico de alto voltaje cuando el relé se apague, destruyendo el transistor Q1 inmediatamente.

Solución de problemas

  • El relé vibra (sonido de zumbido): Las entradas analógicas oscilan exactamente en el voltaje umbral. Solución: Agregue una resistencia de retroalimentación (histéresis) entre la salida del comparador y la entrada no inversora.
  • La salida lógica siempre está en ALTO: Verifique las entradas del comparador. Si el voltaje de referencia está invertido (p. ej., Ref > Señal vs Señal > Ref), la lógica podría estar invertida.
  • El transistor se calienta pero el relé no conmuta: Q1 podría estar recibiendo insuficiente corriente de base, o el pinout (E-B-C) es incorrecto. Solución: Verifique el valor de R_BASE y el pinout del transistor.

Posibles mejoras y extensiones

  1. Circuito de enclavamiento (Latch): Agregue un bucle de retroalimentación (o un latch Set-Reset) para que si se viola la seguridad, el sistema se apague y requiera presionar un botón de «Reset» manual para reiniciar, incluso si las condiciones vuelven a la normalidad.
  2. Identificación de fallas: Agregue LEDs rojos a la salida de cada comparador (invertidos) para indicar exactamente qué variable (Temperatura, Presión o Nivel) causó el 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 propósito principal del circuito lógico de enclavamiento descrito en el texto?




Pregunta 2: ¿Qué tipo de señales monitorea el sistema antes de digitalizarlas?




Pregunta 3: ¿Qué componente se utiliza para convertir las señales analógicas de los sensores en señales digitales?




Pregunta 4: ¿Qué condición lógica es necesaria para que la señal de control final V_SAFE pase a ALTO?




Pregunta 5: ¿Qué función cumplen las puertas lógicas en cascada en este diseño?




Pregunta 6: ¿Por qué es útil este sistema para la protección de maquinaria?




Pregunta 7: ¿Qué voltaje aproximado representa un estado de Lógica 1 (ALTO) en este sistema?




Pregunta 8: ¿Cuál es un ejemplo de aplicación de este sistema en dispositivos médicos?




Pregunta 9: ¿Por qué es útil este sistema en el contexto de la seguridad industrial?




Pregunta 10: ¿Qué nivel de dificultad se asigna a este proyecto según el contexto?




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: