Nivel: Básico – Entender cómo usar dos relés SPDT para cambiar la polaridad y dirección de un motor de CC.
Objetivo y caso de uso
En este caso, construirá un circuito de puente en H basado en relés para controlar un motor de CC. Usando dos relés de un polo y doble tiro (SPDT), podrá accionar el motor en sentido horario, antihorario o frenarlo utilizando pulsadores simples.
- Escenarios del mundo real:
- Elevalunas automotrices: Invertir el motor para subir o bajar el vidrio.
- Robótica: Controlar la dirección de las ruedas para el movimiento hacia adelante y hacia atrás.
- Cintas transportadoras industriales: Cambiar la dirección de una banda para enrutar productos.
-
Cortinas motorizadas: Mecanismos de apertura y cierre.
-
Resultado esperado:
- Estado de reposo: Cuando no se presionan botones, los terminales del motor están conectados a tierra (diferencia de 0 V), resultando en un freno dinámico (el motor se detiene).
- Estado de avance: Presionar el Botón A aplica +5 V al motor; gira en sentido horario (CW).
- Estado de retroceso: Presionar el Botón B aplica -5 V (cambio de polaridad) al motor; gira en sentido antihorario (CCW).
- Frenado/Seguridad: Si ambos botones se presionan simultáneamente, ambos terminales del motor se conectan a VCC, resultando en una diferencia de 0 V y el motor permanece detenido.
Público objetivo: Aficionados y estudiantes que se inician en el control electromecánico.
Materiales
- V1: Fuente de alimentación de 5 V CC, función: Fuente de energía principal.
- M1: Motor de 5 V CC, función: El actuador a controlar.
- K1: Relé SPDT de 5 V, función: Controla el lado «Positivo» del motor.
- K2: Relé SPDT de 5 V, función: Controla el lado «Negativo» del motor.
- S1: Pulsador momentáneo (NO), función: Activa el Relé K1 (Avance).
- S2: Pulsador momentáneo (NO), función: Activa el Relé K2 (Retroceso).
- D1: Diodo 1N4007, función: Protección flyback para la bobina de K1.
- D2: Diodo 1N4007, función: Protección flyback para la bobina de K2.
Guía de conexionado
Esta guía utiliza nombres de nodos para describir las conexiones.
Nodos: VCC (Alimentación 5 V), 0 (Tierra), COIL_A, COIL_B, MOT_A, MOT_B.
- Fuente de alimentación:
- V1 (+): Conecta al nodo
VCC. -
V1 (-): Conecta al nodo
0. -
Circuito de control (Bobinas):
- S1: Conecta entre
VCCyCOIL_A. - K1 (Bobina): Conecta entre
COIL_Ay0. - D1: Cátodo a
COIL_A, Ánodo a0(Protege contra picos inductivos). - S2: Conecta entre
VCCyCOIL_B. - K2 (Bobina): Conecta entre
COIL_By0. -
D2: Cátodo a
COIL_B, Ánodo a0. -
Circuito de potencia (Accionamiento del motor):
- K1 (Normalmente Abierto – NO): Conecta a
VCC. - K1 (Normalmente Cerrado – NC): Conecta a
0. - K1 (Común – COM): Conecta al nodo
MOT_A. - K2 (Normalmente Abierto – NO): Conecta a
VCC. - K2 (Normalmente Cerrado – NC): Conecta a
0. - K2 (Común – COM): Conecta al nodo
MOT_B. - M1: Conecta entre
MOT_AyMOT_B.
Diagrama de bloques conceptual

