Nivel: Medio. Diseña un circuito de control que compare los niveles de luz de dos sensores para orientar un motor hacia la fuente de luz más brillante.
Objetivo y caso de uso
Este caso práctico te guía a través de la construcción de un bucle de control analógico que orienta automáticamente un mecanismo hacia una fuente de luz utilizando fotorresistencias (LDR) y amplificadores operacionales. Construirás un «buscador solar» que equilibra activamente dos entradas de luz para accionar un motor en la dirección correspondiente.
- Aplicaciones en el mundo real:
- Energía solar: Aumenta la eficiencia de los paneles fotovoltaicos manteniendo los paneles perpendiculares al sol durante todo el día.
- Robótica: Permite comportamientos de búsqueda de luz (fototaxis) en robots autónomos.
- Domótica: Controla persianas inteligentes para regular la temperatura de la habitación basándose en la intensidad de la luz solar.
- Resultado esperado:
- Cuando la fuente de luz está equilibrada, el motor permanece parado.
- Cuando LDR1 está sombreado, la diferencia de voltaje activa el motor para girar en sentido horario (CW).
- Cuando LDR2 está sombreado, el motor gira en sentido antihorario (CCW).
- Público objetivo: Estudiantes de electrónica familiarizados con divisores de voltaje y amplificadores operacionales (OpAmps).
Materiales
- V1: Fuente de alimentación de 9 V CC (Fuente de energía).
- R1: Fotorresistencia (LDR), función: Sensor de luz izquierdo.
- R2: Fotorresistencia (LDR), función: Sensor de luz derecho.
- R3: Resistencia de 10 kΩ, función: Rama inferior del divisor de voltaje para R1.
- R4: Resistencia de 10 kΩ, función: Rama inferior del divisor de voltaje para R2.
- U1: LM358, función: Amplificador operacional dual (Comparadores).
- U2: L293D, función: CI controlador de motor de puente en H.
- M1: Motorreductor de 9 V CC, función: Actuador de seguimiento.
- C1: Condensador de 100 nF, función: Desacoplo de la fuente de alimentación.
Guía de conexionado
Este circuito utiliza dos divisores de voltaje paralelos comparados por dos OpAmps para determinar la dirección del motor.
- Fuente de alimentación:
- Conecta el terminal positivo de
V1al nodoVCC. - Conecta el terminal negativo de
V1al nodoGND(0). -
Conecta
C1entreVCCyGND. -
Sensores (Divisor de voltaje dual):
- Conecta
R1(LDR izquierdo) entreVCCy el nodoVA(Voltaje del sensor A). - Conecta
R3entreVAyGND. - Conecta
R2(LDR derecho) entreVCCy el nodoVB(Voltaje del sensor B). -
Conecta
R4entreVByGND. -
Comparadores (LM358 – U1):
- Comparador A (Lógica de giro a la derecha/CW):
- Conecta la entrada no inversora (+) de
U1al nodoVA. - Conecta la entrada inversora (-) de
U1al nodoVB. - Conecta la Salida A de
U1al nodoSIG_CW.
- Conecta la entrada no inversora (+) de
- Comparador B (Lógica de giro a la izquierda/CCW):
- Conecta la entrada no inversora (+) de
U1al nodoVB. - Conecta la entrada inversora (-) de
U1al nodoVA. - Conecta la Salida B de
U1al nodoSIG_CCW.
- Conecta la entrada no inversora (+) de
-
Conecta el pin VCC de
U1aVCCy el pin GND aGND. -
Controlador de motor (L293D – U2):
- Conecta la Entrada 1 de
U2al nodoSIG_CW. - Conecta la Entrada 2 de
U2al nodoSIG_CCW. - Conecta el pin Enable 1 de
U2aVCC. - Conecta la Salida 1 de
U2al nodoM_POS. - Conecta la Salida 2 de
U2al nodoM_NEG. - Conecta VCC1 (Lógica) y VCC2 (Potencia) de
U2aVCC. -
Conecta los pines GND de
U2aGND. -
Actuador:
- Conecta
M1(Motor) entre los nodosM_POSyM_NEG.
Diagrama de bloques conceptual

