Search Code

Projekt: RJMD-R2101 H-Bridge MOSFET Sterownik Silnika

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.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

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

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

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

ProducentInternational Rectifier
Numer częściIRFZ44N
Napięcie logiczne/IO10 V (VGS)
Napięcie zasilania55 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 PWMdo 100 kHz
Progi logiki wejściowej2,0 V (VGS(th))
Spadek napięcia / RDS(on)/ nasycenie0,025 Ω (maks)
Limity termiczne175 °C (maks)
PakietTO-220
Notatki / wariantyPowszechnie 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

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

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

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

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

RJMD-R2101 H-Bridge MOSFET Motor Driver 0
RJMD-R2101 H-Bridge MOSFET Motor Driver 0
RJMD-R2101 H-Bridge MOSFET Motor Driver 1
RJMD-R2101 H-Bridge MOSFET Motor Driver 1
RJMD-R2101 H-Bridge MOSFET Motor Driver 2
RJMD-R2101 H-Bridge MOSFET Motor Driver 2
RJMD-R2101 H-Bridge MOSFET Motor Driver 3
RJMD-R2101 H-Bridge MOSFET Motor Driver 3
RJMD-R2101 H-Bridge MOSFET Motor Driver 4
RJMD-R2101 H-Bridge MOSFET Motor Driver 4
RJMD-R2101 H-Bridge MOSFET Motor Driver 5
RJMD-R2101 H-Bridge MOSFET Motor Driver 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
Język: C++
/*
 * 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

Pliki📁

Gerber files