Cerca codice

Progetto: RJMD-R2101 Driver per Motore MOSFET H-Bridge

Progetto: RJMD-R2101 Driver per Motore MOSFET H-Bridge

In questo tutorial, esploreremo come controllare un motore DC utilizzando il driver per motori MOSFET H-Bridge RJMD-R2101. Questo progetto dimostrerà come utilizzare efficacemente i MOSFET IRFZ44N insieme ai driver di gate IR2101 per controllare la velocità e la direzione del motore. Alla fine di questa guida, avrai un setup di controllo del motore funzionante che può accelerare, frenare e fermare il motore in modo fluido.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

Man mano che procediamo, tratteremo i componenti hardware necessari, le istruzioni di cablaggio e frammenti di codice di esempio per chiarire come tutto funzioni insieme. Per una rappresentazione più visiva, consiglio di guardare il video associato (nel video a :15).

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

Hardware Spiegato

I componenti principali di questo progetto sono il driver di gate IR2101 e i MOSFET IRFZ44N. L'IR2101 è un driver ad alta velocità progettato per pilotare MOSFET N-channel in una configurazione a mezzo ponte. Consente un'efficiente commutazione e controllo dei MOSFET, permettendo al motore di funzionare senza intoppi.

I MOSFET IRFZ44N fungono da elementi di commutazione che controllano la potenza fornita al motore. Quando attivati dall'IR2101, questi MOSFET possono gestire correnti elevate, fornendo la potenza necessaria per azionare il motore. Insieme, questi componenti consentono un controllo preciso sulla direzione e sulla velocità del motore.

Dettagli della scheda tecnica

ProduttoreInternational Rectifier
Numero di parteIRFZ44N
Tensione logica/IO10 V (VGS)
Tensione di alimentazione55 V (VDS)
Corrente di uscita (per canale)49 A (max)
Corrente di picco (per canale)120 A (max)
Linee guida sulla frequenza PWMfino a 100 kHz
Soglie logiche di ingresso2,0 V (VGS(th))
Caduta di tensione / RDS(on)/ saturazione0,025 Ω (max)
Limiti termici175 °C (max)
PacchettoTO-220
Note / variantiComunemente usato nelle configurazioni H-Bridge

  • Assicurati di avere un adeguato dissipatore di calore per i MOSFET per prevenire il surriscaldamento.
  • Utilizza il PWM per il controllo della velocità per ottenere un funzionamento fluido del motore.
  • Verifica che la tensione di alimentazione non superi le specifiche del MOSFET.
  • Assicurati di avere la polarità corretta quando colleghi il motore per evitare danni.
  • Utilizzare condensatori di disaccoppiamento vicino all'alimentazione per stabilizzare la tensione.

Istruzioni di cablaggio

Arduino wiring for H-bridge IR2101 with IRFZ44N
Arduino wiring for H-bridge IR2101 with IRFZ44N