Esquemático
[ INPUTS / SENSORS ] [ LOGIC / PROCESSING ] [ ACTUATOR ]
[ Power Supply Block ]
[ Source: V1 (9 V) ] --(VCC/GND Power)--> (Distributes to all ICs and Sensors)
[ Filter: C1 (100nF) ]
[ U1: LM358 Dual OpAmp ]
| |
[ Left Light Sensor ] | Comparator A (Logic) |
[ Top: R1 (LDR) ] --(Signal VA)->| Input: VA > VB ? |--(SIG_CW)--->+
[ Bot: R3 (10k Ohm) ] | Output: Turn CW | |
| | |
| | v
| Comparator B (Logic) | [ U2: L293D H-Bridge ]
[ Right Light Sensor ] | Input: VB > VA ? | | |
[ Top: R2 (LDR) ] --(Signal VB)->| Output: Turn CCW | | Input 1: CW Sig |
[ Bot: R4 (10k Ohm) ] | | | Input 2: CCW Sig |===(High Current)==> [ M1: Gear Motor ]
+----------+-----------+ | Enable: VCC | (9 V DC)
| | VCC1/VCC2: 9 V |
+--(SIG_CCW)------>| GND: Common |
+--------------------+
Mediciones y pruebas
Sigue estos pasos para validar la lógica del seguidor:
-
Prueba de equilibrio estático:
- Expón ambos LDR a la luz ambiente por igual.
- Mide el voltaje en los nodos
VAyVB. Deberían ser aproximadamente iguales. - Mide
SIG_CWySIG_CCW. Ambos deberían estar en Bajo (aprox. 0 V) o equilibrados, manteniendo el motor detenido.
-
Simulación de sombra izquierda:
- Cubre
R1(LDR izquierdo) con tu mano. - Observación: La resistencia de
R1aumenta, provocando que el voltaje enVAcaiga. - Comprobación lógica: Dado que
VB>VA, el Comparador B (No inversor =VB) debería ponerse en Alto (SIG_CCW≈ VCC). - Actuador: El motor debería girar en sentido antihorario.
- Cubre
-
Simulación de sombra derecha:
- Expón
R1a la luz y cubreR2(LDR derecho). - Observación: La resistencia de
R2aumenta, provocando que el voltaje enVBcaiga. - Comprobación lógica: Dado que
VA>VB, el Comparador A (No inversor =VA) debería ponerse en Alto (SIG_CW≈ VCC). - Actuador: El motor debería girar en sentido horario.
- Expón
Netlist SPICE y simulación
Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)
* Single-axis Solar Tracker Simulation
* Based on Practical Electronics Breadboard Case
* --- Power Supply ---
* V1: 9 V DC power supply
V1 VCC 0 DC 9V
* C1: 100 nF capacitor (Decoupling)
C1 VCC 0 100nF
* --- Dynamic Light Stimulus (Virtual Control) ---
* This source simulates the position of the sun moving from Left to Right.
* 0V = Light on Left Sensor, 5V = Light on Right Sensor.
* Sweeps linearly from 0V to 5V over 100ms.
V_LIGHT LIGHT_POS 0 PWL(0 0 100m 5)
* --- Sensors (LDRs) ---
* Modeled as voltage-dependent resistors controlled by LIGHT_POS.
* R1 (Left LDR): Resistance increases as Light moves Right (LIGHT_POS increases).
* Range: 1k (Bright) to 50k (Dark).
R1 VCC VA R = '1k + 49k * (V(LIGHT_POS)/5)'
* ... (truncated in public view) ...
Copia este contenido en un archivo .cir y ejecútalo con ngspice.
* Single-axis Solar Tracker Simulation
* Based on Practical Electronics Breadboard Case
* --- Power Supply ---
* V1: 9 V DC power supply
V1 VCC 0 DC 9V
* C1: 100 nF capacitor (Decoupling)
C1 VCC 0 100nF
* --- Dynamic Light Stimulus (Virtual Control) ---
* This source simulates the position of the sun moving from Left to Right.
* 0V = Light on Left Sensor, 5V = Light on Right Sensor.
* Sweeps linearly from 0V to 5V over 100ms.
V_LIGHT LIGHT_POS 0 PWL(0 0 100m 5)
* --- Sensors (LDRs) ---
* Modeled as voltage-dependent resistors controlled by LIGHT_POS.
* R1 (Left LDR): Resistance increases as Light moves Right (LIGHT_POS increases).
* Range: 1k (Bright) to 50k (Dark).
R1 VCC VA R = '1k + 49k * (V(LIGHT_POS)/5)'
* R2 (Right LDR): Resistance decreases as Light moves Right.
* Range: 50k (Dark) to 1k (Bright).
R2 VCC VB R = '1k + 49k * (1 - V(LIGHT_POS)/5)'
* --- Voltage Divider Bottom Legs ---
* R3: 10 kΩ resistor for R1
R3 VA 0 10k
* R4: 10 kΩ resistor for R2
R4 VB 0 10k
* --- Comparators (U1: LM358) ---
* U1 is a Dual OpAmp. We define a subcircuit matching the 8-pin DIP pinout.
* Pinout: 1=OutA, 2=In-A, 3=In+A, 4=GND, 5=In+B, 6=In-B, 7=OutB, 8=VCC
* Wiring Guide:
* Comparator A (CW): (+) VA, (-) VB -> Out SIG_CW
* Comparator B (CCW): (+) VB, (-) VA -> Out SIG_CCW
XU1 SIG_CW VB VA 0 VB VA SIG_CCW VCC LM358_DIP8
* --- Motor Driver (U2: L293D) ---
* U2 is an H-Bridge Driver. We define a subcircuit for the used pins.
* Pinout used: 1=EN1, 2=IN1, 3=OUT1, 4/5=GND, 6=OUT2, 7=IN2, 8=VCC2, 16=VCC1
* Wiring Guide:
* IN1=SIG_CW, IN2=SIG_CCW, OUT1=M_POS, OUT2=M_NEG, EN1=VCC
XU2 VCC SIG_CW M_POS 0 0 M_NEG SIG_CCW VCC VCC L293D_BRIDGE
* --- Actuator (M1: 9V DC Gear Motor) ---
* Modeled as a resistive/inductive load.
R_M1 M_POS M_INT 20
L_M1 M_INT M_NEG 5mH
* --- Subcircuit Definitions ---
.subckt LM358_DIP8 OUTA INMA INPA GND INPB INMB OUTB VCC
* Comparator A Behavior (Sigmoid for convergence)
* Output swings approx 0V to VCC-1.5V
B_OUTA OUTA 0 V = (V(VCC)-1.5) / (1 + exp(-50*(V(INPA)-V(INMA)))) + 0.05
* Comparator B Behavior
B_OUTB OUTB 0 V = (V(VCC)-1.5) / (1 + exp(-50*(V(INPB)-V(INMB)))) + 0.05
.ends
.subckt L293D_BRIDGE EN1 IN1 OUT1 GND1 GND2 OUT2 IN2 VCC2 VCC1
* Logic Threshold approx 2.0V.
* Output Voltage ~ VCC2 - 1.4V drop.
* Enable Logic
B_EN node_en 0 V = 1 / (1 + exp(-50*(V(EN1)-2.0)))
* Output 1 (M_POS)
B_O1 OUT1 0 V = V(node_en) * (1/(1+exp(-50*(V(IN1)-2.0)))) * (V(VCC2)-1.4)
* Output 2 (M_NEG)
B_O2 OUT2 0 V = V(node_en) * (1/(1+exp(-50*(V(IN2)-2.0)))) * (V(VCC2)-1.4)
.ends
* --- Simulation Directives ---
.op
* Transient analysis: 100ms duration to capture the full light sweep
.tran 100u 100m
* Print signals to verify logic:
* VA/VB: Sensor Voltages
* SIG_CW/CCW: Comparator Logic Outputs
* M_POS/M_NEG: Motor Drive Voltages
.print tran V(VA) V(VB) V(SIG_CW) V(SIG_CCW) V(M_POS) V(M_NEG) V(LIGHT_POS)
.end
Resultados de Simulación (Transitorio)
Show raw data table (3024 rows)
Index time v(va) v(vb) v(sig_cw) 0 0.000000e+00 8.181818e+00 1.500000e+00 7.550000e+00 1 1.000000e-06 8.181454e+00 1.500012e+00 7.550000e+00 2 2.000000e-06 8.181089e+00 1.500025e+00 7.550000e+00 3 4.000000e-06 8.180361e+00 1.500049e+00 7.550000e+00 4 8.000000e-06 8.178903e+00 1.500098e+00 7.550000e+00 5 1.600000e-05 8.175990e+00 1.500196e+00 7.550000e+00 6 3.200000e-05 8.170168e+00 1.500392e+00 7.550000e+00 7 6.400000e-05 8.158542e+00 1.500784e+00 7.550000e+00 8 1.280000e-04 8.135365e+00 1.501569e+00 7.550000e+00 9 2.280000e-04 8.099394e+00 1.502797e+00 7.550000e+00 10 3.280000e-04 8.063833e+00 1.504028e+00 7.550000e+00 11 4.280000e-04 8.028586e+00 1.505260e+00 7.550000e+00 12 5.280000e-04 7.993645e+00 1.506495e+00 7.550000e+00 13 6.280000e-04 7.959008e+00 1.507732e+00 7.550000e+00 14 7.280000e-04 7.924669e+00 1.508970e+00 7.550000e+00 15 8.280000e-04 7.890626e+00 1.510211e+00 7.550000e+00 16 9.280000e-04 7.856873e+00 1.511454e+00 7.550000e+00 17 1.028000e-03 7.823409e+00 1.512699e+00 7.550000e+00 18 1.128000e-03 7.790228e+00 1.513945e+00 7.550000e+00 19 1.228000e-03 7.757327e+00 1.515194e+00 7.550000e+00 20 1.328000e-03 7.724703e+00 1.516445e+00 7.550000e+00 21 1.428000e-03 7.692352e+00 1.517698e+00 7.550000e+00 22 1.528000e-03 7.660271e+00 1.518953e+00 7.550000e+00 23 1.628000e-03 7.628457e+00 1.520211e+00 7.550000e+00 ... (3000 more rows) ...
Errores comunes y cómo evitarlos
-
LDR colocados demasiado cerca uno del otro:
- Síntoma: El sistema es insensible y requiere ángulos de luz extremos para reaccionar.
- Solución: Monta los LDR con una barrera física (un trozo de cartón o plástico) entre ellos para que se proyecte una sombra sobre un LDR cuando la luz no esté perfectamente centrada.
-
Accionar el motor directamente desde los OpAmps:
- Síntoma: El motor zumba pero no gira, o el OpAmp se sobrecalienta y falla.
- Solución: Utiliza siempre una etapa controladora de corriente como el L293D o un puente en H de transistores. Los OpAmps no pueden suministrar la corriente requerida por los motores (típicamente >100 mA).
-
Falta de banda muerta (Vibración/Jittering):
- Síntoma: El motor vibra constantemente de un lado a otro cuando la luz está centrada.
- Solución: Esta topología básica es un controlador «bang-bang» (todo o nada). En diseños avanzados, añade resistencias de histéresis a los OpAmps para crear una pequeña ventana de voltaje donde el motor permanezca apagado.
Solución de problemas
- El motor gira en la dirección incorrecta:
- Causa: La polaridad del motor está invertida en relación con la ubicación de los sensores.
- Arreglo: Intercambia las conexiones de
M1(M_POS y M_NEG) O intercambia físicamente las posiciones deR1yR2.
- El motor funciona continuamente incluso con luz igual:
- Causa: Gran diferencia de tolerancia entre los dos LDR o las resistencias fijas (R3/R4).
- Arreglo: Reemplaza una resistencia fija (por ejemplo, R3) con un potenciómetro de ajuste de 10k para calibrar el equilibrio del puente manualmente.
- No pasa nada cuando cambia la luz:
- Causa: El pin Enable del L293D no está conectado a nivel alto.
- Arreglo: Asegúrate de que el pin Enable del controlador esté conectado a VCC.
Posibles mejoras y extensiones
- Control de sensibilidad: Reemplaza las resistencias fijas R3 y R4 con un solo potenciómetro multivuelta. Conecta el cursor a tierra y los extremos a los LDR para permitir un ajuste fino del punto central.
- Integración de energía solar: Reemplaza V1 con un pequeño panel solar y un circuito de carga para hacer que el seguidor sea autosostenible.
Más Casos Prácticos en Prometeo.blog
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.




