Control Digital de Velocidad de un Motor DC: Modernizando un Puente H con el Módulo ESP8266

 Control Digital de Velocidad de un Motor DC: Modernizando un Puente H con el Módulo ESP8266

En esta publicación veremos cómo reemplazar el clásico circuito generador de PWM basado en el temporizador NE555 por un sistema de control programable empleando el módulo ESP8266 (NodeMCU).

1. El Circuito Controlador Original

El controlador tradicional utiliza un puente H compuesto por transistores de potencia (TIP32 y TIP41) para manejar la corriente del motor y un temporizador NE555 configurado como multivibrador astable. La señal PWM generada por el 555 conmuta la alimentación hacia las ramas del puente H a través del selector de sentido de giro (S-GIRO).



2. Modificación del Modulo de Control

Para lograr un control programable y digital, se reemplaza completamente la etapa del temporizador NE555 y sus componentes asociados (potenciómetro RV1, diodos D8/D9 y condensadores) por la tarjeta de desarrollo NodeMCU (ESP8266).



Dado que los pines del ESP8266 trabajan a un nivel lógico de 3.3 V y el puente H requiere conmutar a la tensión de alimentación principal +VCC, se añade una etapa de acoplamiento: un circuito adaptador de nivel con transistor NPN (2N2222 en configuración emisor común) con resistencia de pull-up 1k.



Esta etapa asegura que el pulso digital emitido desde el pin del NodeMCU sature e interrumpa correctamente la base de los transistores del puente H.

3. Modificación Física en la Placa (PCB)

Para integrar la nueva señal del controlador:

  1. Desoldar completamente el interruptor deslizante selector de sentido de giro S-GIRO de la placa PCB.



  1. Soldar la línea de salida marcada como PWM (proveniente del colector del transistor 2N2222) directamente en uno de los pad o terminales extremos donde se ubicaba el switch S-GIRO, seleccionando la rama del puente H que se desea energizar.

  2. Conectar la masa (GND) del ESP8266 con la masa de la placa del puente H. El NodeMCU se puede alimentar directamente mediante el cable USB conectado a la PC.

4. Código en Arduino IDE

Carga el siguiente programa seleccionando la placa equivalente en el entorno de desarrollo:

C++
// ESTE PROGRAMA GENERA PWM PARA CONTROLAR LA VELOCIDAD DE UN MOTOR DC

const int pinPWM = 3;

void setup() {
  // Inicializa el pin digital asignado como salida
  pinMode(pinPWM, OUTPUT);
}

// La función loop se ejecuta en ciclo infinito
void loop() {
  digitalWrite(pinPWM, HIGH);  // Pone el pin en nivel alto (3.3V)
  delayMicroseconds(200);                    // Mantiene el pulso en ALTO durante 200 us
  digitalWrite(pinPWM, LOW);   // Pone el pin en nivel bajo (0V)
  delayMicroseconds(1800);                    // Mantiene el pulso en BAJO durante 1800 us
}

Explicación del Código:

  • const int pinPWM = 3;: Declara el pin digital de salida (Pin D3 en la serigrafía del NodeMCU / GPIO0).

  • pinMode(pinPWM, OUTPUT);: Configura la patilla seleccionada como salida digital dentro del bloque setup().

  • digitalWrite(pinPWM, HIGH); y digitalWrite(pinPWM, LOW);: Controlan el estado lógico del pin en el ciclo principal.

  • delay(1); y delay(9);: Definen el período total T = 1 ms + 9 ms = 10 ms (equivalente a una frecuencia de 100 Hz. En esta configuración, el ciclo de trabajo (Duty Cycle) es del 10%, entregando una fracción reducida del voltaje medio al motor.

5. Pruebas y Resultados

Una vez subido el código y conectadas las masas de ambos sistemas:

  1. Observa el comportamiento del motor al recibir el 10% del ciclo de trabajo.

  2. Modifica los valores en los delay() dentro del código para probar diferentes porcentajes:

    • 50% PWM: delay(5); en ALTO y delay(5); en BAJO.

    • 80% PWM: delay(8); en ALTO y delay(2); en BAJO.

  3. Recompila en cada cambio y analiza cómo el motor varía su velocidad de rotación y torque de forma proporcional al tiempo en estado alto.


Comentarios

Entradas populares de este blog

Implementación de PWM No Bloqueante mediante micros() para el Control de Motores DC