Per cablare il driver del motore RJMD-R2101, inizia collegando l'alimentazione. Collega il pin VCC del driver a una fonte di alimentazione da 5V. Il pin GND deve essere collegato a terra dell'alimentazione. Successivamente, collega i pin di controllo: il segnale PWM per il primo MOSFET deve andare al pinPWM1_HIN1_PIN(pin 9), e il pin di abilitazione per il primo MOSFET dovrebbe collegarsi aEN1_LIN1_PIN(pin 8). Per il secondo MOSFET, collegare il segnale PWM aPWM2_HIN2_PIN(pin 3) e il pin di abilitazione aEN2_LIN2_PIN(pin 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

Assicurati di collegare i terminali del motore alle uscite appropriate dell'H-Bridge. Se stai usando Arduino, collega i pin PWM ai pin designati sulla scheda Arduino. Ad esempio, collegaPWM1_HIN1_PINa pin 9,EN1_LIN1_PINa pin 8, e così via. Questa configurazione ti permetterà di controllare il motore in modo efficace.

Esempi di codice e guida passo passo

La sezione del codice include funzioni per controllare la velocità e la direzione del motore utilizzando i pin definiti. Di seguito è riportato un estratto dallo sketch di controllo del motore:

const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET

In questa parte, definiamo i pin utilizzati per controllare il primo MOSFET. IlPWM1_HIN1_PINviene utilizzato per il controllo della velocità, mentre ilEN1_LIN1_PINabilita il driver del motore.

void Motor(boolean direction, int speed=0) {
    int speedPWM = map(speed, 0, 100, 0, 255);
    // Control motor direction and speed here
}

Questa funzione accetta undirectionparametro per determinare se il motore deve ruotare in senso orario o antiorario. Ilspeedil parametro è mappato a un valore PWM, consentendo un controllo fluido sulla velocità del motore.

void stop() {
    digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}

IlstopLa funzione disabilita il motore impostando il pin di abilitazione su basso, fermando efficacemente qualsiasi flusso di corrente attraverso il motore. Questo garantisce un arresto rapido senza danneggiare i componenti.

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

Dimostrazione / Cosa Aspettarsi

Quando la configurazione è completa, dovresti osservare il motore che risponde ai comandi inviati dall'Arduino. Il motore ruoterà nella direzione specificata e puoi regolare la velocità utilizzando segnali PWM. Problemi comuni da tenere d'occhio includono connessioni con polarità invertita, che potrebbero far funzionare il motore nella direzione opposta, e ingressi flottanti che potrebbero portare a comportamenti erratici.

Durante i test, potresti anche notare che la velocità del motore cambia in base ai valori PWM inviati. Assicurati che tutte le connessioni siano sicure per evitare interruzioni nel flusso di energia, che potrebbero influenzare le prestazioni (nel video alle 05:45).

Timestamp video

  • 00:00- Introduzione al progetto
  • 02:15- Panoramica dei componenti hardware
  • 05:45- Dimostrazione del controllo motorio
  • 08:30- Spiegazione e walkthrough del codice

Immagini

RJMD-R2101 Driver per Motori a MOSFET H-Bridge 0
RJMD-R2101 Driver per Motori a MOSFET H-Bridge 0
RJMD-R2101 Driver per Motori MOSFET H-Bridge 1
RJMD-R2101 Driver per Motori MOSFET H-Bridge 1
RJMD-R2101 Driver per motore MOSFET H-Bridge 2
RJMD-R2101 Driver per motore MOSFET H-Bridge 2
RJMD-R2101 Driver per motore MOSFET a ponte H 3
RJMD-R2101 Driver per motore MOSFET a ponte H 3
RJMD-R2101 Driver per Motore MOSFET H-Bridge 4
RJMD-R2101 Driver per Motore MOSFET H-Bridge 4
RJMD-R2101 Driver per Motore MOSFET H-Bridge 5
RJMD-R2101 Driver per Motore MOSFET H-Bridge 5
Arduino wiring for H-bridge IR2101 with IRFZ44N
Arduino wiring for H-bridge IR2101 with IRFZ44N
796-Arduino H-Bridge code to control IRFZ44N Mosfets using IR2101 gate drivers
Lingua: C++
/*
 * Schema di controllo motore IR2101
 * Controlla il motore DC con velocità, freno e arresto
 * Mosfets IRF44ZN utilizzati per il lato alto e il lato basso.
 * Driver di gate IR2101 utilizzato per pilotare i MOSFET.
 * Puoi ottenere il codice, il file gerber per il PCB da produrre e il diagramma di cablaggio
 * da http://robojax.com/RJT390
 * 
 * scritto da Ahmad Shamshiri il 19 novembre 2024
 * www.Robojax.com https://youTube.com/@robojax
 */
const int PWM1_HIN1_PIN= 9; // deve essere una pinta con ~
const int EN1_LIN1_PIN= 8;

const int PWM2_HIN2_PIN= 3; // deve essere una pinta con ~
const int EN2_LIN2_PIN= 2;

const boolean CW =1;
const boolean CCW =0;


void Motor(boolean, int); // prototipo
void brake(); // prototipo
void stop(); // prototipo

void setup() {
  Serial.begin(9600);
  pinMode(PWM1_HIN1_PIN, OUTPUT);
  pinMode(EN1_LIN1_PIN, OUTPUT);

  pinMode(PWM2_HIN2_PIN, OUTPUT);
  pinMode(EN2_LIN2_PIN, OUTPUT);

}

void loop() {
  Motor(CW, 100);
  delay(5000);

  brake();
  delay(3000);

  Motor(CCW, 100);
  delay(5000);

  stop();
  delay(3000);

  Motor(CCW, 50); // in CW a 50% di velocità
  delay(5000);

  brake();
  delay(3000);
  for(int i=0; i<=100; i++)
  {
    Motor(CCW, i);
    delay(100);
  }
  delay(3000);
  for(int i=100; i>=0; i--)
  {
    Motor(CCW, i);
    delay(100);
  }
  brake();
  delay(3000);
}


void stop()
{
    Serial.println ("=== Stop");
    digitalWrite(EN1_LIN1_PIN, LOW);
    digitalWrite(PWM1_HIN1_PIN, LOW);
    digitalWrite(EN2_LIN2_PIN, LOW);
    digitalWrite(PWM2_HIN2_PIN, LOW);
}
void brake()
{
    Serial.println ("=== Brake");
    digitalWrite(PWM1_HIN1_PIN, HIGH);
    digitalWrite(EN1_LIN1_PIN, LOW);
    digitalWrite(PWM2_HIN2_PIN, HIGH);
    digitalWrite(EN2_LIN2_PIN, LOW);
}


void Motor(boolean direction, int speed=0)
{
  int speedPWM = map(speed, 0, 100, 0, 255);
  Serial.print("Speed: "); Serial.print (speedPWM);
  Serial.print("(");Serial.print(speed);Serial.print("%)");


  if(direction){
   Serial.print(" dir: ");Serial.println ("CW");

    analogWrite(PWM1_HIN1_PIN, speedPWM);
    digitalWrite(EN1_LIN1_PIN, HIGH);

    digitalWrite(PWM2_HIN2_PIN, LOW);
    digitalWrite(EN2_LIN2_PIN, LOW);

  }else{
    Serial.print(" dir: ");Serial.println ("CCW");

    digitalWrite(PWM1_HIN1_PIN, LOW);
    digitalWrite(EN1_LIN1_PIN, LOW);

    analogWrite(PWM2_HIN2_PIN, speedPWM);
    digitalWrite(EN2_LIN2_PIN, HIGH);
  }

}




File📁

Altri file

  • RJMD-R2101_H-Bridge_Motor_Driver_Manufacturing_Pack.zip
    Driver per motore MOSFET H-Bridge, tutti e tre i file di cui potresti aver bisogno per effettuare un ordine. Contiene: file Gerber zip dei livelli PCB, file Excel BMO e file delle coordinate.
    RJMD-R2101_3_file_to Order.zip 0.17 MB