Proiect: RJMD-R2101 Driver de motor MOSFET H-Bridge
În acest tutorial, vom explora cum să controlăm un motor DC folosind driverul de motor RJMD-R2101 H-Bridge MOSFET. Acest proiect va demonstra cum să utilizăm eficient MOSFET-urile IRFZ44N împreună cu driverii de poartă IR2101 pentru a controla viteza și direcția motorului. La sfârșitul acestui ghid, veți avea un sistem de control al motorului funcțional care poate accelera, frâna și opri motorul în mod lin.

Pe măsură ce avansăm, vom acoperi componentele hardware necesare, instrucțiunile de cablare și exemple de cod pentru a clarifica modul în care totul funcționează împreună. Pentru o reprezentare mai vizuală, recomand să vizionați videoclipul asociat (în videoclip la :15).

Hardware explicat
Componentele principale ale acestui proiect sunt driverul de poartă IR2101 și MOSFET-urile IRFZ44N. IR2101 este un driver de mare viteză conceput pentru a conduce MOSFET-uri N-channel într-o configurație de jumătate de punte. Acesta permite comutarea eficientă și controlul MOSFET-urilor, permițând motorului să funcționeze lin.
MOSFET-urile IRFZ44N acționează ca elemente de comutare care controlează puterea livrată motorului. Când sunt activate de IR2101, aceste MOSFET-uri pot gestiona curenți mari, oferind puterea necesară pentru a alimenta motorul. Împreună, aceste componente permit un control precis asupra direcției și vitezei motorului.
Detalii fișă tehnică
| Producător | Rectificator Internațional |
|---|---|
| Număr de parte | IRFZ44N |
| Tensiune logică/IO | 10 V (VGS) |
| Tensiune de alimentare | 55 V (VDS) |
| Curent de ieșire (pe canal) | 49 A (max) |
| Curent de vârf (pe canal) | 120 A (max) |
| Ghid pentru frecvența PWM | până la 100 kHz |
| Praguri logici de intrare | 2.0 V (VGS(th)) |
| Cădere de tensiune / RDS(on)/ saturație | 0,025 Ω (max) |
| Limite termice | 175 °C (max) |
| Pachet | TO-220 |
| Note / variante | Utilizat frecvent în configurații H-Bridge |
- Asigurați-vă că există un sistem adecvat de disipare a căldurii pentru MOSFET-uri pentru a preveni supraîncălzirea.
- Utilizați PWM pentru controlul vitezei pentru a obține o funcționare lină a motorului.
- Verificați că tensiunea sursei de alimentare nu depășește valorile nominale ale MOSFET-ului.
- Asigurați-vă că polaritatea este corectă atunci când conectați motorul pentru a evita deteriorarea.
- Utilizați condensatoare de decuplare aproape de sursa de alimentare pentru a stabiliza tensiunea.
Instrucțiuni de cablare

Pentru a conecta driverul de motor RJMD-R2101, începe prin a conecta sursa de alimentare. Conectează pinul VCC al driverului la o sursă de alimentare de 5V. Pinul GND ar trebui să fie conectat la masa sursei de alimentare. Apoi, conectează pinii de control: semnalul PWM pentru primul MOSFET ar trebui să meargă la pin.PWM1_HIN1_PIN(pin 9), iar pinul de activare pentru primul MOSFET ar trebui să se conecteze laEN1_LIN1_PIN(pin 8). Pentru al doilea MOSFET, conectați semnalul PWM laPWM2_HIN2_PIN(pin 3) și pinul de activare pentruEN2_LIN2_PIN(pin 2).

Asigurați-vă că conectați terminalele motorului la ieșirile corespunzătoare ale H-Bridge-ului. Dacă folosiți Arduino, conectați pinurile PWM la pinurile desemnate de pe placa Arduino. De exemplu, conectațiPWM1_HIN1_PINla pin 9,EN1_LIN1_PINla pin 8 și așa mai departe. Această configurație îți va permite să controlezi motorul eficient.
Exemple de cod și ghiduri
Secțiunea de cod include funcții pentru a controla viteza și direcția motorului folosind pini definiți. Mai jos este un extras din schița de control al motorului:
const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET
În această parte, definim pini utilizați pentru controlul primului MOSFET.PWM1_HIN1_PINeste folosit pentru controlul vitezei, în timp ceEN1_LIN1_PINactivează driverul motorului.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
// Control motor direction and speed here
}
Această funcție primește undirectionparametru pentru a determina dacă motorul ar trebui să se rotească în sensul acelor de ceasornic sau în sens invers. Motorulspeedparametrul este mapat la o valoare PWM, permițând un control lin asupra vitezei motorului.
void stop() {
digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}
Thestopfuncția dezactivează motorul prin setarea pinului de activare la nivel scăzut, oprind efectiv orice flux de curent prin motor. Acest lucru asigură o oprire rapidă fără a deteriora componentele.
Pentru codul complet, vă rugăm să consultați programul complet încărcat mai jos de articol.
Demonstrație / Ce să aștepți
Când configurarea este completă, ar trebui să observați motorul răspunzând la comenzile trimise de Arduino. Motorul se va roti în direcția specificată, iar viteza poate fi ajustată folosind semnale PWM. Problemele comune de care să fiți atent includ conexiuni cu polaritate inversată, care pot face ca motorul să funcționeze în direcția opusă, și intrări flotante care ar putea duce la un comportament eratic.
În timpul testării, s-ar putea să observați că viteza motorului se schimbă în funcție de valorile PWM trimise. Asigurați-vă că toate conexiunile sunt sigure pentru a evita întreruperile în fluxul de energie, care ar putea afecta performanța (în video la 05:45).
Marcaje temporal video
- 00:00- Introducere în proiect
- 02:15- Prezentare generală a componentelor hardware
- 05:45- Demonstrarea controlului motor
- 08:30- Prezentare și explicație a codului
Imagini
/*
* Schita de control al motorului IR2101
* Controlează motorul DC cu viteză, frână și oprire
* Mosfeturile IRF44ZN sunt utilizate pentru partea superioară și partea inferioară.
* Driverul de poartă IR2101 este folosit pentru a conduce MOSFET-urile.
* poți obține codul, fișierul gerber pentru PCB pentru a produce și diagrama de cablare
* de la http://robojax.com/RJT390
*
* scris de Ahmad Shamshiri pe 19 noiembrie 2024
* www.Robojax.com https://youTube.com/@robojax
*/
const int PWM1_HIN1_PIN= 9; // trebuie să fie o halbă cu ~
const int EN1_LIN1_PIN= 8;
const int PWM2_HIN2_PIN= 3; // trebuie să fie o halbă cu ~
const int EN2_LIN2_PIN= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int); // prototip
void brake(); // prototip
void stop(); // prototip
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); // în CW la 50% viteză
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);
}
}
Resurse și referințe
-
Extern
-
ExternIR2101 Gate Driver Datasheetinfineon.com
-
ExternIRFZ44N MOSFET datasheetinfineon.com
Fișiere📁
Gerber files
-
RJMD-R2101_H-Bridge_Motor_Driver_Manufacturing_Pack.zipH-Bridge MOSFET Motor Driver all three files that you may need to place order. Contains: PCB Layers Gerber zip, BMO excel file and coordinate file
RJMD-R2101_3_file_to Order.zip0.17 MB