Esquemático
+-------------------------------------------------------------------------+
| DC MOTOR REVERSING CIRCUIT (H-BRIDGE) |
+-------------------------------------------------------------------------+
[ CONTROL SUBSYSTEM ] [ POWER SUBSYSTEM ]
(Forward Input) (Left Side Drive)
VCC --> [ S1 Button ] VCC (NO)
| |
v v
[ Node: COIL_A ] [ K1 Switch (COM) ] --(MOT_A)--+
| [ (Relay 1) ] |
+--> [ K1 Coil || D1 ] --> GND ^ |
| (D1 is Reverse Biased) | |
| | |
+----------(Magnetic Link)--------------------+ |
| |
GND (NC) + |
v
[ DC MOTOR ]
[ M1 ]
^
GND (NC) + |
| |
+----------(Magnetic Link)--------------------+ |
| | |
| (D2 is Reverse Biased) | |
+--> [ K2 Coil || D2 ] --> GND [ K2 Switch (COM) ] --(MOT_B)--+
| [ (Relay 2) ]
[ Node: COIL_B ] ^
^ |
| |
VCC --> [ S2 Button ] VCC (NO)
(Reverse Input) (Right Side Drive)
+-------------------------------------------------------------------------+
| LOGIC KEY: |
| 1. Idle: Both Switches connect COM to NC (GND). Motor is braked (0 V). |
| 2. Press S1: K1 switches to NO (VCC). Current: VCC->MOT_A->MOT_B->GND. |
| 3. Press S2: K2 switches to NO (VCC). Current: VCC->MOT_B->MOT_A->GND. |
+-------------------------------------------------------------------------+
Mediciones y pruebas
Para validar el circuito, realice los siguientes pasos usando un multímetro e inspección visual:
- Verificación en reposo: Asegúrese de que ni S1 ni S2 estén presionados. Mida el voltaje entre
MOT_AyMOT_B.- Resultado: Debe ser 0 V. Ambos terminales están conectados a GND a través de los contactos NC. El motor está bloqueado (difícil de girar a mano debido al cortocircuito de la fuerza contraelectromotriz).
- Accionamiento de avance: Mantenga presionado S1.
- Resultado: K1 hace clic. Mida el voltaje desde
MOT_A(Sonda roja) aMOT_B(Sonda negra). El voltaje debe ser aproximadamente +5 V. El motor gira en sentido horario.
- Resultado: K1 hace clic. Mida el voltaje desde
- Accionamiento de retroceso: Suelte S1, luego mantenga presionado S2.
- Resultado: K2 hace clic. Mida el voltaje desde
MOT_AaMOT_B. El voltaje debe ser aproximadamente -5 V. El motor gira en sentido antihorario.
- Resultado: K2 hace clic. Mida el voltaje desde
- Doble pulsación (Prueba de seguridad): Presione S1 y S2 simultáneamente.
- Resultado: Ambos relés hacen clic. El voltaje entre
MOT_AyMOT_Bes 0 V (Ambos a potencial de 5 V). El motor no se mueve.
- Resultado: Ambos relés hacen clic. El voltaje entre
Netlist SPICE y simulación
Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)
* Practical case: DC Motor Reversing
.width out=256
* Ngspice Netlist
*
* Description: H-Bridge configuration using two SPDT relays to control a DC motor.
* Logic:
* - S1 Pressed -> K1 Active -> MOT_A = 5V, MOT_B = 0V (Forward)
* - S2 Pressed -> K2 Active -> MOT_A = 0V, MOT_B = 5V (Reverse)
* - None Pressed -> MOT_A = 0V, MOT_B = 0V (Stop/Brake)
*
* Simulation Time: 10ms (Captures S1 pulse at 1ms and S2 pulse at 5ms)
.tran 10u 10m
* -----------------------------------------------------------------------------
* Power Supply
* -----------------------------------------------------------------------------
* V1: 5V DC Power Supply, function: Main energy source.
* Connected between VCC (+) and 0 (-).
V1 VCC 0 DC 5
* ... (truncated in public view) ...
Copia este contenido en un archivo .cir y ejecútalo con ngspice.
* Practical case: DC Motor Reversing
.width out=256
* Ngspice Netlist
*
* Description: H-Bridge configuration using two SPDT relays to control a DC motor.
* Logic:
* - S1 Pressed -> K1 Active -> MOT_A = 5V, MOT_B = 0V (Forward)
* - S2 Pressed -> K2 Active -> MOT_A = 0V, MOT_B = 5V (Reverse)
* - None Pressed -> MOT_A = 0V, MOT_B = 0V (Stop/Brake)
*
* Simulation Time: 10ms (Captures S1 pulse at 1ms and S2 pulse at 5ms)
.tran 10u 10m
* -----------------------------------------------------------------------------
* Power Supply
* -----------------------------------------------------------------------------
* V1: 5V DC Power Supply, function: Main energy source.
* Connected between VCC (+) and 0 (-).
V1 VCC 0 DC 5
* -----------------------------------------------------------------------------
* User Inputs (Pushbuttons)
* -----------------------------------------------------------------------------
* Modeled as Voltage Controlled Switches (S1, S2) driven by Pulse Sources.
* This strictly simulates the user pressing the button at specific times.
* Stimulus for S1 (Forward Request)
* Pulse: 0V to 5V, starts at 1ms, duration 2ms.
V_USER_S1 CTRL_S1 0 PULSE(0 5 1m 1u 1u 2m 10m)
* Stimulus for S2 (Reverse Request)
* Pulse: 0V to 5V, starts at 5ms, duration 2ms.
V_USER_S2 CTRL_S2 0 PULSE(0 5 5m 1u 1u 2m 10m)
* S1: Momentary Pushbutton (NO)
* Connects VCC to COIL_A when activated by V_USER_S1.
S1 VCC COIL_A CTRL_S1 0 SW_PUSH
* S2: Momentary Pushbutton (NO)
* Connects VCC to COIL_B when activated by V_USER_S2.
S2 VCC COIL_B CTRL_S2 0 SW_PUSH
* -----------------------------------------------------------------------------
* Control Circuit (Relay Coils)
* -----------------------------------------------------------------------------
* Relay K1 Coil Circuit
* K1 Coil: Connects between COIL_A and 0. Modeled as L+R.
L_K1 COIL_A K1_INT 10m
R_K1 K1_INT 0 100
* D1: 1N4007 Diode, function: Flyback protection.
* Cathode to COIL_A, Anode to 0.
D1 0 COIL_A D_1N4007
* Relay K2 Coil Circuit
* K2 Coil: Connects between COIL_B and 0. Modeled as L+R.
L_K2 COIL_B K2_INT 10m
R_K2 K2_INT 0 100
* D2: 1N4007 Diode, function: Flyback protection.
* Cathode to COIL_B, Anode to 0.
D2 0 COIL_B D_1N4007
* -----------------------------------------------------------------------------
* Power Circuit (Motor Drive via Relay Contacts)
* -----------------------------------------------------------------------------
* Relay K1 Contacts (SPDT)
* COM: MOT_A
* NO: VCC (Connected when Coil is Energized/High)
* NC: 0 (Connected when Coil is De-energized/Low)
S_K1_NO VCC MOT_A COIL_A 0 SW_NO_RELAY
S_K1_NC MOT_A 0 COIL_A 0 SW_NC_RELAY
* Relay K2 Contacts (SPDT)
* COM: MOT_B
* NO: VCC (Connected when Coil is Energized/High)
* NC: 0 (Connected when Coil is De-energized/Low)
S_K2_NO VCC MOT_B COIL_B 0 SW_NO_RELAY
S_K2_NC MOT_B 0 COIL_B 0 SW_NC_RELAY
* M1: 5 V DC Motor
* Modeled as a resistive load (50 Ohms) to visualize voltage polarity.
* Connects between MOT_A and MOT_B.
R_M1 MOT_A MOT_B 50
* -----------------------------------------------------------------------------
* Component Models
* -----------------------------------------------------------------------------
* Standard Diode Model
.model D_1N4007 D(IS=1N N=1 RS=0.1 BV=1000 IBV=10u)
* Pushbutton Switch Model (Normally Open)
* Closes (Low R) when Control Voltage > 2.5V
.model SW_PUSH SW(Vt=2.5 Vh=0.1 Ron=0.01 Roff=10Meg)
* Relay Contact Models
* NO (Normally Open): Conducts when Coil > 2.5V
.model SW_NO_RELAY SW(Vt=2.5 Vh=0.1 Ron=0.01 Roff=10Meg)
* NC (Normally Closed): Conducts when Coil < 2.5V
* SPICE SW Logic: If V < Vt, R = Roff. If V > Vt, R = Ron.
* For NC: We want Low R when V < Vt. So Roff=0.01, Ron=10Meg.
.model SW_NC_RELAY SW(Vt=2.5 Vh=0.1 Ron=10Meg Roff=0.01)
* -----------------------------------------------------------------------------
* Output Directives
* -----------------------------------------------------------------------------
* Outputs: Motor Terminals (MOT_A, MOT_B)
* Inputs: Coil Control Voltages (COIL_A, COIL_B)
.print tran V(MOT_A) V(MOT_B) V(COIL_A) V(COIL_B) I(L_K1)
.op
.end
Resultados de Simulación (Transitorio)
Show raw data table (1104 rows)
Index time v(mot_a) v(mot_b) v(coil_a) v(coil_b) l_k1#branch 0 0.000000e+00 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 1 1.000000e-07 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 2 2.000000e-07 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 3 4.000000e-07 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 4 8.000000e-07 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 5 1.600000e-06 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 6 3.200000e-06 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 7 6.400000e-06 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 8 1.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 9 2.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 10 3.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 11 4.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 12 5.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 13 6.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 14 7.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 15 8.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 16 9.280000e-05 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 17 1.028000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 18 1.128000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 19 1.228000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 20 1.328000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 21 1.428000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 22 1.528000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 23 1.628000e-04 5.000000e-09 5.000000e-09 4.999931e-05 4.999931e-05 4.999931e-07 ... (1080 more rows) ...
Errores comunes y cómo evitarlos
- Cablear el motor a NO/NC en lugar de COM:
- Error: Conectar el motor a los pines Normalmente Abierto o Cerrado, y la alimentación al pin Común.
- Solución: Conecte siempre la Carga (Motor) al pin Común (COM) del relé SPDT para configuraciones de puente en H. La alimentación y la Tierra van a NO y NC.
- Omitir diodos flyback:
- Error: Olvidar D1 y D2 en paralelo con las bobinas de los relés.
- Solución: Instale siempre diodos en polarización inversa a través de las bobinas para evitar que picos de alto voltaje dañen los interruptores o fuentes de alimentación cuando el relé se apaga.
- Usar relés SPST:
- Error: Intentar esta topología con relés de 4 pines que carecen de un contacto Normalmente Cerrado.
- Solución: Asegúrese de usar relés SPDT de 5 pines para que el motor pueda conectarse a tierra cuando el relé está apagado.
Solución de problemas
- El motor vibra pero no gira:
- Causa: La corriente de la fuente de alimentación es insuficiente.
- Solución: Verifique la clasificación de corriente de su fuente de alimentación; los motores consumen alta corriente al arrancar.
- El relé hace clic pero el motor no se mueve:
- Causa: Contactos internos quemados o cableado suelto en los terminales COM/NO/NC.
- Solución: Verifique la continuidad entre COM y NO cuando el relé esté activo usando un multímetro.
- Chispas visibles dentro del relé:
- Causa: Retroceso de carga inductiva del motor.
- Solución: Aunque no siempre es fatal, agregar un pequeño condensador (por ejemplo, 100 nF) a través de los terminales del motor puede reducir el arco y el ruido.
Posibles mejoras y extensiones
- Interruptores de límite (finales de carrera): Agregue interruptores de límite Normalmente Cerrados en serie con las bobinas de los relés (
COIL_AyCOIL_B) para detener automáticamente el motor cuando un mecanismo alcanza su final de recorrido. - Control de velocidad: Inserte un reóstato de alto vataje o un controlador de transistor PWM en serie con el suministro principal
VCCa los contactos del relé (no a las bobinas) para variar la velocidad del motor.
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.




