Projekt: RJMD-R2101 H-Bridge MOSFET Sterownik Silnika
W tym samouczku zbadamy, jak kontrolować silnik prądu stałego za pomocą sterownika silnika MOSFET RJMD-R2101 H-Bridge. Ten projekt pokaże, jak skutecznie wykorzystać MOSFETy IRFZ44N w połączeniu z driverami bramek IR2101 do kontrolowania prędkości i kierunku silnika. Na koniec tego przewodnika będziesz miał funkcjonalny zestaw do kontroli silnika, który może przyspieszać, hamować i płynnie zatrzymywać silnik.

W miarę postępów omówimy niezbędne komponenty sprzętowe, instrukcje okablowania oraz przykładowe fragmenty kodu, aby wyjaśnić, jak wszystko działa razem. Dla lepszego zobrazowania polecam obejrzenie powiązanego wideo (w wideo o :15).

Wyjaśnienie sprzętu
Główne komponenty w tym projekcie to sterownik bramki IR2101 oraz MOSFET-y IRFZ44N. IR2101 to szybki sterownik zaprojektowany do sterowania MOSFET-ami N-channel w konfiguracji półmostka. Umożliwia efektywne przełączanie i kontrolę MOSFET-ów, co pozwala na płynne działanie silnika.
MOSFETy IRFZ44N działają jako elementy przełączające, które kontrolują moc dostarczaną do silnika. Po aktywacji przez IR2101, te MOSFETy mogą obsługiwać wysokie prądy, zapewniając niezbędną moc do napędzania silnika. Razem te komponenty umożliwiają precyzyjną kontrolę nad kierunkiem i prędkością silnika.
Szczegóły karty katalogowej
| Producent | International Rectifier |
|---|---|
| Numer części | IRFZ44N |
| Napięcie logiczne/IO | 10 V (VGS) |
| Napięcie zasilania | 55 V (VDS) |
| Prąd wyjściowy (na kanał) | 49 A (maks) |
| Prąd szczytowy (na kanał) | 120 A (max) |
| Wskazówki dotyczące częstotliwości PWM | do 100 kHz |
| Progi logiki wejściowej | 2,0 V (VGS(th)) |
| Spadek napięcia / RDS(on)/ nasycenie | 0,025 Ω (maks) |
| Limity termiczne | 175 °C (maks) |
| Pakiet | TO-220 |
| Notatki / warianty | Powszechnie stosowane w konfiguracjach mostka H |
- Zapewnij odpowiednie odprowadzanie ciepła dla MOSFET-ów, aby zapobiec przegrzewaniu.
- Użyj PWM do kontroli prędkości, aby uzyskać płynne działanie silnika.
- Sprawdź, czy napięcie zasilania nie przekracza parametrów MOSFET.
- Zapewnij prawidłową polaryzację podczas podłączania silnika, aby uniknąć uszkodzeń.
- Użyj kondensatorów odsprzęgających w pobliżu zasilacza, aby ustabilizować napięcie.
Instrukcje dotyczące okablowania

Aby podłączyć sterownik silnika RJMD-R2101, zacznij od podłączenia zasilania. Podłącz pin VCC sterownika do źródła zasilania 5V. Pin GND powinien być podłączony do masy zasilania. Następnie podłącz piny sterujące: sygnał PWM dla pierwszego MOSFET-a powinien iść do pinuPWM1_HIN1_PIN(pin 9), a pin włączający dla pierwszego MOSFET-a powinien być podłączony doEN1_LIN1_PIN(pin 8). Dla drugiego MOSFET-a podłącz sygnał PWM doPWM2_HIN2_PIN(pin 3) i pin włączający doEN2_LIN2_PIN(pin 2).

Upewnij się, że podłączasz zaciski silnika do odpowiednich wyjść mostka H. Jeśli używasz Arduino, podłącz piny PWM do wyznaczonych pinów na płytce Arduino. Na przykład, podłączPWM1_HIN1_PINdo pinu 9,EN1_LIN1_PINdo pinu 8 i tak dalej. Ta konfiguracja pozwoli Ci skutecznie kontrolować silnik.
Przykłady kodu i przewodnik
Sekcja kodu zawiera funkcje do kontrolowania prędkości i kierunku silnika przy użyciu zdefiniowanych pinów. Poniżej znajduje się fragment szkicu sterowania silnikiem:
const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET
W tej części definiujemy piny używane do sterowania pierwszym MOSFET-em.PWM1_HIN1_PINjest używane do kontroli prędkości, podczas gdyEN1_LIN1_PINwłącza sterownik silnika.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
// Control motor direction and speed here
}
Ta funkcja przyjmuje adirectionparametr do określenia, czy silnik powinien obracać się w prawo, czy w lewo. Tenspeedparametr jest mapowany na wartość PWM, co umożliwia płynne sterowanie prędkością silnika.
void stop() {
digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}
Thestopfunkcja wyłącza silnik, ustawiając pin włączający na niski poziom, co skutecznie zatrzymuje przepływ prądu przez silnik. Zapewnia to szybkie zatrzymanie bez uszkadzania komponentów.
Aby zobaczyć pełny kod, proszę odwołać się do kompletnego programu załadowanego poniżej artykułu.
Demonstracja / Czego się spodziewać
Gdy konfiguracja jest zakończona, powinieneś zaobserwować, że silnik reaguje na polecenia wysyłane z Arduino. Silnik będzie się obracał w określonym kierunku, a prędkość możesz regulować za pomocą sygnałów PWM. Do powszechnych problemów, na które należy zwrócić uwagę, należą odwrotne połączenia polaryzacji, które mogą spowodować, że silnik będzie działał w przeciwnym kierunku, oraz pływające wejścia, które mogą prowadzić do niestabilnego zachowania.
Podczas testowania możesz również zauważyć, że prędkość silnika zmienia się w zależności od wartości PWM. Upewnij się, że wszystkie połączenia są pewne, aby uniknąć przerw w przepływie energii, co może wpłynąć na wydajność (w wideo o 05:45).
Znaczniki czasowe wideo
- 00:00- Wprowadzenie do projektu
- 02:15- Przegląd komponentów sprzętowych
- 05:45- Demonstracja kontroli ruchu
- 08:30- Przegląd kodu i wyjaśnienie
Obrazy
/*
* IR2101 Szkic sterowania silnikiem
* Steruje silnikiem DC z prędkością, hamulcem i zatrzymaniem
* Mosfety IRF44ZN używane do strony wysokiej i niskiej.
* Sterownik bramki IR2101 używany do sterowania MOSFET-ami.
* Możesz uzyskać kod, plik gerber do produkcji PCB oraz schemat połączeń
* z http://robojax.com/RJT390
*
* napisane przez Ahmada Shamshiri 19 listopada 2024
* www.Robojax.com https://youTube.com/@robojax
*/
const int PWM1_HIN1_PIN= 9; // musi być pinta z ~
const int EN1_LIN1_PIN= 8;
const int PWM2_HIN2_PIN= 3; // musi być pinta z ~
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); // w CW przy prędkości 50%
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);
}
}
Zasoby i odniesienia
-
Zewnętrzny
-
ZewnętrznyIR2101 Gate Driver Datasheetinfineon.com
-
ZewnętrznyIRFZ44N MOSFET datasheetinfineon.com
Pliki📁
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