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.

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).

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
| Produttore | International Rectifier |
|---|---|
| Numero di parte | IRFZ44N |
| Tensione logica/IO | 10 V (VGS) |
| Tensione di alimentazione | 55 V (VDS) |
| Corrente di uscita (per canale) | 49 A (max) |
| Corrente di picco (per canale) | 120 A (max) |
| Linee guida sulla frequenza PWM | fino a 100 kHz |
| Soglie logiche di ingresso | 2,0 V (VGS(th)) |
| Caduta di tensione / RDS(on)/ saturazione | 0,025 Ω (max) |
| Limiti termici | 175 °C (max) |
| Pacchetto | TO-220 |
| Note / varianti | Comunemente 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

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).

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
/*
* 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);
}
}
Risorse e riferimenti
-
Esterno
-
EsternoScheda dati IRFZ44N MOSFETinfineon.com
-
EsternoScheda tecnica del driver di gate IR2101infineon.com
File📁
Altri file
-
RJMD-R2101_H-Bridge_Motor_Driver_Manufacturing_Pack.zipDriver 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.zip0.17 MB