Projekt: RJMD-R2101 H-brygga MOSFET motorstyrning
I den här handledningen kommer vi att utforska hur man kontrollerar en likströmsmotor med hjälp av RJMD-R2101 H-brygga MOSFET-motordrivaren. Det här projektet kommer att visa hur man effektivt använder IRFZ44N MOSFET:ar tillsammans med IR2101-gate-drivare för att kontrollera motorhastighet och riktning. I slutet av denna guide kommer du att ha en fungerande motorstyrningsuppsättning som kan accelerera, bromsa och stoppa motorn smidigt.

När vi går framåt kommer vi att täcka de nödvändiga hårdvarukomponenterna, kopplingsanvisningarna och exempel på kodsnuttar för att förtydliga hur allt fungerar tillsammans. För en mer visuell representation rekommenderar jag att titta på den tillhörande videon (i videon vid 02:15).

Hårdvara förklarad
De primära komponenterna i detta projekt är IR2101-gate-drivern och IRFZ44N MOSFET:erna. IR2101 är en högfartdrivare som är utformad för att driva N-kanals MOSFET:er i en halvbrokonfiguration. Den möjliggör effektiv switching och kontroll av MOSFET:erna, vilket gör att motorn kan köras smidigt.
IRFZ44N MOSFET:erna fungerar som switch-element som kontrollerar den kraft som levereras till motorn. När de aktiveras av IR2101 kan dessa MOSFET:er hantera höga strömmar och tillhandahålla den nödvändiga kraften för att driva motorn. Tillsammans möjliggör dessa komponenter precis kontroll över motorriktning och hastighet.
Datablad Detaljer
| Tillverkare | Internationella rektifierare |
|---|---|
| Delnummer | IRFZ44N |
| Logik/IO-spänning | 10 V (VGS) |
| Matningsspänning | 55 V (VDS) |
| Utgångsström (per kanal) | 49 A (max) |
| Spetsström (per kanal) | 120 A (max) |
| PWM-frekvens vägledning | upp till 100 kHz |
| Inmatningslogiktrösklar | 2,0 V (VGS(th)) |
| Spänningsfall / RDS(on)/ mättnad | 0,025 Ω (max) |
| Termiska gränser | 175 °C (max) |
| Paket | TO-220 |
| Anteckningar / varianter | Vanligt förekommande i H-bryggkonfigurationer |
- Säkerställ korrekt värmeavledning för MOSFET:arna för att förhindra överhettning.
- Använd PWM för hastighetskontroll för att uppnå en jämn motoroperation.
- Verifiera att strömförsörjningens spänning inte överstiger MOSFET:ens specifikationer.
- Säkerställ korrekt polaritet när du kopplar motorn för att undvika skador.
- Använd avkopplingskondensatorer nära strömförsörjningen för att stabilisera spänningen.
Kopplingsanvisningar

För att koppla RJMD-R2101 motorstyrningen, börja med att ansluta strömförsörjningen. Anslut VCC-pinnen på styrenheten till en 5V strömkälla. GND-pinnen ska kopplas till jord för strömförsörjningen. Nästa steg är att ansluta kontrollpinnarna: PWM-signalen för den första MOSFET:en ska gå till pin.PWM1_HIN1_PIN(som är pin 9), och aktiveringspinnen för den första MOSFET:en bör kopplas tillEN1_LIN1_PIN(pin 8). För den andra MOSFET:en, anslut PWM-signalen tillPWM2_HIN2_PIN(pin 3) och aktiveringspinnen tillEN2_LIN2_PIN(pin 2).

Se till att ansluta motorterminalerna till de lämpliga utgångarna på H-bryggan. Om du använder Arduino, anslut PWM-stiften till de angivna stiften på Arduino-kortet. Till exempel, anslutPWM1_HIN1_PINtill pin 9,EN1_LIN1_PINtill pin 8, och så vidare. Denna konfiguration kommer att göra det möjligt för dig att styra motorn effektivt.
Kodexempel och genomgång
Kodavsnittet inkluderar funktioner för att styra motorhastighet och riktning med hjälp av de definierade stiften. Nedan är ett utdrag från motorstyrningsskissen:
const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET
I den här delen definierar vi stiften som används för att styra den första MOSFET:en.PWM1_HIN1_PINanvänds för hastighetskontroll, medan denEN1_LIN1_PINaktiverar motorstyrningen.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
// Control motor direction and speed here
}
Denna funktion tar emot endirectionparameter för att avgöra om motorn ska snurra medurs eller moturs. Denspeedparametern är kopplad till ett PWM-värde, vilket möjliggör smidig kontroll över motorhastigheten.
void stop() {
digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}
Detstopfunktionen inaktiverar motorn genom att sätta enable-pinnen låg, vilket effektivt stoppar all strömflöde genom motorn. Detta säkerställer en snabb stopp utan att skada komponenterna.
För den fullständiga koden, vänligen hänvisa till det kompletta programmet som laddats nedanför artikeln.
Demonstration / Vad man kan förvänta sig
När installationen är klar bör du observera att motorn svarar på kommandona som skickas från Arduino. Motorn kommer att snurra i den angivna riktningen, och du kan justera hastigheten med hjälp av PWM-signaler. Vanliga problem att se upp för inkluderar omvänd polaritet på anslutningarna, vilket kan få motorn att gå i motsatt riktning, och svävande ingångar som kan leda till oförutsägbart beteende.
Under testning kan du också märka att motorns hastighet ändras baserat på de PWM-värden som skickas. Se till att alla anslutningar är säkra för att undvika avbrott i strömflödet, vilket kan påverka prestandan (i videon vid 05:45).
Videotidsstämplar
- 00:00- Introduktion till projektet
- 02:15- Översikt över hårdvarukomponenter
- 05:45- Demonstration av motorstyrning
- 08:30- Genomgång av koden och förklaring
Bilder
/*
* IR2101 Motorstyrningsskiss
* Styr DC-motor med hastighet, broms och stopp
* IRF44ZN Mosfets används för högsidan och lågsidan.
* IR2101 Gate-drivrutin används för att driva MOSFETs.
* du kan få koden, gerberfilen för PCB att producera och kopplingsschema
* från http://robojax.com/RJT390
*
* skriven av Ahmad Shamshiri den 19 november 2024
* www.Robojax.com https://youTube.com/@robojax
*/
const int PWM1_HIN1_PIN= 9; // måste vara en pint med ~
const int EN1_LIN1_PIN= 8;
const int PWM2_HIN2_PIN= 3; // måste vara en pint med ~
const int EN2_LIN2_PIN= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int); // prototyp
void brake(); // prototyp
void stop(); // prototyp
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); // i CW med 50% hastighet
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);
}
}
Resurser och referenser
-
Extern.
-
Extern.IR2101 Gate Driver Datasheetinfineon.com
-
Extern.IRFZ44N MOSFET datasheetinfineon.com
Filer📁
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