Código de búsqueda

Cómo usar un YYNMOS-4 MOSFET de 4 canales para controlar motores de CC de 5A a 20A o tiras de luces LED.

Cómo usar un YYNMOS-4 MOSFET de 4 canales para controlar motores de CC de 5A a 20A o tiras de luces LED.

En este tutorial, exploraremos cómo controlar diversas cargas de CC, como motores y tiras de luces LED, utilizando el módulo MOSFET de 4 canales YYNMOS-4. Este módulo te permite gestionar la intensidad de las luces o la velocidad de los motores de manera efectiva. Con su capacidad para manejar cargas entre 5A y 20A, puede ser un componente esencial en tus proyectos electrónicos.

YNMOS-4: with Arduino 1

Conectaremos el módulo MOSFET a un Arduino, lo que nos permitirá controlar las cargas a través de PWM (Modulación por Ancho de Pulso). Este enfoque permite un control suave sobre el funcionamiento de motores y luces. Para una guía visual, recomiendo ver el video asociado (en el video a las 00:00).

Hardware Explicado

El módulo YYNMOS-4 incluye cuatro MOSFETs que pueden manejar corrientes significativas, lo que lo hace ideal para alimentar diversas cargas. Cada MOSFET opera con baja resistencia (de 10 a 16 miliohmios cuando está encendido), lo que permite una entrega de energía eficiente. Puedes conectar hasta cuatro dispositivos con una corriente máxima de 5A cada uno, y con un enfriamiento adecuado, esto se puede aumentar a 20A.

Además de los MOSFETs, el módulo cuenta con terminales de entrada para señales de control y terminales de salida para conectar tus cargas. La entrada puede aceptar señales de 3V a 20V, lo que lo hace compatible con la mayoría de los microcontroladores, incluyendo Arduino. El módulo también incluye LEDs para indicar el estado de cada salida, proporcionando retroalimentación visual durante la operación.

Detalles de la hoja de datos

Fabricante YYNMOS
Número de pieza YYNMOS-4
Voltaje de lógica/entrada-salida 3-20 V
Tensión de suministro 5-36 V
Corriente de salida (por canal) 5 A
Corriente máxima (por canal) 20 A
Orientación sobre la frecuencia PWM ~1 kHz
Umbrales de lógica de entrada Alto: > 3 V, Bajo: < 1 V
Caída de voltaje / RDS(on)/ saturación 10-16 mΩ
Límites térmicos Hasta 85°C
Paquete Módulo de PCB estándar
Notas / variantes Compatible con PLCs

  • Asegúrate de una adecuada disipación de calor para corrientes superiores a 5A.
  • Verifique las clasificaciones de voltaje antes de conectar las cargas.
  • Utiliza señales PWM para el control de velocidad o intensidad.
  • Tenga en cuenta los límites térmicos para prevenir el sobrecalentamiento.
  • Verifica nuevamente el cableado para prevenir cortocircuitos.

Instrucciones de cableado

YNMOS-4: Arduino Wiring with an LED Strip
YNMOS-4: Cableado de Arduino con tira de LED — YNMOS-4: Arduino Wiring with an LED Strip
robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6

Para cablear el módulo YYNMOS-4, comienza conectando la fuente de alimentación. Conecta el terminal positivo de tu fuente de energía a laDC+terminal en el módulo y el terminal negativo a elDC-terminal. Cada carga que desees controlar se conectará a uno de los pares de salida. Por ejemplo, conecta el positivo de tu carga al terminal de salida correspondiente y el negativo a tierra.

robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6

Para las señales de control, conecta los pines habilitados para PWM de tu Arduino a los pines de entrada correspondientes en el módulo YYNMOS-4. Por ejemplo, si estás utilizando los pines 3, 5, 6 y 9 en el Arduino, conéctalos a las entradas PWM en el módulo. Asegúrate de que la tierra del Arduino también esté conectada a la tierra del módulo YYNMOS-4 para mantener un punto de referencia común.

Ejemplos de código y tutorial

El siguiente fragmento de código demuestra cómo definir los pines necesarios y controlar los motores o LED utilizando señales PWM. La variablemotores un arreglo que contiene los números de pin para una fácil referencia.


int pin1 = 3; // PWM pin for motor 1
int pin2 = 5; // PWM pin for motor 2
int pin3 = 6; // PWM pin for motor 3
int pin4 = 9; // PWM pin for motor 4
int motor[]={NULL,pin1, pin2, pin3, pin4};

En este extracto, definimos cuatro pines PWM para controlar cada motor o LED. El arreglomotornos permite hacer referencia fácilmente a estos pines más adelante en el código.

Laloop()la función muestra cómo activar los motores a diferentes velocidades:


void loop() {
   motorON(1, 75); // Run motor 1 at 75% speed
   delay(4000); // Wait for 4 seconds
   stop(1); // Stop motor 1
   delay(3000); // Wait for 3 seconds
}

Este segmento del código activa el motor 1 a 75% de velocidad durante 4 segundos, luego lo detiene durante 3 segundos. Ajustar la velocidad y el tiempo permite un control flexible de las cargas.

Para el código completo, consulte el programa completo cargado debajo del artículo.

