micropython-actuadores-rele-mosfet-buzzer-solenoide

Actuadores con MicroPython: relés, MOSFET, buzzers y solenoides

  • 6 min

Un actuador es un dispositivo que convierte una señal de control en una acción física.

Ya sabemos mover ruedas (motores DC) y brazos robóticos (servos). Pero, ¿qué pasa si queremos encender una bombilla de 220V? ¿O activar una cerradura electrónica? ¿O hacer que nuestro robot pite cuando detecte un obstáculo?

En esta entrada vamos a ver los actuadores generales. Dispositivos que convierten nuestra señal eléctrica de control (3.3V) en una acción física de diferente naturaleza.

Relés para controlar cargas de potencia

El Relé es el rey de la domótica. Es, básicamente, un interruptor mecánico que activamos mediante un electroimán.

Su gran ventaja es el Aislamiento Galvánico. El circuito de control (tu ESP32 a 3.3V) y el circuito de potencia (tu lámpara a 220V) no se tocan eléctricamente. Se comunican magnéticamente. Esto lo hace muy seguro.

Módulos de relé

En el mundo maker, rara vez usamos el componente suelto. Usamos módulos (esas plaquitas con un bloque azul) que ya incluyen un transistor y un diodo de protección.

  • VCC: 5V (normalmente).
  • GND: Tierra.
  • IN: Señal de control.

Conexión de la carga

El bloque azul tiene 3 tornillos:

  1. COM (Común): Aquí entra la fase de la corriente.
  2. NO (Normally Open): El circuito está abierto (apagado) hasta que activamos el relé. Es lo que usaremos el 99% de las veces.
  3. NC (Normally Closed): El circuito está cerrado (encendido) hasta que activamos el relé (para sistemas de seguridad que deben funcionar si se va la luz).

Código

Para MicroPython, un relé no es más que un LED grande. Solo necesitamos poner el pin en Alto o Bajo.

from machine import Pin
import time

# OJO: Muchos módulos de relé son "Active LOW"
# (Se activan con 0V y se apagan con 3.3V)
rele = Pin(26, Pin.OUT)

# Encender (si es Active Low, ponemos 0)
print("Encendiendo lámpara...")
rele.value(0) 
time.sleep(2)

# Apagar
print("Apagando...")
rele.value(1)
Copied!

MOSFET como interruptor DC de alta velocidad

El relé es genial, pero tiene dos problemas: es lento (hace “clic-clac”) y se desgasta mecánicamente. Si queremos controlar la intensidad de una tira LED de 12V o la velocidad de un ventilador potente, necesitamos un transistor MOSFET.

A diferencia del relé, el MOSFET solo sirve para Corriente Continua (DC), pero permite usar PWM.

Módulos MOSFET y compatibilidad con 3,3 V

Al igual que con los relés, usaremos módulos que facilitan la conexión de cables gruesos.

  • Señal (SIG): Al pin PWM del microcontrolador.
  • VIN / GND: A la fuente de alimentación externa (ej. 12V o 24V).
  • V+ / V-: A la carga (Tira LED, Bomba de agua).

Logic Level Si compras transistores sueltos, asegúrate de que sean logic level y de que el fabricante especifique su resistencia con una tensión de puerta de 2,5 V o 3,3 V. El popular módulo IRF520 no es una buena elección para controlarlo directamente desde un ESP32: ese transistor está pensado para una tensión de puerta mayor y puede calentarse. Si el módulo incorpora un driver de puerta, comprueba que su entrada sí acepte 3,3 V.

from machine import Pin, PWM
import time

# Ventilador o Tira LED en GPIO 15
# Usamos PWM para controlar la potencia
mosfet = PWM(Pin(15))
mosfet.freq(1000) # 1 kHz

# Efecto "Fading" (Respiración)
while True:
    # Subir intensidad
    for i in range(0, 65535, 1000):
        mosfet.duty_u16(i)
        time.sleep_ms(10)
        
    # Bajar intensidad
    for i in range(65535, 0, -1000):
        mosfet.duty_u16(i)
        time.sleep_ms(10)
Copied!

Buzzers para generar sonido

A veces una luz no basta y necesitamos una alerta sonora. Existen dos tipos de zumbadores:

Buzzer activo

Es el más fácil. Tiene una pegatina encima que suele decir “Remove seal”. Tiene un oscilador interno.

  • Uso: Si le das 3.3V, pita. Si le das 0V, calla.
  • Código: buzzer.value(1). Solo produce un tono monótono.

Buzzer pasivo

Es un pequeño altavoz piezoeléctrico. No tiene oscilador. Si le das 3.3V fijos, solo hará un “click” y se callará. Necesita una señal oscilante (frecuencia) para sonar.

  • Ventaja: Podemos controlar el tono (notas musicales).
from machine import Pin, PWM
import time

# Buzzer Pasivo en pin 18
buzzer = PWM(Pin(18))

# Notas musicales (Frecuencias en Hz)
notas = {
    'DO': 261, 'RE': 294, 'MI': 329, 'FA': 349,
    'SOL': 392, 'LA': 440, 'SI': 493
}

def tocar_tono(frecuencia, duracion):
    buzzer.freq(frecuencia)
    buzzer.duty_u16(32768) # 50% ciclo de trabajo (volumen máximo)
    time.sleep(duracion)
    buzzer.duty_u16(0)     # Silencio

# Melodía simple
melodia = ['DO', 'RE', 'MI', 'DO']

for nota in melodia:
    tocar_tono(notas[nota], 0.3)
    time.sleep(0.1) # Pausa entre notas
Copied!

Solenoides para generar movimiento lineal

Un Solenoide es una bobina de cobre con un émbolo móvil dentro. Cuando pasa corriente, el émbolo se dispara hacia dentro (o hacia fuera).

Son la base de:

  • Cerraduras electrónicas.
  • Válvulas de agua (electroválvulas).
  • Flippers de pinball.

Control y protección

Un solenoide es una carga inductiva (una bobina gigante). Nunca lo conectes directo al pin. Necesitas usar un Relé o un MOSFET para controlarlo.

Además, hay que poner un Diodo Flyback en antiparalelo con el solenoide para absorber el pico de voltaje inverso que se genera al apagarlo. (La mayoría de módulos de relés/MOSFET ya lo traen).

from machine import Pin
import time

# Cerradura en GPIO 4 (a través de un MOSFET/Relé)
cerradura = Pin(4, Pin.OUT)

def abrir_puerta():
    print("Abriendo...")
    cerradura.value(1) # Activamos el solenoide (retrae el pestillo)
    
    # IMPORTANTE: Los solenoides se calientan muchísimo.
    # Nunca dejarlos activados mucho tiempo.
    time.sleep(2)      
    
    cerradura.value(0) # Soltamos (el muelle devuelve el pestillo)
    print("Puerta cerrada.")

abrir_puerta()
Copied!

Qué actuador elegir

ActuadorUso principalTipo de señalPrecaución
ReléEncender bombillas, calefactores (AC)Digital (On/Off)Lento. No usar PWM.
MOSFETTiras LED, motores DC, ventiladoresPWM (Variable)Solo DC. Usar “Logic Level”.
Buzzer ActivoAlarmas simplesDigital (On/Off)Sonido fijo y molesto.
Buzzer PasivoMúsica, notificaciones suavesPWM (Frecuencia)Requiere generar la onda.
SolenoideGolpear, abrir cerraduras, válvulasDigital (Pulsos)Se calienta rápido. Usar driver.

Con estos componentes, tu microcontrolador ya no es solo un cerebro en un frasco; ahora tiene manos y voz para interactuar con el mundo.