Cerca codice

Come utilizzare un YYNMOS-4 MOSFET a 4 canali per controllare motori CC da 5A a 20A o strisce LED.

Come utilizzare un YYNMOS-4 MOSFET a 4 canali per controllare motori CC da 5A a 20A o strisce LED.

In questo tutorial, esploreremo come controllare vari carichi in corrente continua, come motori e strisce LED, utilizzando il modulo MOSFET a 4 canali YYNMOS-4. Questo modulo consente di gestire efficacemente l'intensità delle luci o la velocità dei motori. Con la sua capacità di gestire carichi tra 5A e 20A, può essere un componente essenziale nei tuoi progetti elettronici.

YNMOS-4: with Arduino 1

Collegheremo il modulo MOSFET a un Arduino, permettendoci di controllare i carichi tramite PWM (Modulazione della Larghezza d'Impulso). Questo approccio consente un controllo fluido sul funzionamento di motori e luci. Per una guida visiva, consiglio di guardare il video correlato (nel video a :00).

Hardware Spiegato

Il modulo YYNMOS-4 include quattro MOSFET che possono gestire correnti significative, rendendolo ideale per alimentare vari carichi. Ogni MOSFET opera con bassa resistenza (da 10 a 16 milliohm quando attivo), consentendo una consegna di energia efficiente. Puoi collegare fino a quattro dispositivi con una corrente massima di 5A ciascuno, e con un adeguato dissipatore di calore, questa può essere aumentata fino a 20A.

Oltre ai MOSFET, il modulo presenta terminali di ingresso per segnali di controllo e terminali di uscita per collegare i tuoi carichi. L'ingresso può accettare segnali da 3V a 20V, rendendolo compatibile con la maggior parte dei microcontrollori, incluso Arduino. Il modulo include anche LED per indicare lo stato di ciascuna uscita, fornendo un feedback visivo durante il funzionamento.

Dettagli della scheda dati

Produttore YYNMOS
Numero di parte YYNMOS-4
Tensione logica/IO 3-20 V
Tensione di alimentazione 5-36 V
Corrente di uscita (per canale) 5 A
Corrente di picco (per canale) 20 A
Guida sulla frequenza PWM ~1 kHz
Soglie logiche di ingresso Alto: > 3 V, Basso: < 1 V
Caduta di tensione / RDS(on)/ saturazione 10-16 mΩ
Limiti termici Fino a 85°C
Pacco Modulo PCB standard
Note / varianti Compatibile con i PLC

  • Assicurati di avere un adeguato dissipatore di calore per correnti superiori a 5A.
  • Controlla le tensioni nominali prima di collegare i carichi.
  • Utilizzare segnali PWM per il controllo della velocità o dell'intensità.
  • Essere consapevoli dei limiti termici per prevenire surriscaldamenti.
  • Controlla due volte i cavi per prevenire cortocircuiti.

Istruzioni per il cablaggio

YNMOS-4: Arduino Wiring with an LED Strip
YNMOS-4: Cablaggio Arduino con striscia LED — YNMOS-4: Arduino Wiring with an LED Strip
robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6

Per cablare il modulo YYNMOS-4, inizia collegando l'alimentatore. Collega il terminale positivo della tua fonte di alimentazione aDC+terminale sul modulo e il terminale negativo alDC-terminale. Ogni carico che desideri controllare si collegherà a una delle coppie di uscita. Ad esempio, collega il positivo del tuo carico al rispettivo terminale di uscita e il negativo a terra.

robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6

Per i segnali di controllo, collega i pin abilitati PWM della tua Arduino ai pin di ingresso corrispondenti del modulo YYNMOS-4. Ad esempio, se stai utilizzando i pin 3, 5, 6 e 9 sull'Arduino, collegali agli ingressi PWM del modulo. Assicurati che la massa dell'Arduino sia collegata anche alla massa del modulo YYNMOS-4 per mantenere un punto di riferimento comune.

Esempi di codice e guida passo passo

Il seguente frammento di codice dimostra come definire i pin necessari e controllare i motori o i LED utilizzando segnali PWM. La variabilemotorè un array che contiene i numeri dei pin per un facile riferimento.


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};

In questo estratto, definiamo quattro pin PWM per controllare ciascun motore o LED. L'arraymotorci consente di fare riferimento a questi pin in modo semplice in seguito nel codice.

Illoop()la funzione mostra come attivare i motori a diverse velocità:


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
}

Questo segmento di codice attiva il motore 1 al 75% della velocità per 4 secondi, poi lo ferma per 3 secondi. Regolare la velocità e il tempo consente un controllo flessibile dei carichi.

Per il codice completo, si prega di fare riferimento al programma completo caricato sotto l'articolo.

Dimostrazione / Cosa Aspettarsi

Una volta completato il cablaggio e caricato il codice sul tuo Arduino, dovresti osservare i motori o i LED rispondere ai segnali PWM. I motori inizieranno alla velocità definita e possono essere fermati o regolati dinamicamente. Se noti problemi, controlla la polarità invertita o il cablaggio errato, poiché sono errori comuni (nel video alle 12:30).

Timestamp video

  • 00:00 Inizio
  • 00:58 Spiegazione dell'hardware
  • 07:53 Spiegazione del cablaggio
  • 10:13 Codice Arduino per YYNMOS-4 Spiegato
  • 14:51 Dimostrazione senza Arduino
  • 16:32 Dimostrazione con Arduino

Immagini

YNMOS-4: pronto
YNMOS-4: pronto
YNMOS-4: con Arduino 1
YNMOS-4: con Arduino 1
YNMOS-4: con Arduino 2
YNMOS-4: con Arduino 2
YNMOS-4: Dettaglio del cablaggio Arduino
YNMOS-4: Dettaglio del cablaggio Arduino
YNMOS-4: Cablaggio Arduino con striscia LED
YNMOS-4: Cablaggio Arduino con striscia 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
Lingua: 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)

Cose di cui potresti avere bisogno

File📁

Nessun file disponibile.