Código de búsqueda

Usando un módulo de interruptor electrónico IRF5305 para controlar la velocidad del motor

Usando un módulo de interruptor electrónico IRF5305 para controlar la velocidad del motor

Esta guía explora el módulo E-Switch IRF5305, un componente potente y versátil que utiliza un MOSFET de canal P para controlar cargas de CC de alta corriente con una señal de bajo voltaje de un Arduino. A diferencia de un relé mecánico, este interruptor de estado sólido ofrece una conmutación más rápida, una vida útil más larga y sin degradación por contacto físico. Su valor en el mundo real radica en su capacidad para conmutar o atenuar de forma segura y eficiente cargas que consumen mucha más corriente de la que un pin de Arduino puede suministrar.

E-switch_module-1-MOS
E-switch_module-black-1-mos
E-switch_module-green-1-MOS-dimentions

Este módulo es ideal para una variedad de proyectos, incluyendo:

  • Controlar la velocidad de motores de CC de alta corriente en robótica o herramientas eléctricas personalizadas.
  • Atenuar sistemas de iluminación LED de alta potencia para aplicaciones automotrices o arquitectónicas.
  • Construir un sistema de gestión de energía confiable y duradero que conmute cargas sin el desgaste de un relé.
  • Crear una interfaz aislada para controlar circuitos de alto voltaje (hasta 36V) desde un microcontrolador de bajo voltaje.

Descripción general del hardware

El módulo E-Switch IRF5305 está diseñado para una fácil integración. Cuenta con un bloque de terminales para el lado de alta potencia y dos pines para la señal de control. El módulo incorpora un optoacoplador, que proporciona un aislamiento eléctrico completo entre tu Arduino y el circuito de alta potencia, protegiendo tu microcontrolador de posibles daños. El MOSFET principal (IRF5305) actúa como un interruptor casi ideal, con una resistencia de encendido extremadamente baja de solo 65 miliohmios, lo que garantiza una caída de voltaje y una pérdida de potencia mínimas (en el video en 01:47).

Las dimensiones físicas del módulo son 40 mm de largo, 30,1 mm de ancho y 16,4 mm de profundidad (en el video en 05:09).

Hardware/Componentes

  • Arduino Uno o placa similar
  • Módulo E-Switch IRF5305
  • Motor de CC o bombilla de alta potencia
  • Fuente de alimentación externa (hasta 36V)
  • Cables de puente

Guía de cableado

Conectar el módulo es sencillo. Los dos pines del lado de la señal están etiquetados como Positivo y Tierra. Conecta el pin de Tierra a un pin GND del Arduino. Conecta el pin Positivo a un pin digital del Arduino, como el pin 9 (en el video en 07:53).

En el lado de alta potencia, conecta el terminal positivo de tu fuente de alimentación externa al terminal + y el terminal negativo al terminal - en el lado de entrada del módulo. Luego, conecta tu carga (por ejemplo, un motor) a los terminales + y - en el lado de salida (en el video en 07:24).

Importante: Al conducir una carga inductiva como un motor, es crucial colocar un diodo de retorno en paralelo con la carga. Este diodo protege el MOSFET de los picos de voltaje generados cuando el motor se apaga (en el video en 09:52).

Explicación del código

Este tutorial proporciona tres programas distintos, cada uno demostrando un nivel diferente de control. El código para cada uno está disponible debajo del artículo.

Código básico para mantener el módulo IRF5305 siempre encendido

Este primer sketch es el más simple. Está diseñado para encender la carga y mantenerla encendida indefinidamente. La parte clave de este código es la definición del pin en la parte superior.

int loadPin =9;// pin de carga

Esta línea define qué pin digital del Arduino está conectado al pin de señal "Positivo" del módulo. Puedes cambiar el número 9 a cualquier otro pin digital si lo has conectado en otro lugar. La función setup() configura este pin como salida, y la función loop() contiene la lógica para encender la carga y esperar para siempre.

Código básico para el módulo IRF5305, enciende/APAGA

Este sketch demuestra la conmutación basada en tiempo, encendiendo la carga durante 3 segundos y luego apagándola durante 3 segundos. Las partes configurables por el usuario son la definición del pin y los períodos de retardo.

