Search Code

Projekt: RJMD-R2101 H-Bridge MOSFET ovládač motora

Projekt: RJMD-R2101 H-Bridge MOSFET ovládač motora

V tomto tutoriále preskúmame, ako ovládať DC motor pomocou H-Bridge MOSFET ovládača RJMD-R2101. Tento projekt predvedie, ako efektívne využiť MOSFETy IRFZ44N spolu s ovládačmi hradiel IR2101 na ovládanie rýchlosti a smeru motora. Na konci tejto príručky budete mať funkčné nastavenie ovládania motora, ktoré dokáže plynulo zrýchliť, brzdiť a zastaviť motor.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

Ako budeme pokračovať, pokryjeme potrebné hardvérové komponenty, pokyny na zapojenie a príklady kódu, aby sme objasnili, ako všetko spolu funguje. Pre vizuálnejšie zobrazenie odporúčam pozrieť si priložené video (vo videu o 02:15).

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

Vysvetlenie hardvéru

Hlavnými komponentmi v tomto projekte sú ovládač IR2101 a MOSFETy IRFZ44N. IR2101 je vysokorýchlostný ovládač navrhnutý na ovládanie N-kanálových MOSFETov v polovodičovej konfigurácii. Umožňuje efektívne prepínanie a kontrolu MOSFETov, čo umožňuje motoru bežať hladko.

MOSFETy IRFZ44N fungujú ako spínacie prvky, ktoré riadia výkon dodávaný do motora. Keď sú aktivované IR2101, tieto MOSFETy dokážu zvládnuť vysoké prúdy, čím poskytujú potrebný výkon na pohon motora. Spoločne tieto komponenty umožňujú presnú kontrolu nad smerom a rýchlosťou motora.

Technické údaje

VýrobcaMedzinárodný usmerňovač
Číslo dieluIRFZ44N
Logika/IO napätie10 V (VGS)
Napájacie napätie55 V (VDS)
Výstupný prúd (na kanál)49 A (max)
Špičkový prúd (na kanál)120 A (max)
Pokyny pre PWM frekvenciuaž 100 kHz
Vstupné logické prahy2,0 V (VGS(th))
Pokles napätia / RDS(on)/ saturácia0,025 Ω (max)
Tepelné limity175 °C (max)
BalíkTO-220
Poznámky / variantyBežne používané v konfiguráciách H-Bridge

  • Zabezpečte správne chladenie MOSFET-ov, aby ste predišli prehriatiu.
  • Použite PWM na riadenie rýchlosti na dosiahnutie plynulej prevádzky motora.
  • Overte, že napätie napájania nepresahuje hodnoty MOSFET.
  • Zabezpečte správnu polaritu pri zapájaní motora, aby ste predišli poškodeniu.
  • Použite oddeľovacie kondenzátory blízko napájania na stabilizáciu napätia.

Inštrukcie na zapojenie

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

Na zapojenie motorového ovládača RJMD-R2101 začnite pripojením napájania. Pripojte pin VCC ovládača k 5V napájaciemu zdroju. Pin GND by mal byť pripojený k zemi napájacieho zdroja. Ďalej pripojte ovládacie piny: PWM signál pre prvý MOSFET by mal ísť na pinPWM1_HIN1_PIN(pin 9), a povolňovací pin pre prvý MOSFET by mal byť pripojený kEN1_LIN1_PIN(pin 8). Pre druhý MOSFET pripojte PWM signál kPWM2_HIN2_PIN(pin 3) a povolovací pin naEN2_LIN2_PIN(pin 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

Uistite sa, že pripojíte svorky motora k príslušným výstupom H-Bridge. Ak používate Arduino, pripojte PWM piny k určeným pinom na doske Arduino. Napríklad, pripojtePWM1_HIN1_PINna pin 9,EN1_LIN1_PINna pin 8 a tak ďalej. Toto nastavenie vám umožní efektívne ovládať motor.

Príklady kódu a návod

Kódová sekcia obsahuje funkcie na ovládanie rýchlosti a smeru motora pomocou definovaných pinov. Nižšie je úryvok z náčrtu ovládania motora:

const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET

V tejto časti definujeme piny používané na ovládanie prvého MOSFETu.PWM1_HIN1_PINsa používa na kontrolu rýchlosti, zatiaľ čoEN1_LIN1_PINpovolí ovládač motora.

void Motor(boolean direction, int speed=0) {
    int speedPWM = map(speed, 0, 100, 0, 255);
    // Control motor direction and speed here
}

Táto funkcia prijíma adirectionparameter na určenie, či by sa motor mal otáčať v smere hodinových ručičiek alebo proti smeru hodinových ručičiek. Thespeedparameter je mapovaný na PWM hodnotu, čo umožňuje plynulú kontrolu nad rýchlosťou motora.

void stop() {
    digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}

ThestopFunkcia vypne motor nastavením povoleného pinu na nízku úroveň, čím efektívne zastaví akýkoľvek prúd prechádzajúci motorom. To zabezpečuje rýchle zastavenie bez poškodenia komponentov.

Pre úplný kód sa prosím odvolajte na kompletný program načítaný pod článkom.

Demonštrácia / Čo očakávať

Keď je nastavenie dokončené, mali by ste pozorovať motor reagujúci na príkazy zaslané z Arduina. Motor sa bude otáčať v určenom smere a môžete upraviť rýchlosť pomocou PWM signálov. Bežné problémy, na ktoré si treba dávať pozor, zahŕňajú obrátené polaritné pripojenia, ktoré môžu spôsobiť, že motor bude bežať v opačnom smere, a voľné vstupy, ktoré môžu viesť k nepravidelnému správaniu.

Počas testovania si môžete všimnúť, že sa rýchlosť motora mení na základe odoslaných hodnôt PWM. Uistite sa, že všetky pripojenia sú bezpečné, aby sa predišlo prerušením v prúde energie, čo by mohlo ovplyvniť výkon (vo videu o 05:45).

Časové pečiatky videa

  • 00:00- Úvod do projektu
  • 02:15- Prehľad hardvérových komponentov
  • 05:45- Demonštrácia motorickej kontroly
  • 08:30- Prezentácia kódu a vysvetlenie

Images

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
Language: C++
/*
 * IR2101 Schéma ovládania motora
 * Ovláda DC motor s rýchlosťou, brzdou a zastavením
 * Mosfety IRF44ZN použité pre vysokú a nízku stranu.
 * Ovládač IR2101 použitý na ovládanie MOSFETov.
 * Môžete získať kód, gerber súbor pre PCB na výrobu a schému zapojenia
 * z http://robojax.com/RJT390
 * 
 * napísal Ahmad Shamshiri 19. novembra 2024
 * www.Robojax.com https://youTube.com/@robojax
 */
const int PWM1_HIN1_PIN= 9; // musí to byť pinta s ~
const int EN1_LIN1_PIN= 8;

const int PWM2_HIN2_PIN= 3; // musí to byť pinta s ~
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); // v CW pri 50% rýchlosti
  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);
  }

}




Resources & references

Files📁

Gerber files