Demostración / Qué Esperar

Al completar el cableado y cargar el código en tu Arduino, deberías observar que los motores o LEDs responden a las señales PWM. Los motores comenzarán a las velocidades definidas y se pueden detener o ajustar dinámicamente. Si notas algún problema, verifica la polaridad invertida o el cableado incorrecto, ya que estos son errores comunes (en el video a las 12:30).

Marcas de tiempo del video

  • 00:00 Comenzar
  • 00:58 Hardware Explicado
  • 07:53 Explicación del cableado
  • 10:13 Código Arduino para YYNMOS-4 Explicado
  • 14:51 Demostración sin Arduino
  • 16:32 Demostración con Arduino

Imágenes

YNMOS-4: listo
YNMOS-4: listo
YNMOS-4: con Arduino 1
YNMOS-4: con Arduino 1
YNMOS-4: con Arduino 2
YNMOS-4: con Arduino 2
YNMOS-4: Acercamiento del cableado de Arduino
YNMOS-4: Acercamiento del cableado de Arduino
YNMOS-4: Cableado de Arduino con tira de LED
YNMOS-4: Cableado de Arduino con tira de LED
robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6
YNMOS-4 4-Channel MOSFET Red
YNMOS-4 4-Channel MOSFET Red
343-Arduino code YYNMOS-4 4-Channel MOSFET to Control 5A DC or LED light control
Idioma: C++
++
/*
 * This is Arduino code to control 4 DC motors' speed or 4 LED light strips or other DC loads
 * by utilizing a YYNMOS-4 4-channel MOSFET module.

We can control 4 DC motors with voltage from 5V to 35V and 5A each.
Get the code and wiring from https://robojax.com/RJT338

 * Written by Ahmad Shamshiri on July 13, 2020
 * in Ajax, Ontario, Canada. www.robojax.com
 * 
 * 
 * Watch video instructions for this code: https://youtu.be/G9uHVcITHf8
 * 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

int pin1 = 3;//pwm
int pin2 = 5;//pwm
int pin3 = 6;//pwm
int pin4 = 9;//pwm
int ON = HIGH;
int OFF = LOW;
int motor[]={NULL,pin1, pin2, pin3, pin4};


void setup() {
  Serial.begin(9600);
  Serial.println("Robojax.com 4 DC Motor or LED");
  pinMode(motor[1], OUTPUT);
  pinMode(motor[2], OUTPUT);
  pinMode(motor[3], OUTPUT);
  pinMode(motor[4], OUTPUT);    

}

void loop() {
   motorON(1, 75);//run motor 1 at 75% speed
   delay(4000);//for 4 seconds

   motorON(4, 100);//run motor 4 at 100% speed (or 100% light intensity)
   delay(4000); //for 4 seconds

   stop(1);//stop motor 1
   delay(3000);//keep it stopped for 3 seconds

   stop(4);//stop motor 4 
   delay(3000);  //keep it stopped for 3 seconds 
   for(int i=0; i<=100; i++)
   {
     motorON(1,i); //change speed of motor 1  
     delay(100);
   }
  delay(3000);//keep running for 3 seconds
  stop(1);//stop motor 1
  delay(3000);//keep it stopped for 3 seconds
  
     for(int i=100; i>=0; i--)
   {
     motorON(1,i);  //change speed of motor 1    
     delay(100);
   }
   delay(3000); //keep it running for 3 seconds

    
   for(int i=0; i<=100; i++)
   {
     motorON(4,i);    
     delay(100);
   }
  delay(3000);//keep it at for 3 seconds
  
    for(int i=100; i>=0; i--)
   {
     motorON(4,i);    
     delay(100);
   }   
  
}// loop


/*
   motorON(int n, int sp)
 * @brief Runs the specific motor n with speed sp
 * @param n, is an integer from 1 to 4
 * @param sp, is speed in % from 0 to 100
 * @return does not return anything
 * Written by Ahmad Shamshiri
 * www.Robojax.com code July 13, 2020 in Ajax, Ontario, Canada
 */
void motorON(int n, int sp)
{
  if(n >=1 && n <=4)
  {
  int speed=map(sp, 0, 100, 0, 255);
  analogWrite(motor[n],speed);
  Serial.print("Load ");
  Serial.print(n);
  Serial.print(" @");
  Serial.print(sp);
  Serial.println("%");
  
  }else{
    Serial.println("Motor/load number should be between 1 and 4");
    while(1);// stop forever
  }
    
}//motorON(int n)


/*
   stop(int n)
 * @brief Stops the specific motor
 * @param n, is an integer from 1 to 4
 * @return does not return anything
 * Written by Ahmad Shamshiri
 * www.Robojax.com code July 13, 2020 in Ajax, Ontario, Canada
 */
void stop(int n)
{
  if(n >=1 && n <=4)
  {

  digitalWrite(motor[n], LOW);
  Serial.print("Load ");
  Serial.print(n);
  Serial.println(" Stopped");

  }else{
    Serial.println("Motor/load number should be between 1 and 4");
    while(1);// stop forever
  }
    
}//stop(int n)

Cosas que podrías necesitar

Archivos📁

No hay archivos disponibles.