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
VCCy0. - RLDR1 se conecta entre
VCCyVA. - R1 se conecta entre
VAy0. - 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_Q0yV_D1. - D1 se conecta entre
V_D1y0. - R3 se conecta entre
V_Q1yV_D2. - D2 se conecta entre
V_D2y0. - R4 se conecta entre
V_Q2yV_D3. - D3 se conecta entre
V_D3y0. - R5 se conecta entre
V_Q3yV_D4. - D4 se conecta entre
V_D4y0. - R6 se conecta entre
V_Q4yV_D5. - D5 se conecta entre
V_D5y0. - C1 se conecta entre
VCCy0, cerca de U1. - C2 se conecta entre
VCCy0, cerca de U2.
Diagrama de bloques conceptual

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)
Diagrama eléctrico

Mediciones y pruebas
- Calibración del sensor: mide el nodo
VAcon 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. - 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. - Verificación del conteo secuencial: observa los nodos
V_Q0aV_Q4. Cada pulso debe activar una salida distinta y encender D1 a D5 en orden. - 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.
* 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)
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
- 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. - 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 Ω.
- 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
VAy0para 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
VCCse mantiene estable en 5 V.
Posibles mejoras y extensiones
- 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.
- Antirrebote con monoestable: insertar un NE555 en configuración monoestable entre
VBy el reloj del contador garantiza un único pulso de duración fija por objeto detectado. - Tamaño de lote ajustable: puedes elegir otra salida del CD4017BE para el reinicio si necesitas agrupar 3, 4, 6 o más objetos.
- 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
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.