int cont = HIGH;
int loadPin = 9; 

La variable loadPin tiene el mismo propósito que en el primer programa. La variable cont es una bandera de estado que el programa verifica para decidir si encender o apagar la carga. Para cambiar el tiempo de encendido/apagado, puedes modificar los comandos delay(3000); dentro de los bloques if y else. El retardo se mide en milisegundos, por lo que 3000 equivale a 3 segundos.

Código básico para controlar la velocidad del motor o la intensidad de la luz con IRF5305

El programa final utiliza modulación por ancho de pulso (PWM) para controlar la velocidad de un motor o el brillo de una luz. Aumenta y disminuye gradualmente la potencia en un bucle. Las variables clave están todas en la parte superior del sketch.

int motorPin =9;// pin para conectar al módulo del motor
int mSpeed = 0;// variable para almacenar el valor de velocidad
int mStep = 15;// paso de incremento/decremento para la velocidad PWM del motor
  • motorPin: Esto define el pin compatible con PWM conectado al módulo. Es fundamental utilizar un pin que admita PWM (a menudo marcado con un símbolo ~ en la placa Arduino).
  • mSpeed: Esta variable contiene el valor PWM actual, que varía de 0 (apagado) a 255 (velocidad máxima).
  • mStep: Este es el incremento con el que cambia la velocidad en cada ciclo. Un valor más grande (por ejemplo, 25) hace que la velocidad aumente y disminuya más rápido, mientras que un valor más pequeño (por ejemplo, 5) hace que la transición sea más suave y lenta.

Para cambiar la velocidad del efecto de aumento/disminución, modifica el valor delay(200); al final del bucle. Este es el tiempo en milisegundos entre cada paso de velocidad.

Proyecto en Vivo/Demostración

En el video, se demuestran cada uno de los tres programas. El primer programa mantiene el motor funcionando continuamente con éxito. Luego se carga el segundo programa, y se muestra el motor encendiéndose durante tres segundos y apagándose durante tres segundos. Finalmente, se demuestra el programa PWM, mostrando el motor acelerando lentamente hasta la velocidad máxima y luego desacelerando hasta detenerse, repitiendo este ciclo continuamente (en el video en 15:42).

El video también incluye una prueba exhaustiva de manejo de corriente. El módulo se conectó a una carga electrónica para determinar sus límites en el mundo real sin un disipador de calor adicional. Los resultados mostraron que a voltajes más altos (hasta 24V), el módulo podía manejar hasta 10 amperios. Sin embargo, a voltajes más bajos (alrededor de 5V), la capacidad de manejo de corriente disminuyó significativamente, y el módulo comenzó a sobrecalentarse y a emitir humo con corrientes superiores a 10 amperios (en el video en 21:49). La conclusión es que, para aplicaciones continuas de alta corriente, se requiere un disipador de calor para mantener el módulo frío y prevenir

E-switch_module-2-MOS
E-switch_module-green-2-mos-bottom
E-switch_module-black-2-mos-top

daños.

Capítulos

  • [00:00] Introducción y Descripción General del Módulo
  • [01:13] Por Qué Usar un E-Switch MOSFET
  • [03:45] Conexiones del Módulo y Dimensiones Físicas
  • [05:24] Revisión de la Hoja de Datos del IRF5305
  • [07:03] Conexión del Módulo al Arduino
  • [08:06] Explicación del Diagrama Esquemático
  • [10:29] Recorrido del Código: Programa de Siempre Encendido
  • [11:04] Recorrido del Código: Programa de Control de Encendido/Apagado
  • [12:03] Recorrido del Código: Programa de Control de Velocidad PWM
  • [14:34] Demostración en Vivo de los Tres Programas
  • [17:02] Prueba de Manejo de Corriente y Carga
  • [23:34] Conclusión y Resumen de Resultados de las Pruebas

Imágenes

Código básico para mantener el módulo IRF5305 siempre encendido
Código básico para mantener el módulo IRF5305 siempre encendido
Código básico para mantener el módulo IRF5305 siempre encendido
Código básico para mantener el módulo IRF5305 siempre encendido
Código básico para mantener el módulo IRF5305 siempre encendido
Código básico para mantener el módulo IRF5305 siempre encendido
Diagrama esquemático de E-Switch basado en Mosfet IRF5305
Diagrama esquemático de E-Switch basado en Mosfet IRF5305
E-switch_module-black-2-mos-top
E-switch_module-black-2-mos-top
E-switch_module-black-1-mos
E-switch_module-black-1-mos
E-switch_module-green-2-mos-bottom
E-switch_module-green-2-mos-bottom
E-switch_module-green-1-MOS-dimentions
E-switch_module-green-1-MOS-dimentions
E-switch_module-2-MOS
E-switch_module-2-MOS
E-switch_module-1-MOS
E-switch_module-1-MOS
156-Basic code to keep the IRF5305 module always on
Idioma: C++
/*
 * This is an Arduino sketch for a tutorial video 
 * explaining the 5305 MOSFET used as a switch 
 * This sketch turns the MOSFET ON and keeps it ON forever
 * Download and resource page https://robojax.com/RJT125

 * Written by Ahmad Shamshiri on Sep 12, 2018 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch instruction video for this code: https://youtu.be/eAANkWDvusU
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */
int loadPin =9;// load pin

  
void setup() {
  // Robojax.com demo
  pinMode(loadPin,OUTPUT);
  Serial.begin(9600);
  Serial.println("Robojax Demo"); 

}

void loop() {
  // Robojax.com tutorial

  digitalWrite(loadPin, HIGH);
 while(1);// wait forever


}
157-Basic code to for IRF5305 modul, turns ON/OFF
Idioma: C++
/*
 * This is an Arduino sketch for a tutorial video 
 * explaining the 5305 MOSFET used as a switch 
 * This sketch turns the MOSFET ON for 3 seconds then turns it OFF for 3 seconds.
 * Download and resource page https://robojax.com/RJT125
 * Written by Ahmad Shamshiri on Sep 12, 2018 at 17:36 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/eAANkWDvusU
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */
int cont = HIGH;
int loadPin = 9; 
void setup() {
  // Robojax.com demo
  pinMode(loadPin,OUTPUT);
  Serial.begin(9600);
  Serial.println("Robojax Demo");
  

}

void loop() {
  // Robojax.com tutorial

 
  if(cont == HIGH)
  {
    Serial.println("OUTPUT is HIGH");
    digitalWrite(loadPin,HIGH);
    delay(3000);
    cont = LOW;
  }else{
    Serial.println("OUTPUT is LOW");
    digitalWrite(loadPin,LOW);
    delay(3000);
    cont = HIGH;   
  }

}
158-Basic code to keep the IRF5305 speed of motor intensitiy of light
Idioma: C++
/*
 * This is an Arduino sketch for a tutorial video 
 * explaining the 5305 MOSFET used as a switch 
 * This sketch will control the speed of a motor or the intensity of a light using PWM
 * Download and resource page https://robojax.com/RJT125

 * Written by Ahmad Shamshiri on Sep 12, 2018 at 23:23 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/eAANkWDvusU
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */
int motorPin =9;// pin to connect to motor module
int mSpeed = 0;// variable to hold speed value
int mStep = 15;// increment/decrement step for PWM motor speed
  
void setup() {
  // Robojax.com demo
  pinMode(motorPin,OUTPUT);// set mtorPin as output
  Serial.begin(9600);// initialize serial motor
  Serial.println("Robojax Demo");
  

}

void loop() {
  // Robojax.com tutorial

analogWrite(motorPin, mSpeed);// send mSpeed value to motor
    Serial.print("Speed: ");
    Serial.println(mSpeed);// print mSpeed value on Serial monitor (click on Tools->Serial Monitor)
  mSpeed = mSpeed + mStep;
  // See the video for details.
  if (mSpeed <= 0 || mSpeed >= 255) {
    mStep = -mStep;
  }  

delay(200);

}

Recursos y referencias

Aún no hay recursos.

Archivos📁

Otros archivos